1 /** 2 ********************************************************************************************************************** 3 * @file stm32n6xx_hal_sdio.h 4 * @author MCD Application Team 5 * @brief Header file of SDIO HAL module. 6 ********************************************************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2023 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ********************************************************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -----------------------------------------------------------------------------*/ 20 #ifndef STM32N6xx_HAL_SDIO_H 21 #define STM32N6xx_HAL_SDIO_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ----------------------------------------------------------------------------------------------------------*/ 28 #include "stm32n6xx_ll_sdmmc.h" 29 30 /** @addtogroup STM32U5xx_HAL_Driver 31 * @{ 32 */ 33 #if defined (SDMMC1) || defined (SDMMC2) 34 35 /** @defgroup SDIO SDIO 36 * @brief SDIO HAL module driver 37 * @{ 38 */ 39 40 /* Exported types ----------------------------------------------------------------------------------------------------*/ 41 /** @defgroup SDIO_Exported_Types SDIO Exported Types 42 * @{ 43 */ 44 45 /** @defgroup SDIO_Exported_Types_Group1 SDIO State enumeration structure 46 * @{ 47 48 */ 49 typedef enum 50 { 51 HAL_SDIO_STATE_RESET = 0x00U, /*!< SDIO not yet initialized or disabled */ 52 HAL_SDIO_STATE_READY = 0x01U, /*!< SDIO initialized and ready for us */ 53 HAL_SDIO_STATE_BUSY = 0x02U, /*!< SDIO process ongoing */ 54 } HAL_SDIO_StateTypeDef; 55 56 /** 57 * @} 58 */ 59 60 /** @defgroup SDIO_Exported_Types_Group2 SDIO Handle and Structure definition 61 * @{ 62 */ 63 /** 64 * @brief SDIO Card Common Control Register Structure definition 65 */ 66 typedef struct 67 { 68 uint8_t sdio_revision; /*!< SDIO revision */ 69 uint8_t cccr_revision; /*!< CCCR version */ 70 uint8_t sd_spec_revision; /*!< SD revision */ 71 uint8_t bus_width_8Bit; /*!< SDIO bus width 8 bit support */ 72 uint32_t card_capability; /*!< SDIO card capability */ 73 uint32_t commonCISPointer; /*!< point to common CIS */ 74 } HAL_SDIO_CCCR_TypeDef; 75 76 /** 77 * @brief sdio card FBR register(Function Basic Register) 78 */ 79 typedef struct 80 { 81 uint8_t flags; /*!< SDIO current IO flags */ 82 uint8_t ioStdFunctionCode; /*!< SDIO current IO standard function code */ 83 uint8_t ioExtFunctionCode; /*!< SDIO current IO extended function code */ 84 uint32_t ioPointerToCIS; /*!< SDIO current IO pointer to CIS */ 85 uint32_t ioPointerToCSA; /*!< SDIO current IO pointer to CSA */ 86 } HAL_SDIO_FBR_t; 87 88 /** 89 * @brief SDIO CMD52 Structure definition 90 */ 91 typedef struct 92 { 93 uint32_t Reg_Addr; /*!< This is the address of the byte of data inside of the selected function to read or write */ 94 uint8_t ReadAfterWrite; /*!< This is the read after write flag, it is used for write access only. */ 95 uint8_t IOFunctionNbr; /*!< The number of the function within the IO card you wish to read or write */ 96 } HAL_SDIO_DirectCmd_TypeDef; 97 98 /** 99 * @brief SDIO CMD53 Structure definition 100 */ 101 typedef struct 102 { 103 uint32_t Reg_Addr; /*!< This is the address of the byte of data inside of the selected function to read or write */ 104 uint32_t OpCode; /*!< Read/Write operation mode */ 105 uint32_t Block_Mode; /*!< Bytes or Blocks mode */ 106 uint32_t IOFunctionNbr; /*!< The number of the function within the IO card you wish to read or write */ 107 } HAL_SDIO_ExtendedCmd_TypeDef; 108 109 #define SDIO_InitTypeDef SDMMC_InitTypeDef 110 #define SDIO_TypeDef SDMMC_TypeDef 111 112 /** 113 * @brief SDIO handle Structure definition 114 */ 115 typedef struct __SDIO_HandleTypeDef 116 { 117 SDIO_TypeDef *Instance; /*!< SDIO registers base address */ 118 119 SDIO_InitTypeDef Init; /*!< SDIO required parameters */ 120 121 HAL_LockTypeDef Lock; /*!< SDIO locking object */ 122 123 uint8_t *pTxBuffPtr; /*!< Pointer to SDIO Tx transfer Buffer */ 124 125 uint32_t TxXferSize; /*!< SDIO Tx Transfer size */ 126 127 uint8_t *pRxBuffPtr; /*!< Pointer to SDIO Rx transfer Buffer */ 128 129 uint32_t RxXferSize; /*!< SDIO Rx Transfer size */ 130 131 uint32_t remaining_data; /*!< Remaining data to transfer */ 132 133 uint32_t next_data_addr; /*!< SDIO Next data address */ 134 135 __IO uint32_t next_reg_addr; /*!< SDIO Next register address */ 136 137 uint16_t block_size; /*!< SDIO Block size */ 138 139 __IO uint32_t Context; /*!< SDIO transfer context */ 140 141 __IO HAL_SDIO_StateTypeDef State; /*!< SDIO card State */ 142 143 __IO uint32_t ErrorCode; /*!< SDIO Card Error codes */ 144 145 uint8_t IOFunctionMask; /*!< SDIO used to record current enabled io interrupt */ 146 147 volatile uint8_t IOInterruptNbr; /*!< SDIO used to record total enabled io interrupt numbers */ 148 149 void (* SDIO_IOFunction_Callback[SDIO_MAX_IO_NUMBER])(struct __SDIO_HandleTypeDef *hsdio, uint32_t func); 150 151 #if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U) 152 void (* TxCpltCallback)(struct __SDIO_HandleTypeDef *hsdio); 153 void (* RxCpltCallback)(struct __SDIO_HandleTypeDef *hsdio); 154 void (* ErrorCallback)(struct __SDIO_HandleTypeDef *hsdio); 155 void (* MspInitCallback)(struct __SDIO_HandleTypeDef *hsdio); 156 void (* MspDeInitCallback)(struct __SDIO_HandleTypeDef *hsdio); 157 #endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */ 158 159 #if (USE_SDIO_TRANSCEIVER != 0U) 160 void (* DriveTransceiver_1_8V_Callback)(struct __SDIO_HandleTypeDef *hsdio, FlagStatus status); 161 #endif /* USE_SDIO_TRANSCEIVER */ 162 163 HAL_StatusTypeDef(* SDIO_IdentifyCard)(struct __SDIO_HandleTypeDef *hsdio); 164 165 } SDIO_HandleTypeDef; 166 167 /** 168 * @} 169 */ 170 #if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U) 171 /** @defgroup SDIO_Exported_Types_Group3 SDIO Callback ID enumeration definition 172 * @{ 173 */ 174 typedef enum 175 { 176 HAL_SDIO_TX_CPLT_CB_ID = 0x00U, /*!< SDIO Tx Complete Callback ID */ 177 HAL_SDIO_RX_CPLT_CB_ID = 0x01U, /*!< SDIO Rx Complete Callback ID */ 178 HAL_SDIO_ERROR_CB_ID = 0x02U, /*!< SDIO Error Callback ID */ 179 HAL_SDIO_MSP_INIT_CB_ID = 0x10U, /*!< SDIO MspInit Callback ID */ 180 HAL_SDIO_MSP_DEINIT_CB_ID = 0x11U /*!< SDIO MspDeInit Callback ID */ 181 } HAL_SDIO_CallbackIDTypeDef; 182 /** 183 * @} 184 */ 185 186 /** @defgroup SDIO_Exported_Types_Group4 SDIO Callback pointer definition 187 * @{ 188 */ 189 typedef void (*pSDIO_CallbackTypeDef)(SDIO_HandleTypeDef *hsdio); 190 #if (USE_SDIO_TRANSCEIVER != 0U) 191 typedef void (*pSDIO_TransceiverCallbackTypeDef)(SDIO_HandleTypeDef *hsdio, FlagStatus status); 192 #endif /* USE_SDIO_TRANSCEIVER */ 193 194 typedef HAL_StatusTypeDef(*pSDIO_IdentifyCardCallbackTypeDef)(SDIO_HandleTypeDef *hsdio); 195 /** 196 * @} 197 */ 198 #endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */ 199 200 #if (USE_SDIO_TRANSCEIVER != 0U) 201 typedef void (*pSDIO_TransceiverCallbackTypeDef)(SDIO_HandleTypeDef *hsdio, FlagStatus status); 202 #endif /* USE_SDIO_TRANSCEIVER */ 203 204 typedef HAL_StatusTypeDef(*pSDIO_IdentifyCardCallbackTypeDef)(SDIO_HandleTypeDef *hsdio); 205 typedef void (*HAL_SDIO_IOFunction_CallbackTypeDef)(SDIO_HandleTypeDef *hsdio, uint32_t func); 206 /** 207 * @} 208 */ 209 210 /* Exported constants ------------------------------------------------------------------------------------------------*/ 211 /** @defgroup SDIO_Exported_Constants SDIO Exported Constants 212 * @{ 213 */ 214 215 /** @defgroup SDIO_Exported_Constansts_Group1 SDIO Error status Structure definition 216 * @{ 217 */ 218 #define HAL_SDIO_ERROR_NONE SDMMC_ERROR_NONE /*!< No error */ 219 #define HAL_SDIO_ERROR_DATA_CRC_FAIL SDMMC_ERROR_DATA_CRC_FAIL /*!< Data block sent/received (CRC check failed) */ 220 #define HAL_SDIO_ERROR_DATA_TIMEOUT SDMMC_ERROR_DATA_TIMEOUT /*!< Data timeout */ 221 #define HAL_SDIO_ERROR_TX_UNDERRUN SDMMC_ERROR_TX_UNDERRUN /*!< Transmit FIFO underrun */ 222 #define HAL_SDIO_ERROR_RX_OVERRUN SDMMC_ERROR_RX_OVERRUN /*!< Receive FIFO overrun */ 223 #define HAL_SDIO_ERROR_TIMEOUT SDMMC_ERROR_TIMEOUT /*!< Timeout error */ 224 #define HAL_SDIO_ERROR_INVALID_CALLBACK SDMMC_ERROR_INVALID_PARAMETER /*!< Invalid callback error */ 225 /** 226 * @} 227 */ 228 229 /** @defgroup SDIO_Exported_Constansts_Group2 SDIO context enumeration 230 * @{ 231 */ 232 #define SDIO_CONTEXT_NONE 0x00U /*!< None */ 233 #define SDIO_CONTEXT_READ_SINGLE_BLOCK 0x01U /*!< Read single block operation */ 234 #define SDIO_CONTEXT_READ_MULTIPLE_BLOCK 0x02U /*!< Read multiple blocks operation */ 235 #define SDIO_CONTEXT_WRITE_SINGLE_BLOCK 0x10U /*!< Write single block operation */ 236 #define SDIO_CONTEXT_WRITE_MULTIPLE_BLOCK 0x20U /*!< Write multiple blocks operation */ 237 #define SDIO_CONTEXT_IT 0x08U /*!< Process in Interrupt mode */ 238 #define SDIO_CONTEXT_DMA 0x80U /*!< Process in DMA mode */ 239 /** 240 * @} 241 */ 242 243 /** @defgroup SDIO_Exported_Constansts_Group3 SDIO Block mode enumeration 244 * @{ 245 */ 246 #define HAL_SDIO_MODE_BYTE SDMMC_SDIO_MODE_BYTE 247 #define HAL_SDIO_MODE_BLOCK SDMMC_SDIO_MODE_BLOCK 248 /** 249 * @} 250 */ 251 252 /** @defgroup SDIO_Exported_Constansts_Group4 SDIO operation code enumeration 253 * @{ 254 */ 255 #define HAL_SDIO_OP_CODE_NO_INC SDMMC_SDIO_NO_INC 256 #define HAL_SDIO_OP_CODE_AUTO_INC SDMMC_SDIO_AUTO_INC 257 /** 258 * @} 259 */ 260 261 /** @defgroup SDIO_Exported_Constansts_Group5 SDIO Read After Write(RAW) enumeration 262 * @{ 263 */ 264 #define HAL_SDIO_WRITE_ONLY SDMMC_SDIO_WO /*!< SDIO Write only */ 265 #define HAL_SDIO_READ_AFTER_WRITE SDMMC_SDIO_RAW /*!< SDIO Read after write */ 266 /** 267 * @} 268 */ 269 270 /** @defgroup SDIO_Exported_Constansts_Group6 SDIO wire mode enumeration 271 * @{ 272 */ 273 #define HAL_SDIO_1_WIRE_MODE 0U /*!< SDIO wire support 1 wire */ 274 #define HAL_SDIO_4_WIRES_MODE 1U /*!< SDIO wire support 4 wires */ 275 /** 276 * @} 277 */ 278 279 /** @defgroup SDIO_Exported_Constansts_Group7 SDIO Data block size enumeration 280 * @{ 281 */ 282 #define HAL_SDIO_DATA_BLOCK_SIZE_1BYTE 1U /*!< SDIO data block size 1 byte */ 283 #define HAL_SDIO_DATA_BLOCK_SIZE_2BYTE 2U /*!< SDIO data block size 2 byte */ 284 #define HAL_SDIO_DATA_BLOCK_SIZE_4BYTE 4U /*!< SDIO data block size 4 byte */ 285 #define HAL_SDIO_DATA_BLOCK_SIZE_8BYTE 8U /*!< SDIO data block size 8 byte */ 286 #define HAL_SDIO_DATA_BLOCK_SIZE_16BYTE 16U /*!< SDIO data block size 16 byte */ 287 #define HAL_SDIO_DATA_BLOCK_SIZE_32BYTE 32U /*!< SDIO data block size 32 byte */ 288 #define HAL_SDIO_DATA_BLOCK_SIZE_64BYTE 64U /*!< SDIO data block size 64 byte */ 289 #define HAL_SDIO_DATA_BLOCK_SIZE_128BYTE 128U /*!< SDIO data block size 128 byte */ 290 #define HAL_SDIO_DATA_BLOCK_SIZE_256BYTE 256U /*!< SDIO data block size 256 byte */ 291 #define HAL_SDIO_DATA_BLOCK_SIZE_512BYTE 512U /*!< SDIO data block size 512 byte */ 292 #define HAL_SDIO_DATA_BLOCK_SIZE_1024BYTE 1024U /*!< SDIO data block size 1024 byte */ 293 #define HAL_SDIO_DATA_BLOCK_SIZE_2048BYTE 2048U /*!< SDIO data block size 2048 byte */ 294 /** 295 * @} 296 */ 297 298 /** @defgroup SDIO_Exported_Constansts_Group8 SDIO Bus Width enumeration 299 * @{ 300 */ 301 #define HAL_SDIO_BUS_WIDTH_8BIT_NOT_SUPPORTED 0U /*!< SDIO bus width 8 bit is not supported */ 302 #define HAL_SDIO_BUS_WIDTH_8BIT_SUPPORTED 1U /*!< SDIO bus width 8 bit is supported */ 303 /** 304 * @} 305 */ 306 307 /** @defgroup SDIO_Exported_Constansts_Group9 SDIO Data rate definitions 308 * @{ 309 */ 310 #define HAL_SDIOS_DATA_RATE_SDR12 0U /*!< SDIO Data rate SDR12 */ 311 #define HAL_SDIOS_DATA_RATE_SDR25 1U /*!< SDIO Data rate SDR25 */ 312 #define HAL_SDIOS_DATA_RATE_SDR50 2U /*!< SDIO Data rate SDR50 */ 313 #define HAL_SDIOS_DATA_RATE_DDR50 3U /*!< SDIO Data rate DDR50 */ 314 /** 315 * @} 316 */ 317 318 /** @defgroup SDIO_Exported_Constansts_Group10 SDIO Functions definitions 319 * @{ 320 */ 321 #define HAL_SDIO_FUNCTION_0 0U /*!< SDIO function 0 */ 322 #define HAL_SDIO_FUNCTION_1 1U /*!< SDIO function 1 */ 323 #define HAL_SDIO_FUNCTION_2 2U /*!< SDIO function 2 */ 324 #define HAL_SDIO_FUNCTION_3 3U /*!< SDIO function 3 */ 325 #define HAL_SDIO_FUNCTION_4 4U /*!< SDIO function 4 */ 326 #define HAL_SDIO_FUNCTION_5 5U /*!< SDIO function 5 */ 327 #define HAL_SDIO_FUNCTION_6 6U /*!< SDIO function 6 */ 328 #define HAL_SDIO_FUNCTION_7 7U /*!< SDIO function 7 */ 329 /** 330 * @} 331 */ 332 333 /** @defgroup SDIO_Exported_Constansts_Group11 SDIO FBR definitions 334 * @{ 335 */ 336 #define HAL_SDIO_FBR_SUPPORT_CSA 1U /*!< SDIO function support CSA */ 337 #define HAL_SDIO_FBR_SUPPORT_POWER_SELECTION 1U /*!< SDIO function support power selection */ 338 /** 339 * @} 340 */ 341 342 /** 343 * @} 344 */ 345 /* Exported macro ----------------------------------------------------------------------------------------------------*/ 346 /** @defgroup SDIO_Exported_macros SDIO Exported Macros 347 * @brief macros to handle interrupts and specific clock configurations 348 * @{ 349 */ 350 /** 351 * @brief Enable the SDIO device interrupt. 352 * @param __HANDLE__ SDIO Handle. 353 * @param __INTERRUPT__ specifies the SDMMC interrupt sources to be enabled. 354 * This parameter can be one or a combination of @ref SDMMC_LL_Interrupt_sources. 355 * @retval None 356 */ 357 #define __HAL_SDIO_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 358 359 /** 360 * @brief Disable the SDIO device interrupt. 361 * @param __HANDLE__ SDIO Handle. 362 * @param __INTERRUPT__ specifies the SDMMC interrupt sources to be disabled. 363 * This parameter can be one or a combination of @ref SDMMC_LL_Interrupt_sources. 364 * @retval None 365 */ 366 #define __HAL_SDIO_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 367 368 /** 369 * @brief Check whether the specified SDIO flag is set or not. 370 * @param __HANDLE__ SDIO Handle. 371 * @param __FLAG__ specifies the flag to check. 372 * This parameter can be one of @ref SDMMC_LL_Flags. 373 * @retval The new state of SDIO FLAG (SET or RESET). 374 */ 375 #define __HAL_SDIO_GET_FLAG(__HANDLE__, __FLAG__) __SDMMC_GET_FLAG((__HANDLE__)->Instance, (__FLAG__)) 376 377 /** 378 * @brief Clear the SDIO's pending flags. 379 * @param __HANDLE__ SDIO Handle. 380 * @param __FLAG__ specifies the flag to clear. 381 * This parameter can be one or a combination of @ref SDMMC_LL_Flags. 382 * @retval None 383 */ 384 #define __HAL_SDIO_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDMMC_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__)) 385 386 /** 387 * @brief Check whether the specified SDIO interrupt has occurred or not. 388 * @param __HANDLE__ SDIO Handle. 389 * @param __INTERRUPT__ specifies the SDMMC interrupt source to check. 390 * This parameter can be one of @ref SDMMC_LL_Interrupt_sources. 391 * @retval The new state of SDIO IT (SET or RESET). 392 */ 393 #define __HAL_SDIO_GET_IT(__HANDLE__, __INTERRUPT__) __SDMMC_GET_IT((__HANDLE__)->Instance, (__INTERRUPT__)) 394 395 /** 396 * @brief Checks whether the specified SDIO interrupt is enabled or not. 397 * @param __HANDLE__ : SDIO handle. 398 * @param __INTERRUPT__ : specifies the SDMMC interrupt source to check. 399 * @retval The state of SDIO IT (SET or RESET). 400 */ 401 #define __HAL_SDIO_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \ 402 __SDMMC_GET_IT_SOURCE((__HANDLE__)->Instance, (__INTERRUPT__)) 403 /** 404 * @} 405 */ 406 407 /* Exported functions ------------------------------------------------------------------------------------------------*/ 408 /** @defgroup SDIO_Exported_Functions SDIO Exported Functions 409 * @{ 410 */ 411 /** @defgroup SDIO_Exported_Functions_Group1 Initialization and de-initialization functions 412 * @{ 413 */ 414 HAL_StatusTypeDef HAL_SDIO_Init(SDIO_HandleTypeDef *hsdio); 415 HAL_StatusTypeDef HAL_SDIO_DeInit(SDIO_HandleTypeDef *hsdio); 416 417 void HAL_SDIO_MspInit(SDIO_HandleTypeDef *hsdio); 418 void HAL_SDIO_MspDeInit(SDIO_HandleTypeDef *hsdio); 419 /** 420 * @} 421 */ 422 423 /** @defgroup SDIO_Exported_Functions_Group2 Peripheral Control functions 424 * @{ 425 */ 426 HAL_StatusTypeDef HAL_SDIO_SetDataBusWidth(SDIO_HandleTypeDef *hsdio, uint32_t BusWide); 427 HAL_StatusTypeDef HAL_SDIO_ConfigFrequency(SDIO_HandleTypeDef *hsdio, uint32_t ClockSpeed); 428 429 HAL_StatusTypeDef HAL_SDIO_SetBlockSize(SDIO_HandleTypeDef *hsdio, uint8_t function_nbr, uint16_t BlockSize); 430 HAL_StatusTypeDef HAL_SDIO_SetSpeedMode(SDIO_HandleTypeDef *hsdio, uint32_t DataRate); 431 432 HAL_StatusTypeDef HAL_SDIO_CardReset(SDIO_HandleTypeDef *hsdio); 433 HAL_StatusTypeDef HAL_SDIO_GetCardCommonControlRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CCCR_TypeDef *pCccr); 434 HAL_StatusTypeDef HAL_SDIO_GetCardFBRRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_FBR_t *pFbr); 435 /** 436 * @} 437 */ 438 439 /** @defgroup SDIO_Exported_Functions_Group3 Process functions 440 * @{ 441 */ 442 HAL_StatusTypeDef HAL_SDIO_ReadDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argument, uint8_t *pData); 443 HAL_StatusTypeDef HAL_SDIO_WriteDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argument, uint8_t Data); 444 445 HAL_StatusTypeDef HAL_SDIO_ReadExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, 446 uint8_t *pData, uint32_t Size_byte, uint32_t Timeout_Ms); 447 448 HAL_StatusTypeDef HAL_SDIO_WriteExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, 449 uint8_t *pData, uint32_t Size_byte, uint32_t Timeout_Ms); 450 451 HAL_StatusTypeDef HAL_SDIO_ReadExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, 452 uint8_t *pData, uint32_t Size_byte); 453 454 HAL_StatusTypeDef HAL_SDIO_WriteExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, 455 uint8_t *pData, uint32_t Size_byte); 456 /** 457 * @} 458 */ 459 460 /** @defgroup SDIO_Exported_Functions_Group4 IRQHandler and callback functions 461 * @{ 462 */ 463 void HAL_SDIO_IRQHandler(SDIO_HandleTypeDef *hsdio); 464 465 void HAL_SDIO_TxCpltCallback(SDIO_HandleTypeDef *hsdio); 466 void HAL_SDIO_RxCpltCallback(SDIO_HandleTypeDef *hsdio); 467 void HAL_SDIO_ErrorCallback(SDIO_HandleTypeDef *hsdio); 468 void HAL_SDIO_IOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t func); 469 #if (USE_SDIO_TRANSCEIVER != 0U) 470 /* Callback to switch in 1.8V mode */ 471 void HAL_SDIO_DriveTransceiver_1_8V_Callback(SDIO_HandleTypeDef *hsdio, FlagStatus status); 472 #endif /* USE_SDIO_TRANSCEIVER */ 473 474 #if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U) 475 HAL_StatusTypeDef HAL_SDIO_RegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef CallbackID, 476 pSDIO_CallbackTypeDef pCallback); 477 478 HAL_StatusTypeDef HAL_SDIO_UnRegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef CallbackID); 479 #endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */ 480 481 #if (USE_SDIO_TRANSCEIVER != 0U) 482 HAL_StatusTypeDef HAL_SDIO_RegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio, 483 pSDIO_TransceiverCallbackTypeDef pCallback); 484 HAL_StatusTypeDef HAL_SDIO_UnRegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio); 485 #endif /* USE_SDIO_TRANSCEIVER */ 486 487 HAL_StatusTypeDef HAL_SDIO_RegisterIOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction, 488 HAL_SDIO_IOFunction_CallbackTypeDef pCallback); 489 490 HAL_StatusTypeDef HAL_SDIO_RegisterIdentifyCardCallback(SDIO_HandleTypeDef *hsdio, 491 pSDIO_IdentifyCardCallbackTypeDef pCallback); 492 /** 493 * @} 494 */ 495 496 /** @defgroup SDIO_Exported_Functions_Group5 Peripheral State and Errors functions 497 * @{ 498 */ 499 HAL_SDIO_StateTypeDef HAL_SDIO_GetState(const SDIO_HandleTypeDef *hsdio); 500 uint32_t HAL_SDIO_GetError(const SDIO_HandleTypeDef *hsdio); 501 /** 502 * @} 503 */ 504 505 /** @defgroup SDIO_Exported_Functions_Group6 Peripheral IO interrupt 506 * @{ 507 */ 508 HAL_StatusTypeDef HAL_SDIO_EnableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); 509 HAL_StatusTypeDef HAL_SDIO_DisableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); 510 511 HAL_StatusTypeDef HAL_SDIO_EnableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); 512 HAL_StatusTypeDef HAL_SDIO_DisableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); 513 514 HAL_StatusTypeDef HAL_SDIO_SelectIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); 515 HAL_StatusTypeDef HAL_SDIO_AbortIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); 516 517 HAL_StatusTypeDef HAL_SDIO_EnableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio); 518 HAL_StatusTypeDef HAL_SDIO_DisableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio); 519 520 /** 521 * @} 522 */ 523 524 /* Private types -----------------------------------------------------------------------------------------------------*/ 525 /** @defgroup SDIO_Private_Types SDIO Private Types 526 * @{ 527 */ 528 529 /** 530 * @} 531 */ 532 533 /* Private defines ---------------------------------------------------------------------------------------------------*/ 534 /** @defgroup SDIO_Private_Defines SDIO Private Defines 535 * @{ 536 */ 537 538 /** 539 * @} 540 */ 541 542 /* Private variables -------------------------------------------------------------------------------------------------*/ 543 /** @defgroup SDIO_Private_Variables SDIO Private Variables 544 * @{ 545 */ 546 547 /** 548 * @} 549 */ 550 551 /* Private constants -------------------------------------------------------------------------------------------------*/ 552 /** @defgroup SDIO_Private_Constants SDIO Private Constants 553 * @{ 554 */ 555 556 /** 557 * @} 558 */ 559 560 /* Private macros ----------------------------------------------------------------------------------------------------*/ 561 /** @defgroup SDIO_Private_Macros SDIO Private Macros 562 * @{ 563 */ 564 565 /** 566 * @} 567 */ 568 569 /* Private functions prototypes --------------------------------------------------------------------------------------*/ 570 /** @defgroup SDIO_Private_Functions_Prototypes SDIO Private Functions Prototypes 571 * @{ 572 */ 573 574 /** 575 * @} 576 */ 577 578 /* Private functions -------------------------------------------------------------------------------------------------*/ 579 /** @defgroup SDIO_Private_Functions SDIO Private Functions 580 * @{ 581 */ 582 583 /** 584 * @} 585 */ 586 587 /** 588 * @} 589 */ 590 591 /** 592 * @} 593 */ 594 #endif /* SDMMC1 || SDMMC2 */ 595 596 /** 597 * @} 598 */ 599 600 #ifdef __cplusplus 601 } 602 #endif 603 604 605 #endif /* STM32N6xx_HAL_SDIO_H */ 606 607