TF卡初始化失败

2019-07-14 13:12发布

TF卡为金士顿8G卡 SDHC。
使用STM32F103VCT6,SPI3驱动方式。CMD0和CMD8可以正常响应,接着发送CMD55,ACMD41,返回值均为0x01,如果循环发送,第二次CMD55没有应答,程序判断为0xFF。一直卡在这个地方....
代码如下:
retry = 0;
do
{
        r1 = SD_SendCommand(CMD55, 0, 0);
        if(r1!=0x01)
        {
                //第二次发送CDM55时,返回,debug发现r1为0xFF.
                return r1;
        }                                       
        r1 = SD_SendCommand(ACMD41, 0x40000000, 0);
        retry++;
        if(retry>200)
                return r1;  
}while((r1)!=0);


示波器看波形,第二次CMD55指令正常发出,CLK也正常。但没有应答数据。

有没有朋友遇到这种情况,请帮忙分析下,谢谢!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
f1070388065
1楼-- · 2019-07-14 16:13
 精彩回答 2  元偷偷看……
FRAN2016
2楼-- · 2019-07-14 16:35
亲爱的娜娜 发表于 2019-4-19 17:09
按照SD/TF卡的初始化套路,如果代码没有问题,那就检查下初始化时钟是不是太高,硬件电路接法是不是有问题,是不是卡的问题有没有换个卡试试。

感谢回复。
都查过了,换了张ADATA的卡,可以了。但原因还是不明。
FRAN2016
3楼-- · 2019-07-14 20:25
f1070388065 发表于 2019-4-19 17:26
换个卡试试!

感谢回复。
都查过了,换了张ADATA的卡,可以了。但原因还是不明。
60user58
4楼-- · 2019-07-15 01:17
FRAN2016 发表于 2019-4-19 17:47
感谢回复。
都查过了,换了张ADATA的卡,可以了。但原因还是不明。

我想不是每种SD卡都支持SPI模式,或者说有些SD卡控制器在SPI支持方面是有重大缺陷的,因为SD卡绝大部分情况下是使用SDIO接口的,很少有人使用SPI,嵌入式系统用的SD卡数量和消费电子用的SD卡数量不是一个数量级的呢,所以在SPI接口上的投入能省则省吧。
FRAN2016
5楼-- · 2019-07-15 05:49
60user58 发表于 2019-4-19 18:00
我想不是每种SD卡都支持SPI模式,或者说有些SD卡控制器在SPI支持方面是有重大缺陷的,因为SD卡绝大部分情况下是使用SDIO接口的,很少有人使用SPI,嵌入式系统用的SD卡数量和消费电子用的SD卡数量不是一个数量级的呢,所以在SPI接口上的投入能省则省吧。 ...

感觉不一定是不支持SPI,如果SPI的问题,复位和查询卡类型的指令,也不会响应吧?
可能是卡的指令由精简,对某些指令不支持?
wuerywds
6楼-- · 2019-07-15 09:59
 精彩回答 2  元偷偷看……

一周热门 更多>