602 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			602 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|   **********************************************************************************************************************
 | |
|   * @file    stm32h7xx_hal_sdio.h
 | |
|   * @author  MCD Application Team
 | |
|   * @brief   Header file of SDIO HAL module.
 | |
|   **********************************************************************************************************************
 | |
|   * @attention
 | |
|   *
 | |
|   * Copyright (c) 2017 STMicroelectronics.
 | |
|   * All rights reserved.
 | |
|   *
 | |
|   * This software is licensed under terms that can be found in the LICENSE file
 | |
|   * in the root directory of this software component.
 | |
|   * If no LICENSE file comes with this software, it is provided AS-IS.
 | |
|   *
 | |
|   **********************************************************************************************************************
 | |
|   */
 | |
| 
 | |
| /* Define to prevent recursive inclusion -----------------------------------------------------------------------------*/
 | |
| #ifndef STM32H7xx_HAL_SDIO_H
 | |
| #define STM32H7xx_HAL_SDIO_H
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /* Includes ----------------------------------------------------------------------------------------------------------*/
 | |
| #include "stm32h7xx_ll_sdmmc.h"
 | |
| 
 | |
| /** @addtogroup STM32U5xx_HAL_Driver
 | |
|   * @{
 | |
|   */
 | |
| #if defined (SDMMC1) || defined (SDMMC2)
 | |
| 
 | |
| /** @defgroup SDIO SDIO
 | |
|   * @brief SDIO HAL module driver
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /* Exported types ----------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Exported_Types SDIO Exported Types
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Types_Group1 SDIO State enumeration structure
 | |
|   * @{
 | |
| 
 | |
|   */
 | |
| typedef enum
 | |
| {
 | |
|   HAL_SDIO_STATE_RESET = 0x00U, /*!< SDIO not yet initialized or disabled */
 | |
|   HAL_SDIO_STATE_READY = 0x01U, /*!< SDIO initialized and ready for us    */
 | |
|   HAL_SDIO_STATE_BUSY  = 0x02U, /*!< SDIO process ongoing                 */
 | |
| } HAL_SDIO_StateTypeDef;
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Types_Group2 SDIO Handle and Structure definition
 | |
|   * @{
 | |
|   */
 | |
| /**
 | |
|   * @brief  SDIO Card Common Control Register Structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint8_t sdio_revision;     /*!< SDIO revision                */
 | |
|   uint8_t cccr_revision;     /*!< CCCR version                 */
 | |
|   uint8_t sd_spec_revision;  /*!< SD revision                  */
 | |
|   uint8_t bus_width_8Bit;    /*!< SDIO bus width 8 bit support */
 | |
|   uint32_t card_capability;  /*!< SDIO card capability         */
 | |
|   uint32_t commonCISPointer; /*!< point to common CIS          */
 | |
| } HAL_SDIO_CCCR_TypeDef;
 | |
| 
 | |
| /**
 | |
|   * @brief sdio card FBR register(Function Basic Register)
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint8_t flags;             /*!< SDIO current IO flags                  */
 | |
|   uint8_t ioStdFunctionCode; /*!< SDIO current IO standard function code */
 | |
|   uint8_t ioExtFunctionCode; /*!< SDIO current IO extended function code */
 | |
|   uint32_t ioPointerToCIS;   /*!< SDIO current IO pointer to CIS         */
 | |
|   uint32_t ioPointerToCSA;   /*!< SDIO current IO pointer to CSA         */
 | |
| } HAL_SDIO_FBR_t;
 | |
| 
 | |
| /**
 | |
|   * @brief  SDIO CMD52 Structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t Reg_Addr;       /*!< This is the address of the byte of data inside of the selected function to read or write */
 | |
|   uint8_t  ReadAfterWrite; /*!< This is the read after write flag, it is used for write access only.                     */
 | |
|   uint8_t  IOFunctionNbr;  /*!< The number of the function within the IO card you wish to read or write                  */
 | |
| } HAL_SDIO_DirectCmd_TypeDef;
 | |
| 
 | |
| /**
 | |
|   * @brief  SDIO CMD53 Structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t Reg_Addr;      /*!< This is the address of the byte of data inside of the selected function to read or write */
 | |
|   uint32_t OpCode;        /*!< Read/Write operation mode                                                                */
 | |
