新手入门
- 积分
- 6
- 金钱
- 6
- 注册时间
- 2016-1-19
- 在线时间
- 2 小时
|

楼主 |
发表于 2016-1-20 09:50:38
|
显示全部楼层
原子哥,发送指令是成功的
u8 SD_ReadDisk(u8*buf, u32 sector, u8 cnt)
{
u8 r1;
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();//取消片选
return r1;//
}
接收函数
u8 SD_RecvData(u8*buf, u16 len)
{
if(SD_GetResponse(0xfe))
return 1; //等待SD卡发回数据起始令牌0xFE
while(len--) //开始接收数据
{
*buf = SPI3_ReadWriteByte(0xff);
buf++;
}
//下面是2个伪CRC(dummy CRC)
SD_SPI_ReadWriteByte(0xff);
SD_SPI_ReadWriteByte(0xff);
return 0;//读取成功
}
运行完返回0之后没有回到第一个函数。在main函数调用就是正常流畅返回的。在通信的时候调用却返回0之后不知道跑到哪里去了
|
|