Returns information the information of the card which are stored on the CSD register.
2463 pCSD->
CSDStruct = (uint8_t)((hsd->CSD[0] & 0xC0000000U) >> 30U);
2465 pCSD->
SysSpecVersion = (uint8_t)((hsd->CSD[0] & 0x3C000000U) >> 26U);
2467 pCSD->
Reserved1 = (uint8_t)((hsd->CSD[0] & 0x03000000U) >> 24U);
2469 pCSD->
TAAC = (uint8_t)((hsd->CSD[0] & 0x00FF0000U) >> 16U);
2471 pCSD->
NSAC = (uint8_t)((hsd->CSD[0] & 0x0000FF00U) >> 8U);
2475 pCSD->
CardComdClasses = (uint16_t)((hsd->CSD[1] & 0xFFF00000U) >> 20U);
2477 pCSD->
RdBlockLen = (uint8_t)((hsd->CSD[1] & 0x000F0000U) >> 16U);
2479 pCSD->
PartBlockRead = (uint8_t)((hsd->CSD[1] & 0x00008000U) >> 15U);
2481 pCSD->
WrBlockMisalign = (uint8_t)((hsd->CSD[1] & 0x00004000U) >> 14U);
2483 pCSD->
RdBlockMisalign = (uint8_t)((hsd->CSD[1] & 0x00002000U) >> 13U);
2485 pCSD->
DSRImpl = (uint8_t)((hsd->CSD[1] & 0x00001000U) >> 12U);
2489 if(hsd->SdCard.CardType == CARD_SDSC)
2491 pCSD->
DeviceSize = (((hsd->CSD[1] & 0x000003FFU) << 2U) | ((hsd->CSD[2] & 0xC0000000U) >> 30U));
2501 pCSD->
DeviceSizeMul = (uint8_t)((hsd->CSD[2] & 0x00038000U) >> 15U);
2503 hsd->SdCard.BlockNbr = (pCSD->
DeviceSize + 1U) ;
2504 hsd->SdCard.BlockNbr *= (1UL << ((pCSD->
DeviceSizeMul & 0x07U) + 2U));
2505 hsd->SdCard.BlockSize = (1UL << (pCSD->
RdBlockLen & 0x0FU));
2507 hsd->SdCard.LogBlockNbr = (hsd->SdCard.BlockNbr) * ((hsd->SdCard.BlockSize) / 512U);
2508 hsd->SdCard.LogBlockSize = 512U;
2510 else if(hsd->SdCard.CardType == CARD_SDHC_SDXC)
2513 pCSD->
DeviceSize = (((hsd->CSD[1] & 0x0000003FU) << 16U) | ((hsd->CSD[2] & 0xFFFF0000U) >> 16U));
2515 hsd->SdCard.BlockNbr = ((pCSD->
DeviceSize + 1U) * 1024U);
2516 hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr;
2517 hsd->SdCard.BlockSize = 512U;
2518 hsd->SdCard.LogBlockSize = hsd->SdCard.BlockSize;
2523 __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS);
2524 hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE;
2525 hsd->State = HAL_SD_STATE_READY;
2529 pCSD->
EraseGrSize = (uint8_t)((hsd->CSD[2] & 0x00004000U) >> 14U);
2531 pCSD->
EraseGrMul = (uint8_t)((hsd->CSD[2] & 0x00003F80U) >> 7U);
2537 pCSD->
ManDeflECC = (uint8_t)((hsd->CSD[3] & 0x60000000U) >> 29U);
2539 pCSD->
WrSpeedFact = (uint8_t)((hsd->CSD[3] & 0x1C000000U) >> 26U);
2541 pCSD->
MaxWrBlockLen= (uint8_t)((hsd->CSD[3] & 0x03C00000U) >> 22U);
2549 pCSD->
FileFormatGroup = (uint8_t)((hsd->CSD[3] & 0x00008000U) >> 15U);
2551 pCSD->
CopyFlag = (uint8_t)((hsd->CSD[3] & 0x00004000U) >> 14U);
2553 pCSD->
PermWrProtect = (uint8_t)((hsd->CSD[3] & 0x00002000U) >> 13U);
2555 pCSD->
TempWrProtect = (uint8_t)((hsd->CSD[3] & 0x00001000U) >> 12U);
2557 pCSD->
FileFormat = (uint8_t)((hsd->CSD[3] & 0x00000C00U) >> 10U);
2559 pCSD->
ECC= (uint8_t)((hsd->CSD[3] & 0x00000300U) >> 8U);
2561 pCSD->
CSD_CRC = (uint8_t)((hsd->CSD[3] & 0x000000FEU) >> 1U);
__IO uint16_t CardComdClasses
__IO uint8_t PartBlockRead
__IO uint8_t MaxRdCurrentVDDMax
__IO uint8_t PermWrProtect
__IO uint8_t ContentProtectAppli
__IO uint8_t MaxWrCurrentVDDMax
__IO uint8_t DeviceSizeMul
__IO uint8_t WriteBlockPaPartial
__IO uint8_t MaxBusClkFrec
__IO uint8_t SysSpecVersion
__IO uint8_t WrProtectGrSize
__IO uint8_t MaxRdCurrentVDDMin
__IO uint8_t MaxWrCurrentVDDMin
__IO uint8_t FileFormatGroup
__IO uint8_t RdBlockMisalign
__IO uint8_t MaxWrBlockLen
__IO uint8_t TempWrProtect
__IO uint8_t WrBlockMisalign
__IO uint8_t WrProtectGrEnable