|   uint32_t Block_Mode;    /*!< Bytes or Blocks mode                                                                     */
 | |
|   uint32_t IOFunctionNbr; /*!< The number of the function within the IO card you wish to read or write                  */
 | |
| } HAL_SDIO_ExtendedCmd_TypeDef;
 | |
| 
 | |
| #define SDIO_InitTypeDef      SDMMC_InitTypeDef
 | |
| #define SDIO_TypeDef          SDMMC_TypeDef
 | |
| 
 | |
| /**
 | |
|   * @brief  SDIO handle Structure definition
 | |
|   */
 | |
| typedef struct __SDIO_HandleTypeDef
 | |
| {
 | |
|   SDIO_TypeDef                   *Instance;        /*!< SDIO registers base address                             */
 | |
| 
 | |
|   SDIO_InitTypeDef               Init;              /*!< SDIO required parameters                               */
 | |
| 
 | |
|   HAL_LockTypeDef                Lock;              /*!< SDIO locking object                                    */
 | |
| 
 | |
|   uint8_t                        *pTxBuffPtr;       /*!< Pointer to SDIO Tx transfer Buffer                     */
 | |
| 
 | |
|   uint32_t                       TxXferSize;        /*!< SDIO Tx Transfer size                                  */
 | |
| 
 | |
|   uint8_t                        *pRxBuffPtr;       /*!< Pointer to SDIO Rx transfer Buffer                     */
 | |
| 
 | |
|   uint32_t                       RxXferSize;        /*!< SDIO Rx Transfer size                                  */
 | |
| 
 | |
|   uint32_t                       remaining_data;    /*!< Remaining data to transfer                             */
 | |
| 
 | |
|   uint32_t                       next_data_addr;    /*!< SDIO Next data address                                 */
 | |
| 
 | |
|   __IO uint32_t                  next_reg_addr;     /*!< SDIO Next register address                             */
 | |
| 
 | |
|   uint16_t                       block_size;        /*!< SDIO Block size                                        */
 | |
| 
 | |
|   __IO uint32_t                  Context;           /*!< SDIO transfer context                                  */
 | |
| 
 | |
|   __IO HAL_SDIO_StateTypeDef     State;             /*!< SDIO card State                                        */
 | |
| 
 | |
|   __IO uint32_t                  ErrorCode;         /*!< SDIO Card Error codes                                  */
 | |
| 
 | |
|   uint8_t                        IOFunctionMask;    /*!< SDIO used to record current enabled io interrupt       */
 | |
| 
 | |
|   volatile uint8_t               IOInterruptNbr;    /*!< SDIO used to record total enabled io interrupt numbers */
 | |
| 
 | |
|   void (* SDIO_IOFunction_Callback[SDIO_MAX_IO_NUMBER])(struct __SDIO_HandleTypeDef *hsdio, uint32_t func);
 | |
| 
 | |
| #if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U)
 | |
|   void (* TxCpltCallback)(struct __SDIO_HandleTypeDef *hsdio);
 | |
|   void (* RxCpltCallback)(struct __SDIO_HandleTypeDef *hsdio);
 | |
|   void (* ErrorCallback)(struct __SDIO_HandleTypeDef *hsdio);
 | |
|   void (* MspInitCallback)(struct __SDIO_HandleTypeDef *hsdio);
 | |
|   void (* MspDeInitCallback)(struct __SDIO_HandleTypeDef *hsdio);
 | |
| #endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */
 | |
| 
 | |
| #if (USE_SDIO_TRANSCEIVER != 0U)
 | |
|   void (* DriveTransceiver_1_8V_Callback)(struct __SDIO_HandleTypeDef *hsdio, FlagStatus status);
 | |
| #endif /* USE_SDIO_TRANSCEIVER */
 | |
| 
 | |
|   HAL_StatusTypeDef(* SDIO_IdentifyCard)(struct __SDIO_HandleTypeDef *hsdio);
 | |
| 
 | |
| } SDIO_HandleTypeDef;
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U)
 | |
| /** @defgroup SDIO_Exported_Types_Group3 SDIO Callback ID enumeration definition
 | |
|   * @{
 | |
|   */
 | |
| typedef enum
 | |
