39 #ifndef __STM32F4xx_HAL_SD_H 40 #define __STM32F4xx_HAL_SD_H 45 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \ 46 defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \ 47 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || \ 48 defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \ 49 defined(STM32F412Rx) || defined(STM32F412Cx) 70 #define SD_InitTypeDef SDIO_InitTypeDef 71 #define SD_TypeDef SDIO_TypeDef 89 __IO uint32_t SdTransferCplt;
91 __IO uint32_t SdTransferErr;
93 __IO uint32_t DmaTransferCplt;
95 __IO uint32_t SdOperation;
111 __IO uint8_t CSDStruct;
112 __IO uint8_t SysSpecVersion;
113 __IO uint8_t Reserved1;
116 __IO uint8_t MaxBusClkFrec;
117 __IO uint16_t CardComdClasses;
118 __IO uint8_t RdBlockLen;
119 __IO uint8_t PartBlockRead;
120 __IO uint8_t WrBlockMisalign;
121 __IO uint8_t RdBlockMisalign;
122 __IO uint8_t DSRImpl;
123 __IO uint8_t Reserved2;
124 __IO uint32_t DeviceSize;
125 __IO uint8_t MaxRdCurrentVDDMin;
126 __IO uint8_t MaxRdCurrentVDDMax;
127 __IO uint8_t MaxWrCurrentVDDMin;
128 __IO uint8_t MaxWrCurrentVDDMax;
129 __IO uint8_t DeviceSizeMul;
130 __IO uint8_t EraseGrSize;
131 __IO uint8_t EraseGrMul;
132 __IO uint8_t WrProtectGrSize;
133 __IO uint8_t WrProtectGrEnable;
134 __IO uint8_t ManDeflECC;
135 __IO uint8_t WrSpeedFact;
136 __IO uint8_t MaxWrBlockLen;
137 __IO uint8_t WriteBlockPaPartial;
138 __IO uint8_t Reserved3;
139 __IO uint8_t ContentProtectAppli;
140 __IO uint8_t FileFormatGrouop;
141 __IO uint8_t CopyFlag;
142 __IO uint8_t PermWrProtect;
143 __IO uint8_t TempWrProtect;
144 __IO uint8_t FileFormat;
146 __IO uint8_t CSD_CRC;
147 __IO uint8_t Reserved4;
159 __IO uint8_t ManufacturerID;
160 __IO uint16_t OEM_AppliID;
161 __IO uint32_t ProdName1;
162 __IO uint8_t ProdName2;
163 __IO uint8_t ProdRev;
164 __IO uint32_t ProdSN;
165 __IO uint8_t Reserved1;
166 __IO uint16_t ManufactDate;
167 __IO uint8_t CID_CRC;
168 __IO uint8_t Reserved2;
180 __IO uint8_t DAT_BUS_WIDTH;
181 __IO uint8_t SECURED_MODE;
182 __IO uint16_t SD_CARD_TYPE;
183 __IO uint32_t SIZE_OF_PROTECTED_AREA;
184 __IO uint8_t SPEED_CLASS;
185 __IO uint8_t PERFORMANCE_MOVE;
186 __IO uint8_t AU_SIZE;
187 __IO uint16_t ERASE_SIZE;
188 __IO uint8_t ERASE_TIMEOUT;
189 __IO uint8_t ERASE_OFFSET;
191 }HAL_SD_CardStatusTypedef;
201 HAL_SD_CSDTypedef SD_csd;
202 HAL_SD_CIDTypedef SD_cid;
203 uint64_t CardCapacity;
204 uint32_t CardBlockSize;
208 }HAL_SD_CardInfoTypedef;
221 SD_CMD_CRC_FAIL = (1U),
222 SD_DATA_CRC_FAIL = (2U),
223 SD_CMD_RSP_TIMEOUT = (3U),
224 SD_DATA_TIMEOUT = (4U),
225 SD_TX_UNDERRUN = (5U),
226 SD_RX_OVERRUN = (6U),
227 SD_START_BIT_ERR = (7U),
228 SD_CMD_OUT_OF_RANGE = (8U),
229 SD_ADDR_MISALIGNED = (9U),
230 SD_BLOCK_LEN_ERR = (10U),
231 SD_ERASE_SEQ_ERR = (11U),
232 SD_BAD_ERASE_PARAM = (12U),
233 SD_WRITE_PROT_VIOLATION = (13U),
234 SD_LOCK_UNLOCK_FAILED = (14U),
235 SD_COM_CRC_FAILED = (15U),
236 SD_ILLEGAL_CMD = (16U),
237 SD_CARD_ECC_FAILED = (17U),
239 SD_GENERAL_UNKNOWN_ERROR = (19U),
240 SD_STREAM_READ_UNDERRUN = (20U),
241 SD_STREAM_WRITE_OVERRUN = (21U),
242 SD_CID_CSD_OVERWRITE = (22U),
243 SD_WP_ERASE_SKIP = (23U),
244 SD_CARD_ECC_DISABLED = (24U),
245 SD_ERASE_RESET = (25U),
246 SD_AKE_SEQ_ERROR = (26U),
247 SD_INVALID_VOLTRANGE = (27U),
248 SD_ADDR_OUT_OF_RANGE = (28U),
249 SD_SWITCH_ERROR = (29U),
250 SD_SDIO_DISABLED = (30U),
251 SD_SDIO_FUNCTION_BUSY = (31U),
252 SD_SDIO_FUNCTION_FAILED = (32U),
253 SD_SDIO_UNKNOWN_FUNCTION = (33U),
258 SD_INTERNAL_ERROR = (34U),
259 SD_NOT_CONFIGURED = (35U),
260 SD_REQUEST_PENDING = (36U),
261 SD_REQUEST_NOT_APPLICABLE = (37U),
262 SD_INVALID_PARAMETER = (38U),
263 SD_UNSUPPORTED_FEATURE = (39U),
264 SD_UNSUPPORTED_HW = (40U),
268 }HAL_SD_ErrorTypedef;
279 SD_TRANSFER_BUSY = 1U,
280 SD_TRANSFER_ERROR = 2U
282 }HAL_SD_TransferStateTypedef;
292 SD_CARD_READY = ((uint32_t)0x00000001U),
293 SD_CARD_IDENTIFICATION = ((uint32_t)0x00000002U),
294 SD_CARD_STANDBY = ((uint32_t)0x00000003U),
295 SD_CARD_TRANSFER = ((uint32_t)0x00000004U),
296 SD_CARD_SENDING = ((uint32_t)0x00000005U),
297 SD_CARD_RECEIVING = ((uint32_t)0x00000006U),
298 SD_CARD_PROGRAMMING = ((uint32_t)0x00000007U),
299 SD_CARD_DISCONNECTED = ((uint32_t)0x00000008U),
300 SD_CARD_ERROR = ((uint32_t)0x000000FFU)
302 }HAL_SD_CardStateTypedef;
312 SD_READ_SINGLE_BLOCK = 0U,
313 SD_READ_MULTIPLE_BLOCK = 1U,
314 SD_WRITE_SINGLE_BLOCK = 2U,
315 SD_WRITE_MULTIPLE_BLOCK = 3U
317 }HAL_SD_OperationTypedef;
334 #define SD_CMD_GO_IDLE_STATE ((uint8_t)0U) 335 #define SD_CMD_SEND_OP_COND ((uint8_t)1U) 336 #define SD_CMD_ALL_SEND_CID ((uint8_t)2U) 337 #define SD_CMD_SET_REL_ADDR ((uint8_t)3U) 338 #define SD_CMD_SET_DSR ((uint8_t)4U) 339 #define SD_CMD_SDIO_SEN_OP_COND ((uint8_t)5U) 341 #define SD_CMD_HS_SWITCH ((uint8_t)6U) 342 #define SD_CMD_SEL_DESEL_CARD ((uint8_t)7U) 343 #define SD_CMD_HS_SEND_EXT_CSD ((uint8_t)8U) 345 #define SD_CMD_SEND_CSD ((uint8_t)9U) 346 #define SD_CMD_SEND_CID ((uint8_t)10U) 347 #define SD_CMD_READ_DAT_UNTIL_STOP ((uint8_t)11U) 348 #define SD_CMD_STOP_TRANSMISSION ((uint8_t)12U) 349 #define SD_CMD_SEND_STATUS ((uint8_t)13U) 350 #define SD_CMD_HS_BUSTEST_READ ((uint8_t)14U) 351 #define SD_CMD_GO_INACTIVE_STATE ((uint8_t)15U) 352 #define SD_CMD_SET_BLOCKLEN ((uint8_t)16U) 355 #define SD_CMD_READ_SINGLE_BLOCK ((uint8_t)17U) 357 #define SD_CMD_READ_MULT_BLOCK ((uint8_t)18U) 359 #define SD_CMD_HS_BUSTEST_WRITE ((uint8_t)19U) 360 #define SD_CMD_WRITE_DAT_UNTIL_STOP ((uint8_t)20U) 361 #define SD_CMD_SET_BLOCK_COUNT ((uint8_t)23U) 362 #define SD_CMD_WRITE_SINGLE_BLOCK ((uint8_t)24U) 364 #define SD_CMD_WRITE_MULT_BLOCK ((uint8_t)25U) 365 #define SD_CMD_PROG_CID ((uint8_t)26U) 366 #define SD_CMD_PROG_CSD ((uint8_t)27U) 367 #define SD_CMD_SET_WRITE_PROT ((uint8_t)28U) 368 #define SD_CMD_CLR_WRITE_PROT ((uint8_t)29U) 369 #define SD_CMD_SEND_WRITE_PROT ((uint8_t)30U) 370 #define SD_CMD_SD_ERASE_GRP_START ((uint8_t)32U) 371 #define SD_CMD_SD_ERASE_GRP_END ((uint8_t)33U) 372 #define SD_CMD_ERASE_GRP_START ((uint8_t)35U) 374 #define SD_CMD_ERASE_GRP_END ((uint8_t)36U) 376 #define SD_CMD_ERASE ((uint8_t)38U) 377 #define SD_CMD_FAST_IO ((uint8_t)39U) 378 #define SD_CMD_GO_IRQ_STATE ((uint8_t)40U) 379 #define SD_CMD_LOCK_UNLOCK ((uint8_t)42U) 381 #define SD_CMD_APP_CMD ((uint8_t)55U) 383 #define SD_CMD_GEN_CMD ((uint8_t)56U) 385 #define SD_CMD_NO_CMD ((uint8_t)64U) 391 #define SD_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6U) 393 #define SD_CMD_SD_APP_STATUS ((uint8_t)13U) 394 #define SD_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS ((uint8_t)22U) 396 #define SD_CMD_SD_APP_OP_COND ((uint8_t)41U) 398 #define SD_CMD_SD_APP_SET_CLR_CARD_DETECT ((uint8_t)42U) 399 #define SD_CMD_SD_APP_SEND_SCR ((uint8_t)51U) 400 #define SD_CMD_SDIO_RW_DIRECT ((uint8_t)52U) 401 #define SD_CMD_SDIO_RW_EXTENDED ((uint8_t)53U) 407 #define SD_CMD_SD_APP_GET_MKB ((uint8_t)43U) 408 #define SD_CMD_SD_APP_GET_MID ((uint8_t)44U) 409 #define SD_CMD_SD_APP_SET_CER_RN1 ((uint8_t)45U) 410 #define SD_CMD_SD_APP_GET_CER_RN2 ((uint8_t)46U) 411 #define SD_CMD_SD_APP_SET_CER_RES2 ((uint8_t)47U) 412 #define SD_CMD_SD_APP_GET_CER_RES1 ((uint8_t)48U) 413 #define SD_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18U) 414 #define SD_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK ((uint8_t)25U) 415 #define SD_CMD_SD_APP_SECURE_ERASE ((uint8_t)38U) 416 #define SD_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49U) 417 #define SD_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48U) 422 #define STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x00000000U) 423 #define STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x00000001U) 424 #define HIGH_CAPACITY_SD_CARD ((uint32_t)0x00000002U) 425 #define MULTIMEDIA_CARD ((uint32_t)0x00000003U) 426 #define SECURE_DIGITAL_IO_CARD ((uint32_t)0x00000004U) 427 #define HIGH_SPEED_MULTIMEDIA_CARD ((uint32_t)0x00000005U) 428 #define SECURE_DIGITAL_IO_COMBO_CARD ((uint32_t)0x00000006U) 429 #define HIGH_CAPACITY_MMC_CARD ((uint32_t)0x00000007U) 444 #define __HAL_SD_SDIO_ENABLE() __SDIO_ENABLE() 450 #define __HAL_SD_SDIO_DISABLE() __SDIO_DISABLE() 456 #define __HAL_SD_SDIO_DMA_ENABLE() __SDIO_DMA_ENABLE() 462 #define __HAL_SD_SDIO_DMA_DISABLE() __SDIO_DMA_DISABLE() 496 #define __HAL_SD_SDIO_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDIO_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 530 #define __HAL_SD_SDIO_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDIO_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 563 #define __HAL_SD_SDIO_GET_FLAG(__HANDLE__, __FLAG__) __SDIO_GET_FLAG((__HANDLE__)->Instance, (__FLAG__)) 585 #define __HAL_SD_SDIO_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDIO_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__)) 619 #define __HAL_SD_SDIO_GET_IT (__HANDLE__, __INTERRUPT__) __SDIO_GET_IT ((__HANDLE__)->Instance, __INTERRUPT__) 641 #define __HAL_SD_SDIO_CLEAR_IT(__HANDLE__, __INTERRUPT__) __SDIO_CLEAR_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 654 HAL_SD_ErrorTypedef HAL_SD_Init(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *SDCardInfo);
656 void HAL_SD_MspInit(SD_HandleTypeDef *hsd);
657 void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd);
666 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
667 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
668 HAL_SD_ErrorTypedef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint64_t startaddr, uint64_t endaddr);
671 void HAL_SD_IRQHandler(SD_HandleTypeDef *hsd);
678 void HAL_SD_XferCpltCallback(SD_HandleTypeDef *hsd);
679 void HAL_SD_XferErrorCallback(SD_HandleTypeDef *hsd);
682 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
683 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
684 HAL_SD_ErrorTypedef HAL_SD_CheckWriteOperation(SD_HandleTypeDef *hsd, uint32_t Timeout);
685 HAL_SD_ErrorTypedef HAL_SD_CheckReadOperation(SD_HandleTypeDef *hsd, uint32_t Timeout);
693 HAL_SD_ErrorTypedef HAL_SD_Get_CardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *pCardInfo);
694 HAL_SD_ErrorTypedef HAL_SD_WideBusOperation_Config(SD_HandleTypeDef *hsd, uint32_t WideMode);
695 HAL_SD_ErrorTypedef HAL_SD_StopTransfer(SD_HandleTypeDef *hsd);
696 HAL_SD_ErrorTypedef HAL_SD_HighSpeed (SD_HandleTypeDef *hsd);
705 HAL_SD_ErrorTypedef HAL_SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus);
706 HAL_SD_ErrorTypedef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypedef *pCardStatus);
707 HAL_SD_TransferStateTypedef HAL_SD_GetStatus(SD_HandleTypeDef *hsd);
Header file of SDMMC HAL module.
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f4xx_hal_def.h:57
#define __IO
Definition: core_cm0.h:213
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32f4xx_hal_def.h:68
DMA handle Structure definition.
Definition: stm32f4xx_hal_dma.h:157