Checks for error conditions for R6 (RCA) response.
1499 register uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U);
1505 return SDMMC_ERROR_TIMEOUT;
1507 sta_reg = SDMMCx->STA;
1508 }
while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) ||
1509 ((sta_reg & SDMMC_FLAG_CMDACT) != 0U ));
1511 if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT))
1513 __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT);
1515 return SDMMC_ERROR_CMD_RSP_TIMEOUT;
1517 else if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL))
1519 __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL);
1521 return SDMMC_ERROR_CMD_CRC_FAIL;
1531 return SDMMC_ERROR_CMD_CRC_FAIL;
1535 __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS);
1540 if((response_r1 & (SDMMC_R6_GENERAL_UNKNOWN_ERROR | SDMMC_R6_ILLEGAL_CMD | SDMMC_R6_COM_CRC_FAILED)) == SDMMC_ALLZERO)
1542 *pRCA = (uint16_t) (response_r1 >> 16);
1544 return SDMMC_ERROR_NONE;
1546 else if((response_r1 & SDMMC_R6_ILLEGAL_CMD) == SDMMC_R6_ILLEGAL_CMD)
1548 return SDMMC_ERROR_ILLEGAL_CMD;
1550 else if((response_r1 & SDMMC_R6_COM_CRC_FAILED) == SDMMC_R6_COM_CRC_FAILED)
1552 return SDMMC_ERROR_COM_CRC_FAILED;
1556 return SDMMC_ERROR_GENERAL_UNKNOWN_ERR;
uint32_t SDMMC_GetResponse(SDMMC_TypeDef *SDMMCx, uint32_t Response)
Return the response received from the card for the last command.
uint8_t SDMMC_GetCommandResponse(SDMMC_TypeDef *SDMMCx)
Return the command index of last command for which response received.