SDIO初始化出错 发送CM8 长响应返回0x03,请大神帮忙

2019-07-20 04:37发布

使用:STM32F411CE片子,移植探索者F407SDIO程序。在SD_Error SD_PowerON(void)这个函数中:

        for(i=0;i<74;i++)
        {

        SDIO_CmdInitStructure.SDIO_Argument = 0x0;//发送CMD0进入IDLE STAGE模式命令.
    SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_GO_IDLE_STATE; //cmd0
    SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_No;  //无响应
    SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
    SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;  //则CPSM在开始发送命令之前等待数据传输结束。
    SDIO_SendCommand(&SDIO_CmdInitStructure);                          //写命令进命令寄存器
               
                errorstatus=CmdError();
               
                if(errorstatus==SD_OK)break;
        }
        if(errorstatus)return errorstatus;//返回错误状态

---------------------------------------------------------------》》》》》》返回时OK的。但是:::

  SDIO_CmdInitStructure.SDIO_Argument = SD_CHECK_PATTERN;        //发送CMD8,短响应,检查SD卡接口特性
  SDIO_CmdInitStructure.SDIO_CmdIndex = SDIO_SEND_IF_COND;        //cmd8
  SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;         //r7
  SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;                         //关闭等待中断
  SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
  SDIO_SendCommand(&SDIO_CmdInitStructure);
       
  errorstatus=CmdResp7Error();                                                //等待R7响应


--------------------------------------------------------------》》》返回的0x03.

大神们需要到这样的问题吗?
有些大神说:SD卡在接收第一个CMD0(Reset)命令时,必须要求DATA0为高.否则,卡会进入不定状态,再也不响应命令了.
小弟很迷蒙,请大神指导

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。