浮云残雪 发表于 2014-1-9 13:35:09

nand flash操作所遇到的有趣现象(读FLASH ID 信息)

目标                :读取FLASH的ID信息
采用的方式        :同步操作模式
目前实现        :读到了ID信息的BYTE0,即4FH。而BYTE1-BYTE4读不到。

操作流程:
进入BUS_IDLE,然后进入CMD_IN(发送90H),进入BUS_IDLE(等待tCAD),进入ADDR_IN(发送20H),再进入BUS_IDLE(等待tCAD),进入BUS_DRIVING,再进入DATA_OUT(等待接收ID数据),进入BUS_DRIVING(等待数据接收完成),进入BUS_IDLE。如此循环。

现象,现在只能读到ID信息的BYTE0, BYTE1-BYTE4读不到


说明:以FLASH_开头的信号均为与FLASH在硬件上直接相连的信号。命名均是以异步模式下micron的手册为准。WE_n信号在同步模式下为CLK信号(FPGA的工作时钟也是WE_n,并且是在WE_n的下降沿触发)。RE_n在同步下为W/R信号。在state_bus_idle状态下,给FLASH_DQ的数据(89H),没有任何意义。只是为了检测状态的跳转是否正确。因为这个时候FLASH处于BUS_IDLE模式。对FLASH_DQ的数据不做响应。
在上图中可以看到,先进入BUS_IDLE模式,等待tCAD后进入CMD_IN模式并发送命令90H给FLASH,然后进入BUS_IDLE模式,等待tCAD。

在BUS_IDLE模式下等待tCAD时间后,进入ADDR_IN模式并发送地址20H给FLASH。然后进入BUS_IDLE模式,等待tCAD时间

然后进入BUS_DRIVING模式,等待tWHR的时间后,进入DATA_OUT模式读取ID信息的5个BYTES

最终读出的数据只有ID信息的BYTE0   结果为4FH。数据正确。

完整的数据应该是 4FH 4EH 46H 49H XXH

guer 发表于 2014-1-9 13:44:12

楼主,小心ID不保啊O:-)

浮云残雪 发表于 2014-1-9 13:47:19

guer 发表于 2014-1-9 13:44
楼主,小心ID不保啊O:-)

什么意思?没明白。ID不是固化在FLASH内部的么。

guer 发表于 2014-1-9 13:48:51

{:titter:}{:titter:}{:titter:}重复发帖!

浮云残雪 发表于 2014-1-9 13:54:52

guer 发表于 2014-1-9 13:48
重复发帖!

哦。我是感觉这个问题会在FPGA和ARM上都会用到。所以就在这几个版块都发了一个帖子。
页: [1]
查看完整版本: nand flash操作所遇到的有趣现象(读FLASH ID 信息)