Micro SD卡初始化 发CMD8返回0x01,接着处理四个字节,do{再发CMD55,返回0X01,发CMD41,返回错误,还是0X01}while()

2019-08-16 19:48发布

原子哥,遇到SD卡初始化过程中返回错误,不知道究竟怎么回事,我用的是micro SD.
错误现象:
 发CMD8返回0x01,接着处理四个字节,do{再发CMD55,返回0X01,发CMD41,返回错误,还是0X01}while(r1)
循环后一直返回错误,r1=0xff.
代码如下:
if(r1==0X01) { if(SD_SendCmd(CMD8,0x1AA,0x87)==1)//SD V2.0 { for(i=0;i<4;i++) buf=SD_SPI_ReadWriteByte(0XFF); //Get trailing return value of R7 resp if(buf[2]==0X01&&buf[3]==0XAA)//卡是否支持2.7~3.6V { retry=0XFFFE;//retry=0X01; do { r1=SD_SendCmd(CMD55,0,0X00); //发送CMD55 if(r1!=0x01)     {     return r1;     } r1=SD_SendCmd(CMD41,0x40000000,0X00);//发送CMD41 }while(r1&&retry--);
程序死在最后一个do{}while(r1&&retry--),r1返回值一直都是0xff.
麻烦大侠求指点啊!
 



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
ccx3564554
1楼-- · 2019-08-16 22:01

             今天终于初始化成功了,关于返回错误,主要是我的电源用的是低功耗模式,没有选通。后来选通后,一切OK.

原子哥的代码果然给力啊!

 

正点原子
2楼-- · 2019-08-17 00:47
回复【2楼】ccx3564554:
---------------------------------
恭喜,我只是提供参考代码,更多的是你自己的努力。
covanl
3楼-- · 2019-08-17 06:35
回复【2楼】ccx3564554:

                                         
             今天终于初始化成功了,关于返回错误,主要是我的电源用的是低功耗模式,没有选通。后来选通后,一切OK.
原子哥的代码果然给力啊!
 

---------------------------------
求代码共享!我也遇到了相同的问题。。低功耗没用选通是什么意思?806985385@qq.com
covanl
4楼-- · 2019-08-17 09:58
回复【3楼】正点原子:
-------------------------------
原子哥,求代码共享!我也遇到了相同的问题。发送CMD41无法接收到0x00。低功耗没用选通是什么意思?806985385@qq.com谢谢,万分感谢!!
正点原子
5楼-- · 2019-08-17 12:09
 精彩回答 2  元偷偷看……
covanl
6楼-- · 2019-08-17 17:23
回复【2楼】ccx3564554:
---------------------------------
你好,我PIC单片机通过SPI直接和SD卡连接的,然后发送ACMD41后就收不到真确返回值,直接收到的就是0XFF,说明SD卡没有选通了。不知道什么问题。

一周热门 更多>