20#ifndef STM32H7xx_HAL_MMC_H
21#define STM32H7xx_HAL_MMC_H
33#if defined (SDMMC1) || defined (SDMMC2)
49 HAL_MMC_STATE_RESET = ((uint32_t)0x00000000U),
50 HAL_MMC_STATE_READY = ((uint32_t)0x00000001U),
51 HAL_MMC_STATE_TIMEOUT = ((uint32_t)0x00000002U),
52 HAL_MMC_STATE_BUSY = ((uint32_t)0x00000003U),
53 HAL_MMC_STATE_PROGRAMMING = ((uint32_t)0x00000004U),
54 HAL_MMC_STATE_RECEIVING = ((uint32_t)0x00000005U),
55 HAL_MMC_STATE_TRANSFER = ((uint32_t)0x00000006U),
56 HAL_MMC_STATE_ERROR = ((uint32_t)0x0000000FU)
57} HAL_MMC_StateTypeDef;
65typedef uint32_t HAL_MMC_CardStateTypeDef;
67#define HAL_MMC_CARD_IDLE 0x00000000U
68#define HAL_MMC_CARD_READY 0x00000001U
69#define HAL_MMC_CARD_IDENTIFICATION 0x00000002U
70#define HAL_MMC_CARD_STANDBY 0x00000003U
71#define HAL_MMC_CARD_TRANSFER 0x00000004U
72#define HAL_MMC_CARD_SENDING 0x00000005U
73#define HAL_MMC_CARD_RECEIVING 0x00000006U
74#define HAL_MMC_CARD_PROGRAMMING 0x00000007U
75#define HAL_MMC_CARD_DISCONNECTED 0x00000008U
76#define HAL_MMC_CARD_BUSTEST 0x00000009U
77#define HAL_MMC_CARD_SLEEP 0x0000000AU
78#define HAL_MMC_CARD_ERROR 0x000000FFU
86#define MMC_InitTypeDef SDMMC_InitTypeDef
87#define MMC_TypeDef SDMMC_TypeDef
104 uint32_t LogBlockNbr;
106 uint32_t LogBlockSize;
108} HAL_MMC_CardInfoTypeDef;
113#if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U)
114typedef struct __MMC_HandleTypeDef
119 MMC_TypeDef *Instance;
121 MMC_InitTypeDef Init;
125 const uint8_t *pTxBuffPtr;
133 __IO uint32_t Context;
137 __IO uint32_t ErrorCode;
139 __IO uint16_t RPMBErrorCode;
141 HAL_MMC_CardInfoTypeDef MmcCard;
147 uint32_t Ext_CSD[128];
149#if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U)
150 void (* TxCpltCallback)(
struct __MMC_HandleTypeDef *hmmc);
151 void (* RxCpltCallback)(
struct __MMC_HandleTypeDef *hmmc);
152 void (* ErrorCallback)(
struct __MMC_HandleTypeDef *hmmc);
153 void (* AbortCpltCallback)(
struct __MMC_HandleTypeDef *hmmc);
154 void (* Read_DMADblBuf0CpltCallback)(
struct __MMC_HandleTypeDef *hmmc);
155 void (* Read_DMADblBuf1CpltCallback)(
struct __MMC_HandleTypeDef *hmmc);
156 void (* Write_DMADblBuf0CpltCallback)(
struct __MMC_HandleTypeDef *hmmc);
157 void (* Write_DMADblBuf1CpltCallback)(
struct __MMC_HandleTypeDef *hmmc);
159 void (* MspInitCallback)(
struct __MMC_HandleTypeDef *hmmc);
160 void (* MspDeInitCallback)(
struct __MMC_HandleTypeDef *hmmc);
174 __IO uint8_t CSDStruct;
175 __IO uint8_t SysSpecVersion;
176 __IO uint8_t Reserved1;
179 __IO uint8_t MaxBusClkFrec;
180 __IO uint16_t CardComdClasses;
181 __IO uint8_t RdBlockLen;
182 __IO uint8_t PartBlockRead;
183 __IO uint8_t WrBlockMisalign;
184 __IO uint8_t RdBlockMisalign;
185 __IO uint8_t DSRImpl;
186 __IO uint8_t Reserved2;
187 __IO uint32_t DeviceSize;
188 __IO uint8_t MaxRdCurrentVDDMin;
189 __IO uint8_t MaxRdCurrentVDDMax;
190 __IO uint8_t MaxWrCurrentVDDMin;
191 __IO uint8_t MaxWrCurrentVDDMax;
192 __IO uint8_t DeviceSizeMul;
193 __IO uint8_t EraseGrSize;
194 __IO uint8_t EraseGrMul;
195 __IO uint8_t WrProtectGrSize;
196 __IO uint8_t WrProtectGrEnable;
197 __IO uint8_t ManDeflECC;
198 __IO uint8_t WrSpeedFact;
199 __IO uint8_t MaxWrBlockLen;
200 __IO uint8_t WriteBlockPaPartial;
201 __IO uint8_t Reserved3;
202 __IO uint8_t ContentProtectAppli;
203 __IO uint8_t FileFormatGroup;
204 __IO uint8_t CopyFlag;
205 __IO uint8_t PermWrProtect;
206 __IO uint8_t TempWrProtect;
207 __IO uint8_t FileFormat;
209 __IO uint8_t CSD_CRC;
210 __IO uint8_t Reserved4;
212} HAL_MMC_CardCSDTypeDef;
222 __IO uint8_t ManufacturerID;
223 __IO uint16_t OEM_AppliID;
224 __IO uint32_t ProdName1;
225 __IO uint8_t ProdName2;
226 __IO uint8_t ProdRev;
227 __IO uint32_t ProdSN;
228 __IO uint8_t Reserved1;
229 __IO uint16_t ManufactDate;
230 __IO uint8_t CID_CRC;
231 __IO uint8_t Reserved2;
233} HAL_MMC_CardCIDTypeDef;
238#if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U)
244 HAL_MMC_TX_CPLT_CB_ID = 0x00U,
245 HAL_MMC_RX_CPLT_CB_ID = 0x01U,
246 HAL_MMC_ERROR_CB_ID = 0x02U,
247 HAL_MMC_ABORT_CB_ID = 0x03U,
248 HAL_MMC_READ_DMA_DBL_BUF0_CPLT_CB_ID = 0x04U,
249 HAL_MMC_READ_DMA_DBL_BUF1_CPLT_CB_ID = 0x05U,
250 HAL_MMC_WRITE_DMA_DBL_BUF0_CPLT_CB_ID = 0x06U,
251 HAL_MMC_WRITE_DMA_DBL_BUF1_CPLT_CB_ID = 0x07U,
253 HAL_MMC_MSP_INIT_CB_ID = 0x10U,
254 HAL_MMC_MSP_DEINIT_CB_ID = 0x11U
255} HAL_MMC_CallbackIDTypeDef;
263typedef void (*pMMC_CallbackTypeDef)(MMC_HandleTypeDef *hmmc);
277#define MMC_BLOCKSIZE ((uint32_t)512U)
282#define HAL_MMC_ERROR_NONE SDMMC_ERROR_NONE
283#define HAL_MMC_ERROR_CMD_CRC_FAIL SDMMC_ERROR_CMD_CRC_FAIL
284#define HAL_MMC_ERROR_DATA_CRC_FAIL SDMMC_ERROR_DATA_CRC_FAIL
285#define HAL_MMC_ERROR_CMD_RSP_TIMEOUT SDMMC_ERROR_CMD_RSP_TIMEOUT
286#define HAL_MMC_ERROR_DATA_TIMEOUT SDMMC_ERROR_DATA_TIMEOUT
287#define HAL_MMC_ERROR_TX_UNDERRUN SDMMC_ERROR_TX_UNDERRUN
288#define HAL_MMC_ERROR_RX_OVERRUN SDMMC_ERROR_RX_OVERRUN
289#define HAL_MMC_ERROR_ADDR_MISALIGNED SDMMC_ERROR_ADDR_MISALIGNED
290#define HAL_MMC_ERROR_BLOCK_LEN_ERR SDMMC_ERROR_BLOCK_LEN_ERR
292#define HAL_MMC_ERROR_ERASE_SEQ_ERR SDMMC_ERROR_ERASE_SEQ_ERR
293#define HAL_MMC_ERROR_BAD_ERASE_PARAM SDMMC_ERROR_BAD_ERASE_PARAM
294#define HAL_MMC_ERROR_WRITE_PROT_VIOLATION SDMMC_ERROR_WRITE_PROT_VIOLATION
295#define HAL_MMC_ERROR_LOCK_UNLOCK_FAILED SDMMC_ERROR_LOCK_UNLOCK_FAILED
297#define HAL_MMC_ERROR_COM_CRC_FAILED SDMMC_ERROR_COM_CRC_FAILED
298#define HAL_MMC_ERROR_ILLEGAL_CMD SDMMC_ERROR_ILLEGAL_CMD
299#define HAL_MMC_ERROR_CARD_ECC_FAILED SDMMC_ERROR_CARD_ECC_FAILED
300#define HAL_MMC_ERROR_CC_ERR SDMMC_ERROR_CC_ERR
301#define HAL_MMC_ERROR_GENERAL_UNKNOWN_ERR SDMMC_ERROR_GENERAL_UNKNOWN_ERR
302#define HAL_MMC_ERROR_STREAM_READ_UNDERRUN SDMMC_ERROR_STREAM_READ_UNDERRUN
303#define HAL_MMC_ERROR_STREAM_WRITE_OVERRUN SDMMC_ERROR_STREAM_WRITE_OVERRUN
304#define HAL_MMC_ERROR_CID_CSD_OVERWRITE SDMMC_ERROR_CID_CSD_OVERWRITE
305#define HAL_MMC_ERROR_WP_ERASE_SKIP SDMMC_ERROR_WP_ERASE_SKIP
306#define HAL_MMC_ERROR_CARD_ECC_DISABLED SDMMC_ERROR_CARD_ECC_DISABLED
307#define HAL_MMC_ERROR_ERASE_RESET SDMMC_ERROR_ERASE_RESET
309#define HAL_MMC_ERROR_AKE_SEQ_ERR SDMMC_ERROR_AKE_SEQ_ERR
310#define HAL_MMC_ERROR_INVALID_VOLTRANGE SDMMC_ERROR_INVALID_VOLTRANGE
311#define HAL_MMC_ERROR_ADDR_OUT_OF_RANGE SDMMC_ERROR_ADDR_OUT_OF_RANGE
312#define HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE SDMMC_ERROR_REQUEST_NOT_APPLICABLE
313#define HAL_MMC_ERROR_PARAM SDMMC_ERROR_INVALID_PARAMETER
314#define HAL_MMC_ERROR_UNSUPPORTED_FEATURE SDMMC_ERROR_UNSUPPORTED_FEATURE
315#define HAL_MMC_ERROR_BUSY SDMMC_ERROR_BUSY
316#define HAL_MMC_ERROR_DMA SDMMC_ERROR_DMA
317#define HAL_MMC_ERROR_TIMEOUT SDMMC_ERROR_TIMEOUT
319#define HAL_MMC_ERROR_RPMB_OPERATION_OK 0x0000U
320#define HAL_MMC_ERROR_RPMB_GENERAL_FAILURE 0x0001U
321#define HAL_MMC_ERROR_RPMB_AUTHENTICATION_FAILURE 0x0002U
322#define HAL_MMC_ERROR_RPMB_COUNTER_FAILURE 0x0003U
323#define HAL_MMC_ERROR_RPMB_ADDRESS_FAILURE 0x0004U
324#define HAL_MMC_ERROR_RPMB_WRITE_FAILURE 0x0005U
325#define HAL_MMC_ERROR_RPMB_READ_FAILURE 0x0006U
326#define HAL_MMC_ERROR_RPMB_KEY_NOT_YET_PROG 0x0007U
327#define HAL_MMC_ERROR_RPMB_COUNTER_EXPIRED 0x0080U
329#if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U)
330#define HAL_MMC_ERROR_INVALID_CALLBACK SDMMC_ERROR_INVALID_PARAMETER
339#define MMC_CONTEXT_NONE ((uint32_t)0x00000000U)
340#define MMC_CONTEXT_READ_SINGLE_BLOCK ((uint32_t)0x00000001U)
341#define MMC_CONTEXT_READ_MULTIPLE_BLOCK ((uint32_t)0x00000002U)
342#define MMC_CONTEXT_WRITE_SINGLE_BLOCK ((uint32_t)0x00000010U)
343#define MMC_CONTEXT_WRITE_MULTIPLE_BLOCK ((uint32_t)0x00000020U)
344#define MMC_CONTEXT_IT ((uint32_t)0x00000008U)
345#define MMC_CONTEXT_DMA ((uint32_t)0x00000080U)
357#define MMC_HIGH_VOLTAGE_RANGE 0x80FF8000U
358#define MMC_DUAL_VOLTAGE_RANGE 0x80FF8080U
359#define MMC_LOW_VOLTAGE_RANGE 0x80000080U
360#define EMMC_HIGH_VOLTAGE_RANGE 0xC0FF8000U
361#define EMMC_DUAL_VOLTAGE_RANGE 0xC0FF8080U
362#define EMMC_LOW_VOLTAGE_RANGE 0xC0000080U
363#define MMC_INVALID_VOLTAGE_RANGE 0x0001FF01U
371#define MMC_LOW_CAPACITY_CARD ((uint32_t)0x00000000U)
372#define MMC_HIGH_CAPACITY_CARD ((uint32_t)0x00000001U)
381#define HAL_MMC_ERASE 0x00000000U
382#define HAL_MMC_TRIM 0x00000001U
383#define HAL_MMC_DISCARD 0x00000003U
384#define HAL_MMC_SECURE_ERASE 0x80000000U
385#define HAL_MMC_SECURE_TRIM_STEP1 0x80000001U
386#define HAL_MMC_SECURE_TRIM_STEP2 0x80008000U
388#define IS_MMC_ERASE_TYPE(TYPE) (((TYPE) == HAL_MMC_ERASE) || \
389 ((TYPE) == HAL_MMC_TRIM) || \
390 ((TYPE) == HAL_MMC_DISCARD) || \
391 ((TYPE) == HAL_MMC_SECURE_ERASE) || \
392 ((TYPE) == HAL_MMC_SECURE_TRIM_STEP1) || \
393 ((TYPE) == HAL_MMC_SECURE_TRIM_STEP2))
401#define HAL_MMC_SRT_ERASE 0x00000001U
402#define HAL_MMC_SRT_WRITE_CHAR_ERASE 0x00000002U
403#define HAL_MMC_SRT_WRITE_CHAR_COMPL_RANDOM 0x00000004U
404#define HAL_MMC_SRT_VENDOR_DEFINED 0x00000008U
407#define IS_MMC_SRT_TYPE(TYPE) (((TYPE) == HAL_MMC_SRT_ERASE) || \
408 ((TYPE) == HAL_MMC_SRT_WRITE_CHAR_ERASE) || \
409 ((TYPE) == HAL_MMC_SRT_WRITE_CHAR_COMPL_RANDOM) || \
410 ((TYPE) == HAL_MMC_SRT_VENDOR_DEFINED))
418typedef uint32_t HAL_MMC_PartitionTypeDef;
420#define HAL_MMC_USER_AREA_PARTITION 0x00000000U
421#define HAL_MMC_BOOT_PARTITION1 0x00000100U
422#define HAL_MMC_BOOT_PARTITION2 0x00000200U
423#define HAL_MMC_RPMB_PARTITION 0x00000300U
441#if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U)
442#define __HAL_MMC_RESET_HANDLE_STATE(__HANDLE__) do { \
443 (__HANDLE__)->State = HAL_MMC_STATE_RESET; \
444 (__HANDLE__)->MspInitCallback = NULL; \
445 (__HANDLE__)->MspDeInitCallback = NULL; \
448#define __HAL_MMC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_MMC_STATE_RESET)
481#define __HAL_MMC_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
513#define __HAL_MMC_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
551#define __HAL_MMC_GET_FLAG(__HANDLE__, __FLAG__) __SDMMC_GET_FLAG((__HANDLE__)->Instance, (__FLAG__))
580#define __HAL_MMC_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDMMC_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__))
612#define __HAL_MMC_GET_IT(__HANDLE__, __INTERRUPT__) __SDMMC_GET_IT((__HANDLE__)->Instance, (__INTERRUPT__))
644#define __HAL_MMC_CLEAR_IT(__HANDLE__, __INTERRUPT__) __SDMMC_CLEAR_IT((__HANDLE__)->Instance, (__INTERRUPT__))
675HAL_StatusTypeDef HAL_MMC_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd,
676 uint32_t NumberOfBlocks,
678HAL_StatusTypeDef HAL_MMC_WriteBlocks(MMC_HandleTypeDef *hmmc,
const uint8_t *pData, uint32_t BlockAdd,
679 uint32_t NumberOfBlocks, uint32_t Timeout);
680HAL_StatusTypeDef HAL_MMC_Erase(MMC_HandleTypeDef *hmmc, uint32_t BlockStartAdd, uint32_t BlockEndAdd);
682HAL_StatusTypeDef HAL_MMC_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd,
683 uint32_t NumberOfBlocks);
684HAL_StatusTypeDef HAL_MMC_WriteBlocks_IT(MMC_HandleTypeDef *hmmc,
const uint8_t *pData, uint32_t BlockAdd,
685 uint32_t NumberOfBlocks);
687HAL_StatusTypeDef HAL_MMC_ReadBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd,
688 uint32_t NumberOfBlocks);
689HAL_StatusTypeDef HAL_MMC_WriteBlocks_DMA(MMC_HandleTypeDef *hmmc,
const uint8_t *pData, uint32_t BlockAdd,
690 uint32_t NumberOfBlocks);
692void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc);
698void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc);
700#if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U)
702HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef CallbackId,
703 pMMC_CallbackTypeDef pCallback);
704HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef CallbackId);
713HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode);
714HAL_StatusTypeDef HAL_MMC_ConfigSpeedBusOperation(MMC_HandleTypeDef *hmmc, uint32_t SpeedMode);
715HAL_StatusTypeDef HAL_MMC_SwitchPartition(MMC_HandleTypeDef *hmmc, HAL_MMC_PartitionTypeDef Partition);
723HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc);
724HAL_StatusTypeDef HAL_MMC_GetCardCID(
const MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID);
725HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD);
726HAL_StatusTypeDef HAL_MMC_GetCardInfo(
const MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo);
727HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeout);
735HAL_MMC_StateTypeDef HAL_MMC_GetState(
const MMC_HandleTypeDef *hmmc);
736uint32_t HAL_MMC_GetError(
const MMC_HandleTypeDef *hmmc);
737uint32_t HAL_MMC_GetRPMBError(
const MMC_HandleTypeDef *hmmc);
754HAL_StatusTypeDef HAL_MMC_EraseSequence(MMC_HandleTypeDef *hmmc, uint32_t EraseType, uint32_t BlockStartAdd,
755 uint32_t BlockEndAdd);
757HAL_StatusTypeDef HAL_MMC_ConfigSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t SRTMode);
758HAL_StatusTypeDef HAL_MMC_GetSupportedSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t *SupportedSRT);
775HAL_StatusTypeDef HAL_MMC_RPMB_ProgramAuthenticationKey(MMC_HandleTypeDef *hmmc,
const uint8_t *pKey, uint32_t Timeout);
776HAL_StatusTypeDef HAL_MMC_RPMB_ProgramAuthenticationKey_IT(MMC_HandleTypeDef *hmmc,
const uint8_t *pKey,
778uint32_t HAL_MMC_RPMB_GetWriteCounter(MMC_HandleTypeDef *hmmc, uint8_t *pNonce, uint32_t Timeout);
779uint32_t HAL_MMC_RPMB_GetWriteCounter_IT(MMC_HandleTypeDef *hmmc, uint8_t *pNonce);
780HAL_StatusTypeDef HAL_MMC_RPMB_WriteBlocks(MMC_HandleTypeDef *hmmc,
const uint8_t *pData, uint16_t BlockAdd,
781 uint16_t NumberOfBlocks,
const uint8_t *pMAC, uint32_t Timeout);
782HAL_StatusTypeDef HAL_MMC_RPMB_WriteBlocks_IT(MMC_HandleTypeDef *hmmc,
const uint8_t *pData, uint16_t BlockAdd,
783 uint16_t NumberOfBlocks,
const uint8_t *pMAC);
784HAL_StatusTypeDef HAL_MMC_RPMB_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint16_t BlockAdd,
785 uint16_t NumberOfBlocks,
const uint8_t *pNonce, uint8_t *pMAC,
787HAL_StatusTypeDef HAL_MMC_RPMB_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint16_t BlockAdd,
788 uint16_t NumberOfBlocks,
const uint8_t *pNonce, uint8_t *pMAC);
807#define MMC_EXT_CSD_DATA_SEC_SIZE_INDEX 61
808#define MMC_EXT_CSD_DATA_SEC_SIZE_POS 8
#define __IO
Defines 'read / write' permissions.
void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc)
HAL_StatusTypeDef
HAL Status structures definition.
HAL_LockTypeDef
HAL Lock structures definition.
Header file of SD HAL extended module.
void HAL_MMC_MspInit(MMC_HandleTypeDef *hmmc)
MMC MSP Initialization This function configures the hardware resources used in this example.
void HAL_MMC_MspDeInit(MMC_HandleTypeDef *hmmc)
MMC MSP De-Initialization This function freeze the hardware resources used in this example.
Header file of SDMMC HAL module.