SD卡cmd17指令 返回值不对

2019-07-21 08:22发布

本帖最后由 Anthony_brave 于 2018-6-8 16:01 编辑

u8 SD_SendCmd(u8 cmd, u32 arg, u8 crc)
{     
    u8 reg=0;
    SD_CS(LOW);  
    spiA_SendRev((cmd&0x3F)|0x40);//分别写入命令   
    spiA_SendRev((arg>>24)&0xFF);
    spiA_SendRev((arg>>16)&0xFF);
    spiA_SendRev((arg>>8 )&0xFF);
    spiA_SendRev(arg&0xFF);
    spiA_SendRev(crc);
    //等待响应,或超时退出
    for(u16 i=0;i<10000;i++)
    {
      reg=spiA_SendRev(0xFF);     
      if((reg&0x80)==0)break;
      else if(i>1000){ SD_CS(HIGH);return FAIL;}
    }

    SD_CS(HIGH);
    spiA_SendRev(0xFF);//在总线上额外增加8个时钟,让SD卡完成剩下的工作
    return reg;
}


每次获取到的reg值是0x40,正常应该是0才对。打着断点走,reg就是0,不打断点就是0x40。
请问这是什么情况?





补充内容 (2018-11-2 13:42):
CMD17发送
  
if(SD_SendCmd(CMD17,AddrP,0) !=0x00) {
    return FAIL;//读命令发送失败
  }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。