本帖最后由 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;//读命令发送失败
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>