| {
 | |
|   HAL_SDIO_TX_CPLT_CB_ID    = 0x00U,  /*!< SDIO Tx Complete Callback ID */
 | |
|   HAL_SDIO_RX_CPLT_CB_ID    = 0x01U,  /*!< SDIO Rx Complete Callback ID */
 | |
|   HAL_SDIO_ERROR_CB_ID      = 0x02U,  /*!< SDIO Error Callback ID       */
 | |
|   HAL_SDIO_MSP_INIT_CB_ID   = 0x10U,  /*!< SDIO MspInit Callback ID     */
 | |
|   HAL_SDIO_MSP_DEINIT_CB_ID = 0x11U   /*!< SDIO MspDeInit Callback ID   */
 | |
| } HAL_SDIO_CallbackIDTypeDef;
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Types_Group4 SDIO Callback pointer definition
 | |
|   * @{
 | |
|   */
 | |
| typedef void (*pSDIO_CallbackTypeDef)(SDIO_HandleTypeDef *hsdio);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */
 | |
| 
 | |
| #if (USE_SDIO_TRANSCEIVER != 0U)
 | |
| typedef void (*pSDIO_TransceiverCallbackTypeDef)(SDIO_HandleTypeDef *hsdio, FlagStatus status);
 | |
| #endif /* USE_SDIO_TRANSCEIVER */
 | |
| 
 | |
| typedef HAL_StatusTypeDef(*pSDIO_IdentifyCardCallbackTypeDef)(SDIO_HandleTypeDef *hsdio);
 | |
| typedef void (*HAL_SDIO_IOFunction_CallbackTypeDef)(SDIO_HandleTypeDef *hsdio, uint32_t func);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Exported constants ------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Exported_Constants SDIO Exported Constants
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group1 SDIO Error status Structure definition
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_ERROR_NONE             SDMMC_ERROR_NONE              /*!< No error                                    */
 | |
| #define HAL_SDIO_ERROR_DATA_CRC_FAIL    SDMMC_ERROR_DATA_CRC_FAIL     /*!< Data block sent/received (CRC check failed) */
 | |
| #define HAL_SDIO_ERROR_DATA_TIMEOUT     SDMMC_ERROR_DATA_TIMEOUT      /*!< Data timeout                                */
 | |
| #define HAL_SDIO_ERROR_TX_UNDERRUN      SDMMC_ERROR_TX_UNDERRUN       /*!< Transmit FIFO underrun                      */
 | |
| #define HAL_SDIO_ERROR_RX_OVERRUN       SDMMC_ERROR_RX_OVERRUN        /*!< Receive FIFO overrun                        */
 | |
| #define HAL_SDIO_ERROR_TIMEOUT          SDMMC_ERROR_TIMEOUT           /*!< Timeout error                               */
 | |
| #define HAL_SDIO_ERROR_INVALID_CALLBACK SDMMC_ERROR_INVALID_PARAMETER /*!< Invalid callback error                      */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group2 SDIO context enumeration
 | |
|   * @{
 | |
|   */
 | |
| #define SDIO_CONTEXT_NONE                 0x00U /*!< None                             */
 | |
| #define SDIO_CONTEXT_READ_SINGLE_BLOCK    0x01U /*!< Read single block operation      */
 | |
| #define SDIO_CONTEXT_READ_MULTIPLE_BLOCK  0x02U /*!< Read multiple blocks operation   */
 | |
| #define SDIO_CONTEXT_WRITE_SINGLE_BLOCK   0x10U /*!< Write single block operation     */
 | |
| #define SDIO_CONTEXT_WRITE_MULTIPLE_BLOCK 0x20U /*!< Write multiple blocks operation  */
 | |
| #define SDIO_CONTEXT_IT                   0x08U /*!< Process in Interrupt mode        */
 | |
| #define SDIO_CONTEXT_DMA                  0x80U /*!< Process in DMA mode              */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group3 SDIO Block mode enumeration
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_MODE_BYTE   SDMMC_SDIO_MODE_BYTE
 | |
| #define HAL_SDIO_MODE_BLOCK  SDMMC_SDIO_MODE_BLOCK
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group4 SDIO operation code enumeration
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_OP_CODE_NO_INC    SDMMC_SDIO_NO_INC
 | |
| #define HAL_SDIO_OP_CODE_AUTO_INC  SDMMC_SDIO_AUTO_INC
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group5 SDIO Read After Write(RAW) enumeration
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_WRITE_ONLY       SDMMC_SDIO_WO  /*!< SDIO Write only       */
 | |
| #define HAL_SDIO_READ_AFTER_WRITE SDMMC_SDIO_RAW /*!< SDIO Read after write */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group6 SDIO wire mode enumeration
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_1_WIRE_MODE   0U /*!< SDIO wire support 1 wire  */
 | |
| #define HAL_SDIO_4_WIRES_MODE  1U /*!< SDIO wire support 4 wires */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group7 SDIO Data block size enumeration
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_1BYTE     1U    /*!< SDIO data block size 1 byte    */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_2BYTE     2U    /*!< SDIO data block size 2 byte    */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_4BYTE     4U    /*!< SDIO data block size 4 byte    */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_8BYTE     8U    /*!< SDIO data block size 8 byte    */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_16BYTE    16U   /*!< SDIO data block size 16 byte   */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_32BYTE    32U   /*!< SDIO data block size 32 byte   */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_64BYTE    64U   /*!< SDIO data block size 64 byte   */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_128BYTE   128U  /*!< SDIO data block size 128 byte  */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_256BYTE   256U  /*!< SDIO data block size 256 byte  */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_512BYTE   512U  /*!< SDIO data block size 512 byte  */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_1024BYTE  1024U /*!< SDIO data block size 1024 byte */
 | |
| #define HAL_SDIO_DATA_BLOCK_SIZE_2048BYTE  2048U /*!< SDIO data block size 2048 byte */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group8 SDIO Bus Width enumeration
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_BUS_WIDTH_8BIT_NOT_SUPPORTED 0U /*!< SDIO bus width 8 bit is not supported */
 | |
| #define HAL_SDIO_BUS_WIDTH_8BIT_SUPPORTED     1U /*!< SDIO bus width 8 bit is supported     */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group9 SDIO Data rate definitions
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIOS_DATA_RATE_SDR12  0U /*!< SDIO Data rate SDR12 */
 | |
| #define HAL_SDIOS_DATA_RATE_SDR25  1U /*!< SDIO Data rate SDR25 */
 | |
| #define HAL_SDIOS_DATA_RATE_SDR50  2U /*!< SDIO Data rate SDR50 */
 | |
| #define HAL_SDIOS_DATA_RATE_DDR50  3U /*!< SDIO Data rate DDR50 */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group10 SDIO Functions definitions
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_FUNCTION_0  0U /*!< SDIO function 0 */
 | |
| #define HAL_SDIO_FUNCTION_1  1U /*!< SDIO function 1 */
 | |
| #define HAL_SDIO_FUNCTION_2  2U /*!< SDIO function 2 */
 | |
| #define HAL_SDIO_FUNCTION_3  3U /*!< SDIO function 3 */
 | |
| #define HAL_SDIO_FUNCTION_4  4U /*!< SDIO function 4 */
 | |
| #define HAL_SDIO_FUNCTION_5  5U /*!< SDIO function 5 */
 | |
| #define HAL_SDIO_FUNCTION_6  6U /*!< SDIO function 6 */
 | |
| #define HAL_SDIO_FUNCTION_7  7U /*!< SDIO function 7 */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Constansts_Group11 SDIO FBR definitions
 | |
|   * @{
 | |
|   */
 | |
| #define HAL_SDIO_FBR_SUPPORT_CSA             1U /*!< SDIO function support CSA             */
 | |
| #define HAL_SDIO_FBR_SUPPORT_POWER_SELECTION 1U /*!< SDIO function support power selection */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| /* Exported macro ----------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Exported_macros SDIO Exported Macros
 | |
|   *  @brief macros to handle interrupts and specific clock configurations
 | |
|   * @{
 | |
|   */
 | |
| /**
 | |
|   * @brief  Enable the SDIO device interrupt.
 | |
|   * @param  __HANDLE__ SDIO Handle.
 | |
|   * @param  __INTERRUPT__ specifies the SDMMC interrupt sources to be enabled.
 | |
|   *         This parameter can be one or a combination of @ref SDMMC_LL_Interrupt_sources.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_SDIO_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Disable the SDIO device interrupt.
 | |
|   * @param  __HANDLE__ SDIO Handle.
 | |
|   * @param  __INTERRUPT__ specifies the SDMMC interrupt sources to be disabled.
 | |
|   *          This parameter can be one or a combination of @ref SDMMC_LL_Interrupt_sources.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_SDIO_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Check whether the specified SDIO flag is set or not.
 | |
|   * @param  __HANDLE__ SDIO Handle.
 | |
|   * @param  __FLAG__ specifies the flag to check.
 | |
|   *          This parameter can be one of @ref SDMMC_LL_Flags.
 | |
|   * @retval The new state of SDIO FLAG (SET or RESET).
 | |
|   */
 | |
| #define __HAL_SDIO_GET_FLAG(__HANDLE__, __FLAG__) __SDMMC_GET_FLAG((__HANDLE__)->Instance, (__FLAG__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Clear the SDIO's pending flags.
 | |
|   * @param  __HANDLE__ SDIO Handle.
 | |
|   * @param  __FLAG__ specifies the flag to clear.
 | |
|   *          This parameter can be one or a combination of @ref SDMMC_LL_Flags.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_SDIO_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDMMC_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Check whether the specified SDIO interrupt has occurred or not.
 | |
|   * @param  __HANDLE__ SDIO Handle.
 | |
|   * @param  __INTERRUPT__ specifies the SDMMC interrupt source to check.
 | |
|   *          This parameter can be one of @ref SDMMC_LL_Interrupt_sources.
 | |
|   * @retval The new state of SDIO IT (SET or RESET).
 | |
|   */
 | |
| #define __HAL_SDIO_GET_IT(__HANDLE__, __INTERRUPT__) __SDMMC_GET_IT((__HANDLE__)->Instance, (__INTERRUPT__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Checks whether the specified SDIO interrupt is enabled or not.
 | |
|   * @param  __HANDLE__    : SDIO handle.
 | |
|   * @param  __INTERRUPT__ : specifies the SDMMC interrupt source to check.
 | |
|   * @retval The state of SDIO IT (SET or RESET).
 | |
|   */
 | |
| #define __HAL_SDIO_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
 | |
|   __SDMMC_GET_IT_SOURCE((__HANDLE__)->Instance, (__INTERRUPT__))
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Exported functions ------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Exported_Functions SDIO Exported Functions
 | |
|   * @{
 | |
|   */
 | |
| /** @defgroup SDIO_Exported_Functions_Group1 Initialization and de-initialization functions
 | |
|   * @{
 | |
|   */
 | |
| HAL_StatusTypeDef HAL_SDIO_Init(SDIO_HandleTypeDef *hsdio);
 | |
| HAL_StatusTypeDef HAL_SDIO_DeInit(SDIO_HandleTypeDef *hsdio);
 | |
| 
 | |
| void HAL_SDIO_MspInit(SDIO_HandleTypeDef *hsdio);
 | |
| void HAL_SDIO_MspDeInit(SDIO_HandleTypeDef *hsdio);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Functions_Group2 Peripheral Control functions
 | |
|   * @{
 | |
|   */
 | |
| HAL_StatusTypeDef HAL_SDIO_SetDataBusWidth(SDIO_HandleTypeDef *hsdio, uint32_t BusWide);
 | |
| HAL_StatusTypeDef HAL_SDIO_ConfigFrequency(SDIO_HandleTypeDef *hsdio, uint32_t ClockSpeed);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_SetBlockSize(SDIO_HandleTypeDef *hsdio, uint8_t function_nbr, uint16_t BlockSize);
 | |
| HAL_StatusTypeDef HAL_SDIO_SetSpeedMode(SDIO_HandleTypeDef *hsdio, uint32_t DataRate);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_CardReset(SDIO_HandleTypeDef *hsdio);
 | |
| HAL_StatusTypeDef HAL_SDIO_GetCardCommonControlRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CCCR_TypeDef *pCccr);
 | |
| HAL_StatusTypeDef HAL_SDIO_GetCardFBRRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_FBR_t *pFbr);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Functions_Group3 Process functions
 | |
|   * @{
 | |
|   */
 | |
| HAL_StatusTypeDef HAL_SDIO_ReadDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argument, uint8_t *pData);
 | |
| HAL_StatusTypeDef HAL_SDIO_WriteDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argument, uint8_t Data);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_ReadExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument,
 | |
|                                         uint8_t *pData, uint32_t Size_byte, uint32_t Timeout_Ms);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_WriteExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument,
 | |
|                                          uint8_t *pData, uint32_t Size_byte, uint32_t Timeout_Ms);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_ReadExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument,
 | |
|                                             uint8_t *pData, uint32_t Size_byte);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_WriteExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument,
 | |
