我遇到了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,但我无法观察到通过数据线发送的任何数据。
如果您发现我已经完成的步骤有任何问题或者您有一个示例可以让它发挥作用,请告诉我。
答案 0 :(得分:0)
你有没有尝试以默认速度写/读? 您可以跳过步骤9.,不要在步骤10中将时钟更改为48 MHz。再试一次。
此外,您在步骤9中CMD6切换到高速模式的响应,READY_FOR_DATA位未就绪。我认为您可以添加CMD13以确保eMMC是否已准备好接收数据。 如果eMMC的容量超过2GB,则不需要在步骤10中发送CMD16。大容量eMMC默认为扇区模式。
您的数据超时限制值是多少?在我的实验中,一些eMMC在响应后发送超过8ms的第一个数据。