求助:SD卡发送cmd0后死循环

2019-07-21 00:55发布

发完cmd0后,就在这死循环 SDIO_FLAG_CMDSENT一直为0x80

 static SD_Error CmdError(void)
{
 uint32_t timeout;   timeout = SDIO_CMD0TIMEOUT; /*!< 10000 */   while ((timeout > 0) && (SDIO_GetFlagStatus(SDIO_FLAG_CMDSENT) == RESET))
  {
    timeout--;
  }   if (timeout == 0)
  {
    errorstatus = SD_CMD_RSP_TIMEOUT;
    return(errorstatus);
  }   /*!< Clear all the static flags */
  SDIO_ClearFlag(SDIO_STATIC_FLAGS);   return(errorstatus);
}

请指点可能的原因,用的是4G kingston sdhc卡
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-21 04:57
 精彩回答 2  元偷偷看……
lamg007
2楼-- · 2019-07-21 06:22
回复【2楼】正点原子:
---------------------------------
是啊,官方的库,在上电检测就死掉了,/*!< 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();就在这死掉了,程序的原因还是硬件上的问题,换个2G的SD试下
longfc04433
3楼-- · 2019-07-21 06:56
楼主这个问题你是怎么解决的?我现在也遇到这个问题了,希望能得到你的指点。
王志
4楼-- · 2019-07-21 08:08
 精彩回答 2  元偷偷看……

一周热门 更多>