求教一下有关SD卡的教程

2019-07-20 19:58发布

用的原子哥的SD卡例程中的代码
调用SD_Initialize函数的时候,发现卡在这个循环中
do
{
        r1=SD_SendCmd(CMD0,0,0x95);
}while((r1!=0X01) && retry--);


具体往函数中追踪发现卡在
if(SD_Select())return 0XFF;//片选失效
这一步里

想问一下这是因为硬件原因吗。。
片选的引脚是推挽输出初始化过了的..不知道为什么会片选失效..
求助

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 00:13
Monoposto 发表于 2016-9-12 21:44
网上查了说8G的TF卡不支持SPI读写?是这样吗,我用的是金士顿的8GTF卡..

SPI对TF卡支持就不好。
不是8G,所有 的TF卡,都很难识别(实测!!)
Monoposto
2楼-- · 2019-07-21 03:42
再具体说似乎是一直卡在SD_WaitReady()函数中..
Monoposto
3楼-- · 2019-07-21 06:09
 精彩回答 2  元偷偷看……
Monoposto
4楼-- · 2019-07-21 07:10
u8 SD_WaitReady(void)
{
        u32 t=0;
        LEDWireless_On;
        do
        {
                if(SD_SPI_ReadWriteByte(0XFF)==0XFF)return 0;//OK
                else if(SD_SPI_ReadWriteByte(0xFF) == 0x00)        LEDDataTransfer_On;
                t++;                         
        }while(t<0XFFFFFF);
        return 1;
}
这个时候两个LED都是亮的


u8 SD_WaitReady(void)
{
        u32 t=0;
        LEDWireless_On;
        do
        {
                if(SD_SPI_ReadWriteByte(0XFF)==0XFF)return 0;//OK
                t++;                         
        }while(t<0XFFFFFF);
        LEDDataTransfer_On;
        return 1;
}
这样就只亮一个灯
Monoposto
5楼-- · 2019-07-21 07:12
 精彩回答 2  元偷偷看……
Monoposto
6楼-- · 2019-07-21 09:38
正点原子 发表于 2016-9-12 21:04
SPI对TF卡支持就不好。
不是8G,所有 的TF卡,都很难识别(实测!!)

怪不得。。
重新买了个2G的TF卡仍然是卡在那个地方。。
所以最好的解决方案是换SDIO咯?
淘宝上的那些SPI的TF卡模块是不是也不好用..

一周热门 更多>