硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2284|回复: 8
收起左侧

[RL-FlashFS] nand驱动程序跑飞问题求助

[复制链接]

2

主题

12

回帖

18

积分

新手上路

积分
18
发表于 2019-8-16 15:26:28 | 显示全部楼层 |阅读模式
   420:   /* Send Read ID command sequence */   
0x08004114 2002      MOVS          r0,#0x02
0x08004116 F8820021  STRB          r0,[r2,#0x21]
   421:   *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA))  = NAND_CMD_READID;
0x0800411A 2090      MOVS          r0,#0x90
0x0800411C F4433480  ORR           r4,r3,#0x10000
0x08004120 7020      STRB          r0,[r4,#0x00]
   422:   *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00;
   423:  
   424:   /* Read the electronic signature from NAND flash */
   425: #ifdef FSMC_PCR2_PWID
0x08004122 2000      MOVS          r0,#0x00
0x08004124 F4433400  ORR           r4,r3,#0x20000

请问各位大牛,FSMC的访问,到STRB这条指令就跑飞了,大概是什么问题?
配置和程序框架都是用stm32CubeMX生成的,nand的地址 0x7000 0000 。

nand err2.jpg
nand err.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-8-16 16:42:57 | 显示全部楼层
方便的话,发下原理图和NAND的驱动代码
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2019-8-16 17:20:02 | 显示全部楼层
谢谢硬汉关注! 这是原理图。 软件就是用cubemx生成的,没有添加任何代码。只是测试驱动和硬件。

Schematic Prints.pdf

73.03 KB, 下载次数: 10

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-8-17 00:23:02 | 显示全部楼层
bondxie 发表于 2019-8-16 17:20
谢谢硬汉关注! 这是原理图。 软件就是用cubemx生成的,没有添加任何代码。只是测试驱动和硬件。

今天几个群友咨询了同样的问题,你看下是不是你的NAND命令地址,数据地址等搞错了
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2019-8-19 15:50:21 | 显示全部楼层
eric2013 发表于 2019-8-17 00:23
今天几个群友咨询了同样的问题,你看下是不是你的NAND命令地址,数据地址等搞错了

这是源代码,cube框架初始化后,复位nand,读取nandID,仿真时到FSMC操作就死机,地址都是cube自动生成的。为了防止硬件引起电源故障,我把flash芯片都取了。
nand err5.jpg

nand_hal_test.rar

19.57 MB, 下载次数: 3

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-8-20 09:00:37 | 显示全部楼层
先把这里面的时序参数改改,这个配置是无法运行的。

另外你当前仅配置了NCE3,那么操作的首地址是0x80000000,你确定下你的程序是不是
7777.jpg
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2019-8-20 10:56:48 | 显示全部楼层
eric2013 发表于 2019-8-20 09:00
先把这里面的时序参数改改,这个配置是无法运行的。

另外你当前仅配置了NCE3,那么操作的首地址是0x8000 ...

flash的参数暂时没用到,所以我刚开始没配置,仅调用了这两个函数。
后来我配置了这些参数,故障依旧。我觉得就算我参数错了,只是结果不对,怎么会影响程序运行呢?
HAL_NAND_Reset(&hnand1);
HAL_NAND_Read_ID(&hnand1,&NandId);

仿真时,复位可以通过,读ID的两条指令就出错了,有时候提示不能访问0x.........处,有时候卡住后闪退。
并且下次不能进入下载或调试状态,板子断电后都不行。 必须拉低boot0后重启,才能重新下载和仿真。

我使用的是NCE2, BANK2, 首地址是0x7000 0000
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-8-20 11:04:44 | 显示全部楼层
bondxie 发表于 2019-8-20 10:56
flash的参数暂时没用到,所以我刚开始没配置,仅调用了这两个函数。
后来我配置了这些参数,故障依旧。 ...

如果ID还没有读取成功的话,就是查询你的时序配置和硬件问题了。
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2019-12-27 08:57:13 | 显示全部楼层
这个项目停了一段时间, 最近重新检查了一遍驱动配置. 找到问题了, CMSIS的驱动是查询方式判忙, 只需使能管脚.
nand.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 00:34 , Processed in 0.234256 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表