请教下原子哥SD卡 CMD55+ACMD41总是返回0x01的问题

2019-08-16 20:20发布

原子哥的代码是没问题的,但自己写的出现了问题
下面说下我出现的情况
就是按顺序启动SD卡
1、74个时钟周期
2、复位(CMD0)进入IDLE状态(返回0x01,正常)
3、卡类型识别CMD8命令(返回R7,检查了参数都正确)
4、出问题就在这点:CMD55+ACMD41组合中ACMD41返回值总是为0x01,死活都没返回0x00,但你的代码没问题

小弟愚钝,找不出是哪出的问题,原子哥,高抬贵手帮忙看下哪里有错吧

#define SD_CMD55 0x37 #define SD_CMD55_ARG 0x00 #define SD_CMD55_CRC 0x01 #define SD_CMD55_RESPONSE         0x01
#define SD_ACMD41     0x41 #define SD_ACMD41_ARG     0x40000000 #define SD_ACMD41_CRC     0x01

/*循环发送CMD55 + ACMD41,等待0x00*/ sdcardInfo sdcardInit(void) { uint16_t retryLoop; uint8_t readByte;
retryLoop = 0xFFFF; do{ /*CMD55*/ writeSdcardCMD( SD_CMD55, SD_CMD55_ARG, SD_CMD55_CRC); /*ACMD41,回应R1*/ readByte = writeSdcardCMD( SD_ACMD41, SD_ACMD41_ARG, SD_ACMD41_CRC); if( readByte == 0x00) return SD_NORMAL; }while(retryLoop--); return SD_INIT_ERROR; }


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