初级会员

- 积分
- 136
- 金钱
- 136
- 注册时间
- 2016-12-24
- 在线时间
- 29 小时
|
5金钱
在对SD卡进行写的过程,对于单块写的过程应该是CMD7-R1-CMD16-R1-CMD24-R1-设置SDIO-发送数据-读SD_STA-等待programming状态结束,对于单块读和多块读例程上给的代码都有一段:
errorstatus=IsCardProgramming(&cardstate);
while((errorstatus==SD_OK)&&((cardstate==SD_CARD_PROGRAMMING)||(cardstate==SD_CARD_RECEIVING)))
{
errorstatus=IsCardProgramming(&cardstate);
}
为什么我读取的cardstate值一直就是“7”呢?换句话说,SD卡在写完数据后就一直卡在了programming状态,看了下2.0的协议规范,上面说在programming状态下发送读命令是无效的,发送带参数命令也是无效的,然后就有点纳闷了,按程序的意思是,programming状态会自动跳变为其他状态才是啊?这到底是我卡的问题还是其他什么我忽略掉了呢?同时卡读的程序是没有问题的,但是在写完之后接着读就不可以了,这也间接的证明了卡在运行完写命令之后一直卡在了programming状态过不去,还有就是如果说进入到了programming中应该是前面都操作完了而且是正常的才是啊,那卡中数据应该有变化了呀,但为什么我读出来的数据没有任何变化呢?有谁知道用什么办法可以退出programming状态呢(协议上讲CMDD7可以从programming状态中跳到Disconnect状态,可是我试过的情况是命令响应超时!是超时!是协议在逗我吗?!)2.0的协议是英文版的,看得的确不耐烦了,各种跳的看,估计是漏了什么重要的东西,恳请大神们赐教
最后,请教下有谁有修复SD/TF卡的软件,好像在写的过程中把卡写坏了,电脑认不出来了(大小还看得到),插上电脑就卡死,郁闷了。
|
|