spi总线挂接sd卡和vs1003。片选已经确定没问题了,当送音频数据的时候有错误。
以下代码我在线调试的时候cnt为2,当f_read()函数第一次调用时r1返回0没错,但是第二次调用时r1返回0x01,这不是idle状态吗?
u8 SD_ReadDisk( u8*buf,u32 sector,u8 cnt)
{
u8 r1;
LED1_ON;
if(SD_Type!=SD_TYPE_V2HC)sector <<= 9;//转换为字节地址
if(cnt==1)
{
r1=SD_SendCmd(CMD17,sector,0X01);//读命令
if(r1==0)//指令发送成功
{
r1=SD_RecvData(buf,512);//接收512个字节
}
}else
{
r1=SD_SendCmd(CMD18,sector,0X01);//连续读命令
do
{
r1=SD_RecvData(buf,512);//接收512个字节
buf+=512;
}while(--cnt && r1==0);
SD_SendCmd(CMD12,0,0X01); //发送停止命令
}
SD_DisSelect();//取消片选
LED1_OFF;
return r1;//
} |