SD卡应答格式

2019-08-12 17:34发布

SD卡应答格式里有48位,为什么在接受应答数据的时候只有8位(比如00、01、05、FF),这8位具体是哪8位啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
shyinyang
1楼-- · 2019-08-12 21:54
不清楚
正点原子
2楼-- · 2019-08-13 00:15
 精彩回答 2  元偷偷看……
qiuzhi339
3楼-- · 2019-08-13 05:08
嗯,明白了。
还有就是我发送 CMD0、CMD8,这两个命令的应答都是正确的,CMD55+ACMD41 的应答却一直是 0x01(其中 CMD55 的应答是正确的),这说明 SD 卡在空闲状态吗?这种情况可能是什么原因,下面是发送 CMD55+ACMD41 的代码


while ( 0x00 != response )      
{
SD_CS_0;       //每次启动总线传输,片选引脚必须保持低电平  
SdCommand( 0x37, 0x000001AA, 0xFF );         //发送CMD55命令
response = SdResponse( );      //接收SD卡应答到response
SD_CS_1;      //总线传输结束,片选引脚置高
SdWrite( 0xff );                             //总线传输结束后,需要再给8个时钟 

if(0x01 != response)
{
                                      printf( "ACMD55 response is 0x%x ",response );
printf( "CMD55 response error " );  //通过串口1打印输出"CMD55 response error "  
}  

SD_CS_0;      //每次启动总线传输,片选引脚必须保持低电平
SdCommand( 0x29, 0x41000000, 0xFF );         //发送ACMD41命令
response = SdResponse( );      //接收SD卡应答到response
SD_CS_1;      //总线传输结束,片选引脚置高
SdWrite( 0xff );                             //总线传输结束后,需要再给8个时钟

i++;
if ( i>10000 )
{
printf( "ACMD41 response is 0x%x ",response );
printf( "ACMD41 response error " );
return 1;
}  
}
printf( "ACMD41 response is 0x%x ",response );
正点原子
4楼-- · 2019-08-13 10:10
回复【4楼】qiuzhi339:
---------------------------------
1,先用我们的代码测试.
2,如果不行,考虑卡兼容性问题.

SPI模式读取SD卡,总有那么一些卡无法成功使用,尤其是TF卡转大卡的.
qiuzhi339
5楼-- · 2019-08-13 13:34
你的代码已经试过了,也不行,我用的是2G金士顿SD卡
正点原子
6楼-- · 2019-08-13 18:57
那换卡.

一周热门 更多>