|                                              uint8_t *pData, uint32_t Size_byte);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Functions_Group4 IRQHandler and callback functions
 | |
|   * @{
 | |
|   */
 | |
| void HAL_SDIO_IRQHandler(SDIO_HandleTypeDef *hsdio);
 | |
| 
 | |
| void HAL_SDIO_TxCpltCallback(SDIO_HandleTypeDef *hsdio);
 | |
| void HAL_SDIO_RxCpltCallback(SDIO_HandleTypeDef *hsdio);
 | |
| void HAL_SDIO_ErrorCallback(SDIO_HandleTypeDef *hsdio);
 | |
| void HAL_SDIO_IOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t func);
 | |
| #if (USE_SDIO_TRANSCEIVER != 0U)
 | |
| /* Callback to switch in 1.8V mode */
 | |
| void HAL_SDIO_DriveTransceiver_1_8V_Callback(SDIO_HandleTypeDef *hsdio, FlagStatus status);
 | |
| #endif /* USE_SDIO_TRANSCEIVER */
 | |
| 
 | |
| #if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U)
 | |
| HAL_StatusTypeDef HAL_SDIO_RegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef CallbackID,
 | |
|                                             pSDIO_CallbackTypeDef pCallback);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_UnRegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef CallbackID);
 | |
