SD卡初始化问题u8 SD_WaitReady(void)

2019-08-12 17:27发布

使用原子的新版SD卡程序移植到stm32f103vc的板子上,在SD卡初始化中,等待卡准备好的函数中,利用串口查看,始终得到0X00,不能得到0xff,换了3种卡都不能得到0xff,移植原来挑卡那版程序初始化没有问题,请大虾帮我分析分析造成的原因吧,不胜感激。
//等待卡准备好
//返回值:0,准备好了;其他,错误代码
u8 SD_WaitReady(void)
{  
 u32 t=0;
 do
 {
  if(SD_SPI_ReadWriteByte(0XFF)==0XFF)return 0;//OK 此处SD_SPI_ReadWriteByte(0XFF)返回的值一直是0x00”
  t++;     
 }while(t<0XFFFFFF);//等待
 return 1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
hooddas
1楼-- · 2019-08-14 15:18
还是这段程序,用的开发板,插入SD卡和不插入SD卡SD_SPI_ReadWriteByte(0XFF);返回的数据都是0xff,并没有任何变化

 //等待卡准备好
//返回值:0,准备好了;其他,错误代码
u8 SD_WaitReady(void)
{  
 u32 t=0;
 u8 temp;
 do
 {
  temp = SD_SPI_ReadWriteByte(0XFF);
  USART1->DR = temp;
  while((USART1->SR & 0X40) == 0);//等待发送结束
  if(temp==0XFF)return 0;//OK
  t++;     
 }while(t<0XFFFFFF);//等待
 return 1;
}
正点原子
2楼-- · 2019-08-14 16:20
 精彩回答 2  元偷偷看……
hooddas
3楼-- · 2019-08-14 20:38
回复【15楼】正点原子:

---------------------------------
没有执行哪个指令,还是在SD卡初始化之前发送的SD_SPI_ReadWriteByte(0XFF);
hooddas
4楼-- · 2019-08-14 21:34
回复【16楼】hooddas:

---------------------------------
也就是说,在SD卡还没有初始化的时候,我将SD卡的片选拉低,然后,向SPI发送一个字节的0xff,SPI应该收到的是0xff还是0x00.
hooddas
5楼-- · 2019-08-14 22:57
找到原因了,我的板子的SPI总线上一共有两个器件,一个SD卡一个VS1003,我现在把VS1003卸下来,用手按在VS1003的焊盘上,SPI返回的数据是0xFF,当我把手拿开以后SPI返回的数据就是0X00,就是向SPI写一个字节的0XFF,返回的数据竟然取决于我的手,什么原因导致的还不太明白。
Pony279
6楼-- · 2019-08-15 03:48
回复【18楼】hooddas:
---------------------------------
程序里没有把VS1003的片先信号没有disable掉吗?

一周热门 更多>