初级会员

- 积分
- 87
- 金钱
- 87
- 注册时间
- 2013-8-3
- 在线时间
- 2 小时
|
5金钱
我看网上资料时发现这段话,对应板子上的程序有点不理解
一些命令的执行时间比NCR长,它们使用应答R1B(1个字节)。R1B同R1类似(有些命令只需要0或非0反馈,就用R1B,比如停止传输、擦除等命令),即为R1跟在忙标志后(在内部执行命令时DO保持低电平)。主控制器应等待命令执行完毕直到DO转为高电平(接收到0xFF)。每一个命令都有对应的响应长度,故发送命令函数要经过特殊的处
板子上关于CMD12的响应就是R1b,从程序上看,就是说先读一个字节,然后循环读,检测字节首位,一直等到首位为0,就认为当次读取的为响应值,时限内读不到则认为错误。
也就是说,在SD卡内部执行指令时,DO上的值应该是0xFF,直到内部执行完毕,返回响应值
问题来了,第一,资料里那段话 “即为R1跟在忙标志后”,这是什么意思?忙标志不是R1的0位吗,意思是要返回两个R1吗,第二个才是真R1吗?
第二个问题,“主控制器应等待命令执行完毕直到DO转为高电平(接收到0xFF)”这句话又怎么理解呢,是不是说,如果返回R1B,就需要先等待到0XFF,然后再等待响应值,是这个意思吗?
第三,这句话是单独指R1b还是R1也是这样?就是R1b之前一定有至少一个0XFF,还是R1和R1B之前都至少有一个0xFF
看了好多资料都没有提及到R1b的问题,越看越乱,求原子哥和各位高手们指点一二,感激不尽
还有一个小问题,SPI模式下除了CMD0需要CRC,其他指令不是都无所谓吗,我看板子上的程序好多CRC都是0x01,这个换成0xff没有关系吧 |
|