新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2017-5-31
- 在线时间
- 4 小时
|
17金钱
最近在SD卡读写实验中有遇到个问题,主体表现就是会有概率的出现SDIO->STA 响应超时问题,具体如下,会一直在这个while中死循环,请教一下大家 case SD_CARD://SD卡
res=SD_ReadDisk(buff,sector,count);
while(res)//读出错
{
SD_Init(); //重新初始化SD卡
res=SD_ReadDisk(buff,sector,count);
}
break;
返回值不为零在SD_ReadBlock()中发送SD_CMD_SET_BLOCKLEN命令后出现的,
if((blksize>0)&&(blksize<=2048)&&((blksize&(blksize-1))==0))
{
power=convert_from_bytes_to_power_of_two(blksize);
SDIO_CmdInitStructure.SDIO_Argument = blksize;
SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SET_BLOCKLEN;
SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
SDIO_SendCommand(&SDIO_CmdInitStructure);//发送CMD16+设置数据长度为blksize,短响应
errorstatus=CmdResp1Error(SD_CMD_SET_BLOCKLEN); //等待R1响应
if(errorstatus!=SD_OK)return errorstatus; //响应错误
}
|
最佳答案
查看完整内容[请看2#楼]
原因已找到,是因为我这的SD有加一个电子开关,在从stop模式唤醒出来时忘记初始化电子开关的引脚,这样导致的SD卡不正常
|