sd卡 cmd16 SD_CMD_SET_BLOCKLEN 命令返回超时错误?

使用官方sd卡例程。SD_WriteDisk(buf,i,1) 函数里面的sta = SD_WriteBlock( buf, lsector, 512 );


       SDIO_CmdInitStructure.SDIO_Argument = blksize;

        SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SET_BLOCKLEN;

        SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;

        //SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Long;

        SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;

        //SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_Pend;

        SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;

        SDIO_SendCommand( &SDIO_CmdInitStructure );


        //Delay_Us(1);

        errorstatus = CmdResp1Error( SD_CMD_SET_BLOCKLEN );

设置块大小,命令返回是SD_CMD_RSP_TIMEOUT错误?不明原因

        if( errorstatus != SD_OK )

        {

            return errorstatus;

        }


您好,若你在例程的基础上进行了修改并涉及到了中断,可以检查一下是否是SDIO的中断优先级配置低了,可能会导致出现该问题。此外可以检查一下数据传输时的时钟是多少,注意一下最高25MHz。后续若有问题,可通过邮件(lzs@wch.cn)详细沟通一下


只有登录才能回复,可以选择微信账号登录