STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
stm32f7xx_hal_sd.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F7xx_HAL_SD_H
40 #define __STM32F7xx_HAL_SD_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f7xx_ll_sdmmc.h"
48 
58 /* Exported types ------------------------------------------------------------*/
66 #define SD_InitTypeDef SDMMC_InitTypeDef
67 #define SD_TypeDef SDMMC_TypeDef
68 
69 typedef struct
70 {
77  uint32_t CardType;
79  uint32_t RCA;
81  uint32_t CSD[4];
83  uint32_t CID[4];
85  __IO uint32_t SdTransferCplt;
87  __IO uint32_t SdTransferErr;
89  __IO uint32_t DmaTransferCplt;
91  __IO uint32_t SdOperation;
105 typedef struct
106 {
107  __IO uint8_t CSDStruct;
109  __IO uint8_t Reserved1;
110  __IO uint8_t TAAC;
111  __IO uint8_t NSAC;
112  __IO uint8_t MaxBusClkFrec;
114  __IO uint8_t RdBlockLen;
115  __IO uint8_t PartBlockRead;
118  __IO uint8_t DSRImpl;
119  __IO uint8_t Reserved2;
120  __IO uint32_t DeviceSize;
125  __IO uint8_t DeviceSizeMul;
126  __IO uint8_t EraseGrSize;
127  __IO uint8_t EraseGrMul;
130  __IO uint8_t ManDeflECC;
131  __IO uint8_t WrSpeedFact;
132  __IO uint8_t MaxWrBlockLen;
134  __IO uint8_t Reserved3;
137  __IO uint8_t CopyFlag;
138  __IO uint8_t PermWrProtect;
139  __IO uint8_t TempWrProtect;
140  __IO uint8_t FileFormat;
141  __IO uint8_t ECC;
142  __IO uint8_t CSD_CRC;
143  __IO uint8_t Reserved4;
153 typedef struct
154 {
156  __IO uint16_t OEM_AppliID;
157  __IO uint32_t ProdName1;
158  __IO uint8_t ProdName2;
159  __IO uint8_t ProdRev;
160  __IO uint32_t ProdSN;
161  __IO uint8_t Reserved1;
162  __IO uint16_t ManufactDate;
163  __IO uint8_t CID_CRC;
164  __IO uint8_t Reserved2;
174 typedef struct
175 {
176  __IO uint8_t DAT_BUS_WIDTH;
177  __IO uint8_t SECURED_MODE;
178  __IO uint16_t SD_CARD_TYPE;
180  __IO uint8_t SPEED_CLASS;
182  __IO uint8_t AU_SIZE;
183  __IO uint16_t ERASE_SIZE;
184  __IO uint8_t ERASE_TIMEOUT;
185  __IO uint8_t ERASE_OFFSET;
195 typedef struct
196 {
199  uint64_t CardCapacity;
200  uint32_t CardBlockSize;
201  uint16_t RCA;
202  uint8_t CardType;
212 typedef enum
213 {
232  SD_ILLEGAL_CMD = (16),
234  SD_CC_ERROR = (18),
241  SD_ERASE_RESET = (25),
250 
261  SD_ERROR = (41),
262  SD_OK = (0)
263 
272 typedef enum
273 {
286 typedef enum
287 {
288  SD_CARD_READY = ((uint32_t)0x00000001U),
289  SD_CARD_IDENTIFICATION = ((uint32_t)0x00000002U),
290  SD_CARD_STANDBY = ((uint32_t)0x00000003U),
291  SD_CARD_TRANSFER = ((uint32_t)0x00000004U),
292  SD_CARD_SENDING = ((uint32_t)0x00000005U),
293  SD_CARD_RECEIVING = ((uint32_t)0x00000006U),
294  SD_CARD_PROGRAMMING = ((uint32_t)0x00000007U),
295  SD_CARD_DISCONNECTED = ((uint32_t)0x00000008U),
296  SD_CARD_ERROR = ((uint32_t)0x000000FFU)
306 typedef enum
307 {
322 /* Exported constants --------------------------------------------------------*/
330 #define SD_CMD_GO_IDLE_STATE ((uint8_t)0U)
331 #define SD_CMD_SEND_OP_COND ((uint8_t)1U)
332 #define SD_CMD_ALL_SEND_CID ((uint8_t)2U)
333 #define SD_CMD_SET_REL_ADDR ((uint8_t)3U)
334 #define SD_CMD_SET_DSR ((uint8_t)4U)
335 #define SD_CMD_SDMMC_SEN_OP_COND ((uint8_t)5U)
337 #define SD_CMD_HS_SWITCH ((uint8_t)6U)
338 #define SD_CMD_SEL_DESEL_CARD ((uint8_t)7U)
339 #define SD_CMD_HS_SEND_EXT_CSD ((uint8_t)8U)
341 #define SD_CMD_SEND_CSD ((uint8_t)9U)
342 #define SD_CMD_SEND_CID ((uint8_t)10U)
343 #define SD_CMD_READ_DAT_UNTIL_STOP ((uint8_t)11U)
344 #define SD_CMD_STOP_TRANSMISSION ((uint8_t)12U)
345 #define SD_CMD_SEND_STATUS ((uint8_t)13U)
346 #define SD_CMD_HS_BUSTEST_READ ((uint8_t)14U)
347 #define SD_CMD_GO_INACTIVE_STATE ((uint8_t)15U)
348 #define SD_CMD_SET_BLOCKLEN ((uint8_t)16U)
351 #define SD_CMD_READ_SINGLE_BLOCK ((uint8_t)17U)
353 #define SD_CMD_READ_MULT_BLOCK ((uint8_t)18U)
355 #define SD_CMD_HS_BUSTEST_WRITE ((uint8_t)19U)
356 #define SD_CMD_WRITE_DAT_UNTIL_STOP ((uint8_t)20U)
357 #define SD_CMD_SET_BLOCK_COUNT ((uint8_t)23U)
358 #define SD_CMD_WRITE_SINGLE_BLOCK ((uint8_t)24U)
360 #define SD_CMD_WRITE_MULT_BLOCK ((uint8_t)25U)
361 #define SD_CMD_PROG_CID ((uint8_t)26U)
362 #define SD_CMD_PROG_CSD ((uint8_t)27U)
363 #define SD_CMD_SET_WRITE_PROT ((uint8_t)28U)
364 #define SD_CMD_CLR_WRITE_PROT ((uint8_t)29U)
365 #define SD_CMD_SEND_WRITE_PROT ((uint8_t)30U)
366 #define SD_CMD_SD_ERASE_GRP_START ((uint8_t)32U)
367 #define SD_CMD_SD_ERASE_GRP_END ((uint8_t)33U)
368 #define SD_CMD_ERASE_GRP_START ((uint8_t)35U)
370 #define SD_CMD_ERASE_GRP_END ((uint8_t)36U)
372 #define SD_CMD_ERASE ((uint8_t)38U)
373 #define SD_CMD_FAST_IO ((uint8_t)39U)
374 #define SD_CMD_GO_IRQ_STATE ((uint8_t)40U)
375 #define SD_CMD_LOCK_UNLOCK ((uint8_t)42U)
377 #define SD_CMD_APP_CMD ((uint8_t)55U)
379 #define SD_CMD_GEN_CMD ((uint8_t)56U)
381 #define SD_CMD_NO_CMD ((uint8_t)64U)
387 #define SD_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6U)
389 #define SD_CMD_SD_APP_STATUS ((uint8_t)13U)
390 #define SD_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS ((uint8_t)22U)
392 #define SD_CMD_SD_APP_OP_COND ((uint8_t)41U)
394 #define SD_CMD_SD_APP_SET_CLR_CARD_DETECT ((uint8_t)42U)
395 #define SD_CMD_SD_APP_SEND_SCR ((uint8_t)51U)
396 #define SD_CMD_SDMMC_RW_DIRECT ((uint8_t)52U)
397 #define SD_CMD_SDMMC_RW_EXTENDED ((uint8_t)53U)
403 #define SD_CMD_SD_APP_GET_MKB ((uint8_t)43U)
404 #define SD_CMD_SD_APP_GET_MID ((uint8_t)44U)
405 #define SD_CMD_SD_APP_SET_CER_RN1 ((uint8_t)45U)
406 #define SD_CMD_SD_APP_GET_CER_RN2 ((uint8_t)46U)
407 #define SD_CMD_SD_APP_SET_CER_RES2 ((uint8_t)47U)
408 #define SD_CMD_SD_APP_GET_CER_RES1 ((uint8_t)48U)
409 #define SD_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18U)
410 #define SD_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK ((uint8_t)25U)
411 #define SD_CMD_SD_APP_SECURE_ERASE ((uint8_t)38U)
412 #define SD_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49U)
413 #define SD_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48U)
418 #define STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x00000000U)
419 #define STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x00000001U)
420 #define HIGH_CAPACITY_SD_CARD ((uint32_t)0x00000002U)
421 #define MULTIMEDIA_CARD ((uint32_t)0x00000003U)
422 #define SECURE_DIGITAL_IO_CARD ((uint32_t)0x00000004U)
423 #define HIGH_SPEED_MULTIMEDIA_CARD ((uint32_t)0x00000005U)
424 #define SECURE_DIGITAL_IO_COMBO_CARD ((uint32_t)0x00000006U)
425 #define HIGH_CAPACITY_MMC_CARD ((uint32_t)0x00000007U)
430 /* Exported macro ------------------------------------------------------------*/
440 #define __HAL_SD_SDMMC_ENABLE(__HANDLE__) __SDMMC_ENABLE((__HANDLE__)->Instance)
441 
446 #define __HAL_SD_SDMMC_DISABLE(__HANDLE__) __SDMMC_DISABLE((__HANDLE__)->Instance)
447 
452 #define __HAL_SD_SDMMC_DMA_ENABLE(__HANDLE__) __SDMMC_DMA_ENABLE((__HANDLE__)->Instance)
453 
458 #define __HAL_SD_SDMMC_DMA_DISABLE(__HANDLE__) __SDMMC_DMA_DISABLE((__HANDLE__)->Instance)
459 
489 #define __HAL_SD_SDMMC_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
490 
520 #define __HAL_SD_SDMMC_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
521 
551 #define __HAL_SD_SDMMC_GET_FLAG(__HANDLE__, __FLAG__) __SDMMC_GET_FLAG((__HANDLE__)->Instance, (__FLAG__))
552 
571 #define __HAL_SD_SDMMC_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDMMC_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__))
572 
602 #define __HAL_SD_SDMMC_GET_IT(__HANDLE__, __INTERRUPT__) __SDMMC_GET_IT((__HANDLE__)->Instance, (__INTERRUPT__))
603 
621 #define __HAL_SD_SDMMC_CLEAR_IT(__HANDLE__, __INTERRUPT__) __SDMMC_CLEAR_IT((__HANDLE__)->Instance, (__INTERRUPT__))
622 
626 /* Exported functions --------------------------------------------------------*/
645 /* Blocking mode: Polling */
646 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
647 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
648 HAL_SD_ErrorTypedef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint64_t startaddr, uint64_t endaddr);
649 
650 /* Non-Blocking mode: Interrupt */
652 
653 /* Callback in non blocking modes (DMA) */
660 
661 /* Non-Blocking mode: DMA */
662 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
663 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
681 /* Peripheral State functions ************************************************/
685 HAL_SD_ErrorTypedef HAL_SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus);
696 /* Private types -------------------------------------------------------------*/
705 /* Private defines -----------------------------------------------------------*/
714 /* Private variables ---------------------------------------------------------*/
723 /* Private constants ---------------------------------------------------------*/
732 /* Private macros ------------------------------------------------------------*/
741 /* Private functions prototypes ----------------------------------------------*/
750 /* Private functions ---------------------------------------------------------*/
767 #ifdef __cplusplus
768 }
769 #endif
770 
771 
772 #endif /* __STM32F7xx_HAL_SD_H */
773 
774 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
__IO uint8_t MaxRdCurrentVDDMax
__IO uint32_t SdOperation
#define SD_InitTypeDef
__IO uint8_t MaxWrCurrentVDDMin
__IO uint32_t SdTransferCplt
__IO uint32_t SIZE_OF_PROTECTED_AREA
__IO uint32_t ProdName1
HAL_SD_ErrorTypedef
__IO uint32_t DmaTransferCplt
__IO uint8_t MaxBusClkFrec
HAL_SD_CIDTypedef SD_cid
HAL_SD_ErrorTypedef HAL_SD_WideBusOperation_Config(SD_HandleTypeDef *hsd, uint32_t WideMode)
__IO uint8_t WrBlockMisalign
__IO uint8_t EraseGrMul
__IO uint8_t MaxRdCurrentVDDMin
__IO uint8_t ProdName2
HAL_SD_ErrorTypedef HAL_SD_CheckReadOperation(SD_HandleTypeDef *hsd, uint32_t Timeout)
__IO uint8_t MaxWrCurrentVDDMax
SD specific error defines.
__IO uint8_t WriteBlockPaPartial
void HAL_SD_XferErrorCallback(SD_HandleTypeDef *hsd)
HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks)
__IO uint8_t RdBlockLen
__IO uint8_t CSDStruct
__IO uint32_t DeviceSize
__IO uint8_t FileFormatGrouop
HAL_SD_ErrorTypedef HAL_SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus)
__IO uint8_t WrProtectGrEnable
HAL_LockTypeDef
HAL Lock structures definition.
HAL_SD_OperationTypedef
HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks)
__IO uint8_t FileFormat
#define SD_TypeDef
HAL_SD_ErrorTypedef HAL_SD_Init(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *SDCardInfo)
HAL_SD_ErrorTypedef HAL_SD_Get_CardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *pCardInfo)
__IO uint8_t ContentProtectAppli
void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd)
__IO uint32_t ProdSN
__IO uint8_t ProdRev
__IO uint8_t Reserved2
void HAL_SD_DMA_TxCpltCallback(DMA_HandleTypeDef *hdma)
__IO uint8_t CID_CRC
__IO uint8_t MaxWrBlockLen
HAL_SD_TransferStateTypedef
HAL_SD_TransferStateTypedef HAL_SD_GetStatus(SD_HandleTypeDef *hsd)
__IO uint32_t SdTransferErr
__IO uint8_t Reserved2
void HAL_SD_DMA_TxErrorCallback(DMA_HandleTypeDef *hdma)
#define __IO
Definition: core_cm0.h:213
__IO uint8_t WrProtectGrSize
HAL_StatusTypeDef HAL_SD_DeInit(SD_HandleTypeDef *hsd)
__IO uint8_t DeviceSizeMul
HAL_SD_CSDTypedef SD_csd
Standard error defines.
__IO uint8_t TempWrProtect
HAL_SD_ErrorTypedef HAL_SD_HighSpeed(SD_HandleTypeDef *hsd)
HAL_SD_ErrorTypedef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint64_t startaddr, uint64_t endaddr)
HAL_SD_ErrorTypedef HAL_SD_CheckWriteOperation(SD_HandleTypeDef *hsd, uint32_t Timeout)
__IO uint8_t Reserved3
__IO uint8_t Reserved4
__IO uint8_t CSD_CRC
void HAL_SD_DMA_RxErrorCallback(DMA_HandleTypeDef *hdma)
HAL_SD_CardStateTypedef
__IO uint8_t WrSpeedFact
__IO uint8_t CopyFlag
__IO uint8_t PermWrProtect
__IO uint16_t OEM_AppliID
DMA_HandleTypeDef * hdmatx
__IO uint8_t SysSpecVersion
__IO uint8_t EraseGrSize
__IO uint16_t CardComdClasses
void HAL_SD_MspInit(SD_HandleTypeDef *hsd)
void HAL_SD_DMA_RxCpltCallback(DMA_HandleTypeDef *hdma)
__IO uint8_t Reserved1
__IO uint8_t RdBlockMisalign
HAL_SD_ErrorTypedef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypedef *pCardStatus)
HAL_SD_ErrorTypedef HAL_SD_StopTransfer(SD_HandleTypeDef *hsd)
__IO uint8_t ManufacturerID
DMA handle Structure definition.
HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks)
__IO uint8_t Reserved1
HAL_LockTypeDef Lock
__IO uint8_t DSRImpl
__IO uint8_t ManDeflECC
HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks)
Header file of SDMMC HAL module.
SD_InitTypeDef Init
__IO uint8_t PartBlockRead
HAL_StatusTypeDef
HAL Status structures definition.
SD_TypeDef * Instance
DMA_HandleTypeDef * hdmarx
__IO uint16_t ManufactDate
void HAL_SD_XferCpltCallback(SD_HandleTypeDef *hsd)
void HAL_SD_IRQHandler(SD_HandleTypeDef *hsd)