|
本帖最后由 浮云残雪 于 2014-1-9 13:38 编辑
目标 :读取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
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|