我遇到一个EMMC读/写问题。我试图在Omap35x上编写一个EMMC驱动程序。初始化emmc卡和omap之后,卡进入tran状态。我的读写命令永远不会成功。以下是我所做的:
在完成上述步骤之后,我尝试发送命令CMD24 (MMCHS_CMD = 0x182A0002 MMCHS_ARG = 0x00000001和MMCHS_BLK = 0x00000200),Omap成功地输入MMCHS_STAT_BWR,然后发送512个字节的数据。我可以通过示波器观察到通过数据线发送的数据,但是当我轮询TC/DTO时,我收到了来自MMCHS_STAT的0x108111,它表示数据超时。我可以收到命令的响应0x900。
对于阅读,我将发送CMD17(MMCHS_CMD = 0x112A0012 MMCHS_ARG = 0x00000001和MMCHS_BLK = 0x00000200)。我还可以收到命令的响应0x900。Omap成功地进入了MMCHS_STAT_BRR,但我无法观察到通过数据线发送的任何数据。
请让我知道,如果你发现任何问题的步骤,我已经做了,或你有一个例子,使它发挥作用。
发布于 2014-12-08 01:27:54
你曾经尝试过以默认速度写/读吗?您可以跳过步骤9,不要在步骤10中将时钟更改为48 MHz,然后再试一次。
此外,在步骤9中,您的CMD6切换到高速模式的响应,READY_FOR_DATA的比特还没有准备好。我认为您可以添加一个CMD13,以确保eMMC是否为数据做好了准备。如果eMMC的容量大于2GB,则不需要在step10中发送CMD16。在默认情况下,高容量eMMC是扇区模式。
数据超时的限制值是多少?在我的实验中,一些eMMC在响应后发送超过8ms的第一次数据。
https://stackoverflow.com/questions/25898137
复制相似问题