SDIO_SendCmd(SD_CMD_SD_APP_OP_COND,1,SD_VOLTAGE_WINDOW_SD|SDType);//发送ACMD41,短响应 errorstatus=SDIO_CmdResp3Error(); //等待R3响应 if(errorstatus!=SD_OK)return errorstatus; //响应错误 response=SDIO->RESP1;; //得到响应 validvoltage=(((response>>31)==1)?1:0); //判断SD卡上...
ACMD6 SET_BUS_WIDTH Mandatory /* 设置SD卡的总线位宽,这个需要读取SCR确定 */ ACMD13 SD_STATUS Mandatory ACMD22 SEND_NUM_WR_BLOCKS Mandatory ACMD23 SET_WR_BLK_ERASE_COUNT Mandatory ACMD41 SD_APP_OP_COND Mandatory /* 获取SD电压值 */ ACMD42 SET_CLR_CARD_DETECT Mandatory ACMD51 SEND_SCR...
int mmc_send_app_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr) cmd.opcode = SD_APP_OP_COND; //ACMD41,获取 SDcard 的允许电压范围值,保存在 ocr 中. 所有发送它之前需要发送 CMD_55 命令。执行完后 card 状态变为 READY 1b2: static int mmc_sd_init_card(struct mmc_host *host, ...
4243try_again:44err =mmc_send_app_op_cond(host, ocr, rocr);//发送ACMD41,这个函数你可以进去看一下,会发现循环检验ACMD41的,应答值的31位,与 协议流程图中符合.rocr就是卡对ACMD41的应答值.另外ACMD41属于app cmd需要先发送CMD55,这个linux都封装在了函数里,并且流程图上也简化掉了. 45if(err)46ret...
CMD5 IO_SEND_OP_COND Mandatory CMD6 SWITCH_FUNC Mandatory1 Mandatory1 Added in Part 1 v1.10 CMD7 SELECT/DESELECT_CARD Mandatory Mandatory /* 根据获取指定的RCA,选中SD卡,如果 在选中一个卡的状态下,又选中其他的卡,那么之前的卡会自动取消选中,如果发送地址0,则表示取消选中全部卡 */ ...
下面是SD卡的APP命令,主要针对特殊安全命令: #defineSD_CMD_SD_APP_OP_COND ((uint8_t)41)#defineSD_CMD_SD_APP_SECURE_ERASE ((uint8_t)38)#defineSD_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18)#defineSD_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48)#defineSD_CMD_SD_APP_SECURE...
errorstatus=SDIO_CmdResp1Error(SD_CMD_APP_CMD); //等待R1响应 if(errorstatus==SD_OK)//SD2.0/SD 1.1 { //SD卡,发送ACMD41 SD_APP_OP_COND,参数为:0x80100000 while((!validvoltage)&&(count<SD_MAX_VOLT_TRIAL)) { SDIO_SendCmd(SD_CMD_APP_CMD,1,0); //发送CMD55,短响应 ...
CMD56 GEN_CMD Mandatory ACMD6 SET_BUS_WIDTH Mandatory /* 设置SD卡的总线位宽,这个需要读取SCR确定 */ ACMD13 SD_STATUS Mandatory ACMD22 SEND_NUM_WR_BLOCKS Mandatory ACMD23 SET_WR_BLK_ERASE_COUNT Mandatory ACMD41 SD_APP_OP_COND Mandatory /* 获取SD电压值 */ ...
CRC旨在保护SD存储卡命令、响应和数据传输,防止SD存储卡总线上的传输错误。为每个命令生成一个CRC,并检查CMD行上的每个响应。对于数据块,每个传输的块生成一个CRC。 生成并检查CRC,如下所述。 CRC7 CRC7检查用于所有命令、除类型R3之外的所有响应以及CSD和CID寄存器。CRC7是一个7位值,计算方法如下: ...
err = mmcsd_send_app_op_cond(host, ocr, RT_NULL); /* 发送ACMD41(ACMD41 = CMD55+CMD41)指令,发送主机容量支持信息,并询问卡的操作条件 */ if (err) goto err; if (controller_is_spi(host)) /* 判断是否使用SPI方式访问SD卡 */