• 已解决 53821 个问题
  • 已帮助 5918 位优秀工程师

SD卡命令响应超时

xbk_261273 2021-06-06 浏览量:76
自己做的PCB板,芯片用的STM32F407ZGT6,用SDIO连接SD卡后,烧入程序一直显示超时,SD卡的初始化无法成功,在向SD卡发送CMD8指令后,状态寄存器的值为0x00000004,按数据手册看是命令响应超时,命令超时周期为固定值 64 SDIO_CK 时钟周期。芯片用的引脚是PC8.9.10.11.12以及PD2,请问这种情况怎么解决啊?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:3
  • 最好把程序贴出来搞定位,你用示波器测量一下波形看看
xbk_261273 回复了 yhj416606438:static SD_Error CmdResp7Error(void) { SD_Error errorstatus = SD_OK; uint32_t status; uint32_t timeout = SDIO_CMD0TIMEOUT; status = SDIO->STA; while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)) && (timeout > 0)) { timeout--; status = SDIO->STA; } if ((timeout == 0) || (status & SDIO_FLAG_CTIMEOUT)) { /@@*!< Card is not V2.0 complient or card does not support the set voltage range */ errorstatus = SD_CMD_RSP_TIMEOUT; SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT); return(errorstatus); } if (status & SDIO_FLAG_CMDREND) { /@@*!< Card is SD V2.0 compliant */ errorstatus = SD_OK; SDIO_ClearFlag(SDIO_FLAG_CMDREND); return(errorstatus); } return(errorstatus); } 回复
xbk_261273 回复了 yhj416606438:示波器显示CLK和CMD都是有信号的,程序时使用的野火的SD卡例程, errorstatus = CmdResp7Error();初始化时这个检测出错,响应命令超时 回复

  • 先把速度降下来再试吧,有时速度太快,布线不好会这样的

    外设引脚的配置再检查一下,看正确么

xbk_261273 回复了 一笔之名也:速度降下来也不行,布线上检查了,线路是通的,示波器也显示有信号的 回复

  • 烧入程序,用什么烧入的?烧入与SD卡没有关系吧,而且你烧入超时,怎么确定的初始化失败的呢
xbk_261273 回复了 莱克迷KW:烧入程序是用仿真器往芯片里下载的野火的例程,然后调试SD卡,看可不可以用,发现SD卡初始化失败 回复

SD卡命令响应超时