| #endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */
 | |
| 
 | |
| #if (USE_SDIO_TRANSCEIVER != 0U)
 | |
| HAL_StatusTypeDef HAL_SDIO_RegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio,
 | |
|                                                        pSDIO_TransceiverCallbackTypeDef pCallback);
 | |
| HAL_StatusTypeDef HAL_SDIO_UnRegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio);
 | |
| #endif /* USE_SDIO_TRANSCEIVER */
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_RegisterIOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction,
 | |
|                                                       HAL_SDIO_IOFunction_CallbackTypeDef pCallback);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_RegisterIdentifyCardCallback(SDIO_HandleTypeDef *hsdio,
 | |
|                                                         pSDIO_IdentifyCardCallbackTypeDef pCallback);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Functions_Group5 Peripheral State and Errors functions
 | |
|   * @{
 | |
|   */
 | |
| HAL_SDIO_StateTypeDef HAL_SDIO_GetState(const SDIO_HandleTypeDef *hsdio);
 | |
| uint32_t              HAL_SDIO_GetError(const SDIO_HandleTypeDef *hsdio);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup SDIO_Exported_Functions_Group6 Peripheral IO interrupt
 | |
|   * @{
 | |
|   */
 | |
| HAL_StatusTypeDef HAL_SDIO_EnableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction);
 | |
| HAL_StatusTypeDef HAL_SDIO_DisableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_EnableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction);
 | |
| HAL_StatusTypeDef HAL_SDIO_DisableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_SelectIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction);
 | |
| HAL_StatusTypeDef HAL_SDIO_AbortIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction);
 | |
| 
 | |
| HAL_StatusTypeDef HAL_SDIO_EnableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio);
 | |
| HAL_StatusTypeDef HAL_SDIO_DisableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio);
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private types -----------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Private_Types SDIO Private Types
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private defines ---------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Private_Defines SDIO Private Defines
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private variables -------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Private_Variables SDIO Private Variables
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private constants -------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Private_Constants SDIO Private Constants
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private macros ----------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Private_Macros SDIO Private Macros
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private functions prototypes --------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Private_Functions_Prototypes SDIO Private Functions Prototypes
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private functions -------------------------------------------------------------------------------------------------*/
 | |
| /** @defgroup SDIO_Private_Functions SDIO Private Functions
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SDMMC1 || SDMMC2 */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #endif /* STM32H7xx_HAL_SDIO_H */
 | |
| 
 |