同样的程序在四个板子上有两个板子是正常运行的 两个板子用FATFS文件系统打开或读写文件都不正常,返回FR_NOT_READY
大家有遇到过的么 能给点建议么 谢谢
回复 沙发 huo_hu 的帖子
static SD_Error CmdError(void)
{
SD_Error errorstatus = SD_OK;
uint32_t timeout;
timeout = SDIO_CMD0TIMEOUT; /*!< 10000 */
while ((timeout > 0) && (SDIO_GetFlagStatus(SDIO_FLAG_CMDSENT) == RESET))
{
timeout--;
}
停到这里了 timeout==0 了
if (timeout == 0)
{
errorstatus = SD_CMD_RSP_TIMEOUT;
return(errorstatus);
}
/*!< Clear all the static flags */
SDIO_ClearFlag(SDIO_STATIC_FLAGS);
return(errorstatus);
}
回复 4楼 huo_hu 的帖子
errorstatus = CmdError();
if (errorstatus != SD_OK)
{
/*!< CMD Response TimeOut (wait for CMDSENT flag) */
return(errorstatus);
}
是sdio的,在sd卡初始化的时候返回这个错误状态信息 errorstatus = SD_CMD_RSP_TIMEOUT
这个超时可能是由于你之前的指令没有正确执行,没有响应了.
你把之前发送执行的指令贴出来看看
回复 6楼 huo_hu 的帖子
死到SD卡上电那块了 发送的是CMD0
/*!< CMD0: GO_IDLE_STATE ---------------------------------------------------*/
/*!< No CMD response required */
SDIO_CmdInitStructure.SDIO_Argument = 0x0;
SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_GO_IDLE_STATE;
SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_No;
SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
SDIO_SendCommand(&SDIO_CmdInitStructure);
errorstatus = CmdError();
回复 8楼 huo_hu 的帖子
是第一条指令 指的是硬件连接么? 但是不同的程序同样的驱动初始化成功了