yuhui 发表于 2010-9-13 12:40:59

SD卡 CMD7的问题

最近闲来无事,把MINI2440翻出来玩了玩,想研究一下SD卡。

根据SD2.0 SPEC驱动了一把,用的是SDI接口,4 DATA,发现初始化到 CMD7 时卡住了。

过程中第一次发CMD3的时候卡回的 RCA=1 但这个时候卡的状态依然是 Identification ,于是我又发了一次CMD3,卡返回的 RCA = 2,卡的状态就进入Stand-by

CMD7是R1B的response,第一次发CMD7,检查response,发现依然处于stand-by状态下,继续发CMD7,就是连续的超时,没有response,这时候发CMD0复位倒是可以的。我在想是不是应为是R1B的response,所以要检查一下busy,根据SPEC,busy是从DAT线上反馈的,难道是发CMD7之后还需要连续检查是否busy的机制?

第一次研究SD卡,知道的大大帮忙分析分析。

yuhui 发表于 2010-9-13 13:40:38

问题解决。
发CMD7回的response可以不管,继续发CMD55+ACMD6设置DAT总线宽度,此时CMD55回的response下的状态已经是Transfer-state了。
不知道是卡个体的原因还是对SPEC的那个流程图的误解,反正流程图上画的是 Stand-by-State ----> CMD7 ----> Transfer-State。
改天早找其他的卡试试。
还有就是该SD卡的 Manufacturer ID = 0,OEM/Application ID = 0, Product name = APPSD....
难道又是假冒伪劣的KINGSTON!!!

znprojectcn 发表于 2010-9-21 16:26:11

我也遇到和你一样的问题,但是这样通过后所有的命令都无法进入data状态,而且按手册上说的也无法回到Stand-by-State

simplorer 发表于 2011-11-1 10:21:38

我也遇到这个问题,示例程序上的做法可行,但是我自己的程序无论等待多长时间一直是stdby状态,没找到原因。

ICantoo 发表于 2012-11-29 13:00:55

你好,我也在调试这个SD卡的SD模式,现在碰到了和你一样的问题,请问你是怎样解决的?发送完CMD7之后再发个CMD0吗?谢谢了

dboyzju 发表于 2013-1-17 15:38:37

我最近也在学,你第一次发完CMD7后应该用个循环不断查询卡的状态(用CMD13,返回状态)一直到进入Transfer State,另外现在进展如何?我也遇到了一些问题,希望能帮我解答一下,我的问题是:
工作在SD模式下,之前发送ACMD41就是CMD55+ACMD41返回都正确,后来进入了Transfer State想发送ACMD6设置为4-bit总线,但是发送完CMD55后返回0x00000920,表示Transfer State,期待ACMD,再发送ACMD6之后返回仍为0x00000920,还期待ACMD?有没有人做过SD卡裸机驱动,帮忙分析一下,弄了好多天了,进展缓慢,刚有点进展又卡在这里了。。。忘了说了,我的卡是金士顿的4G SDHC卡,Class4的。
页: [1]
查看完整版本: SD卡 CMD7的问题