39 #ifndef __STM32F7xx_LL_SDMMC_H 40 #define __STM32F7xx_LL_SDMMC_H 152 #define SDMMC_CLOCK_EDGE_RISING ((uint32_t)0x00000000U) 153 #define SDMMC_CLOCK_EDGE_FALLING SDMMC_CLKCR_NEGEDGE 155 #define IS_SDMMC_CLOCK_EDGE(EDGE) (((EDGE) == SDMMC_CLOCK_EDGE_RISING) || \ 156 ((EDGE) == SDMMC_CLOCK_EDGE_FALLING)) 164 #define SDMMC_CLOCK_BYPASS_DISABLE ((uint32_t)0x00000000U) 165 #define SDMMC_CLOCK_BYPASS_ENABLE SDMMC_CLKCR_BYPASS 167 #define IS_SDMMC_CLOCK_BYPASS(BYPASS) (((BYPASS) == SDMMC_CLOCK_BYPASS_DISABLE) || \ 168 ((BYPASS) == SDMMC_CLOCK_BYPASS_ENABLE)) 176 #define SDMMC_CLOCK_POWER_SAVE_DISABLE ((uint32_t)0x00000000U) 177 #define SDMMC_CLOCK_POWER_SAVE_ENABLE SDMMC_CLKCR_PWRSAV 179 #define IS_SDMMC_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDMMC_CLOCK_POWER_SAVE_DISABLE) || \ 180 ((SAVE) == SDMMC_CLOCK_POWER_SAVE_ENABLE)) 188 #define SDMMC_BUS_WIDE_1B ((uint32_t)0x00000000U) 189 #define SDMMC_BUS_WIDE_4B SDMMC_CLKCR_WIDBUS_0 190 #define SDMMC_BUS_WIDE_8B SDMMC_CLKCR_WIDBUS_1 192 #define IS_SDMMC_BUS_WIDE(WIDE) (((WIDE) == SDMMC_BUS_WIDE_1B) || \ 193 ((WIDE) == SDMMC_BUS_WIDE_4B) || \ 194 ((WIDE) == SDMMC_BUS_WIDE_8B)) 202 #define SDMMC_HARDWARE_FLOW_CONTROL_DISABLE ((uint32_t)0x00000000U) 203 #define SDMMC_HARDWARE_FLOW_CONTROL_ENABLE SDMMC_CLKCR_HWFC_EN 205 #define IS_SDMMC_HARDWARE_FLOW_CONTROL(CONTROL) (((CONTROL) == SDMMC_HARDWARE_FLOW_CONTROL_DISABLE) || \ 206 ((CONTROL) == SDMMC_HARDWARE_FLOW_CONTROL_ENABLE)) 214 #define IS_SDMMC_CLKDIV(DIV) ((DIV) <= 0xFF) 222 #define IS_SDMMC_CMD_INDEX(INDEX) ((INDEX) < 0x40) 230 #define SDMMC_RESPONSE_NO ((uint32_t)0x00000000U) 231 #define SDMMC_RESPONSE_SHORT SDMMC_CMD_WAITRESP_0 232 #define SDMMC_RESPONSE_LONG SDMMC_CMD_WAITRESP 234 #define IS_SDMMC_RESPONSE(RESPONSE) (((RESPONSE) == SDMMC_RESPONSE_NO) || \ 235 ((RESPONSE) == SDMMC_RESPONSE_SHORT) || \ 236 ((RESPONSE) == SDMMC_RESPONSE_LONG)) 244 #define SDMMC_WAIT_NO ((uint32_t)0x00000000U) 245 #define SDMMC_WAIT_IT SDMMC_CMD_WAITINT 246 #define SDMMC_WAIT_PEND SDMMC_CMD_WAITPEND 248 #define IS_SDMMC_WAIT(WAIT) (((WAIT) == SDMMC_WAIT_NO) || \ 249 ((WAIT) == SDMMC_WAIT_IT) || \ 250 ((WAIT) == SDMMC_WAIT_PEND)) 258 #define SDMMC_CPSM_DISABLE ((uint32_t)0x00000000U) 259 #define SDMMC_CPSM_ENABLE SDMMC_CMD_CPSMEN 261 #define IS_SDMMC_CPSM(CPSM) (((CPSM) == SDMMC_CPSM_DISABLE) || \ 262 ((CPSM) == SDMMC_CPSM_ENABLE)) 270 #define SDMMC_RESP1 ((uint32_t)0x00000000U) 271 #define SDMMC_RESP2 ((uint32_t)0x00000004U) 272 #define SDMMC_RESP3 ((uint32_t)0x00000008U) 273 #define SDMMC_RESP4 ((uint32_t)0x0000000C) 275 #define IS_SDMMC_RESP(RESP) (((RESP) == SDMMC_RESP1) || \ 276 ((RESP) == SDMMC_RESP2) || \ 277 ((RESP) == SDMMC_RESP3) || \ 278 ((RESP) == SDMMC_RESP4)) 286 #define IS_SDMMC_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFF) 294 #define SDMMC_DATABLOCK_SIZE_1B ((uint32_t)0x00000000U) 295 #define SDMMC_DATABLOCK_SIZE_2B SDMMC_DCTRL_DBLOCKSIZE_0 296 #define SDMMC_DATABLOCK_SIZE_4B SDMMC_DCTRL_DBLOCKSIZE_1 297 #define SDMMC_DATABLOCK_SIZE_8B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_1) 298 #define SDMMC_DATABLOCK_SIZE_16B SDMMC_DCTRL_DBLOCKSIZE_2 299 #define SDMMC_DATABLOCK_SIZE_32B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_2) 300 #define SDMMC_DATABLOCK_SIZE_64B (SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_2) 301 #define SDMMC_DATABLOCK_SIZE_128B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_2) 302 #define SDMMC_DATABLOCK_SIZE_256B SDMMC_DCTRL_DBLOCKSIZE_3 303 #define SDMMC_DATABLOCK_SIZE_512B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_3) 304 #define SDMMC_DATABLOCK_SIZE_1024B (SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_3) 305 #define SDMMC_DATABLOCK_SIZE_2048B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_3) 306 #define SDMMC_DATABLOCK_SIZE_4096B (SDMMC_DCTRL_DBLOCKSIZE_2|SDMMC_DCTRL_DBLOCKSIZE_3) 307 #define SDMMC_DATABLOCK_SIZE_8192B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_2|SDMMC_DCTRL_DBLOCKSIZE_3) 308 #define SDMMC_DATABLOCK_SIZE_16384B (SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_2|SDMMC_DCTRL_DBLOCKSIZE_3) 310 #define IS_SDMMC_BLOCK_SIZE(SIZE) (((SIZE) == SDMMC_DATABLOCK_SIZE_1B) || \ 311 ((SIZE) == SDMMC_DATABLOCK_SIZE_2B) || \ 312 ((SIZE) == SDMMC_DATABLOCK_SIZE_4B) || \ 313 ((SIZE) == SDMMC_DATABLOCK_SIZE_8B) || \ 314 ((SIZE) == SDMMC_DATABLOCK_SIZE_16B) || \ 315 ((SIZE) == SDMMC_DATABLOCK_SIZE_32B) || \ 316 ((SIZE) == SDMMC_DATABLOCK_SIZE_64B) || \ 317 ((SIZE) == SDMMC_DATABLOCK_SIZE_128B) || \ 318 ((SIZE) == SDMMC_DATABLOCK_SIZE_256B) || \ 319 ((SIZE) == SDMMC_DATABLOCK_SIZE_512B) || \ 320 ((SIZE) == SDMMC_DATABLOCK_SIZE_1024B) || \ 321 ((SIZE) == SDMMC_DATABLOCK_SIZE_2048B) || \ 322 ((SIZE) == SDMMC_DATABLOCK_SIZE_4096B) || \ 323 ((SIZE) == SDMMC_DATABLOCK_SIZE_8192B) || \ 324 ((SIZE) == SDMMC_DATABLOCK_SIZE_16384B)) 332 #define SDMMC_TRANSFER_DIR_TO_CARD ((uint32_t)0x00000000U) 333 #define SDMMC_TRANSFER_DIR_TO_SDMMC SDMMC_DCTRL_DTDIR 335 #define IS_SDMMC_TRANSFER_DIR(DIR) (((DIR) == SDMMC_TRANSFER_DIR_TO_CARD) || \ 336 ((DIR) == SDMMC_TRANSFER_DIR_TO_SDMMC)) 344 #define SDMMC_TRANSFER_MODE_BLOCK ((uint32_t)0x00000000U) 345 #define SDMMC_TRANSFER_MODE_STREAM SDMMC_DCTRL_DTMODE 347 #define IS_SDMMC_TRANSFER_MODE(MODE) (((MODE) == SDMMC_TRANSFER_MODE_BLOCK) || \ 348 ((MODE) == SDMMC_TRANSFER_MODE_STREAM)) 356 #define SDMMC_DPSM_DISABLE ((uint32_t)0x00000000U) 357 #define SDMMC_DPSM_ENABLE SDMMC_DCTRL_DTEN 359 #define IS_SDMMC_DPSM(DPSM) (((DPSM) == SDMMC_DPSM_DISABLE) ||\ 360 ((DPSM) == SDMMC_DPSM_ENABLE)) 368 #define SDMMC_READ_WAIT_MODE_DATA2 ((uint32_t)0x00000000U) 369 #define SDMMC_READ_WAIT_MODE_CLK (SDMMC_DCTRL_RWMOD) 371 #define IS_SDMMC_READWAIT_MODE(MODE) (((MODE) == SDMMC_READ_WAIT_MODE_CLK) || \ 372 ((MODE) == SDMMC_READ_WAIT_MODE_DATA2)) 380 #define SDMMC_IT_CCRCFAIL SDMMC_STA_CCRCFAIL 381 #define SDMMC_IT_DCRCFAIL SDMMC_STA_DCRCFAIL 382 #define SDMMC_IT_CTIMEOUT SDMMC_STA_CTIMEOUT 383 #define SDMMC_IT_DTIMEOUT SDMMC_STA_DTIMEOUT 384 #define SDMMC_IT_TXUNDERR SDMMC_STA_TXUNDERR 385 #define SDMMC_IT_RXOVERR SDMMC_STA_RXOVERR 386 #define SDMMC_IT_CMDREND SDMMC_STA_CMDREND 387 #define SDMMC_IT_CMDSENT SDMMC_STA_CMDSENT 388 #define SDMMC_IT_DATAEND SDMMC_STA_DATAEND 389 #define SDMMC_IT_DBCKEND SDMMC_STA_DBCKEND 390 #define SDMMC_IT_CMDACT SDMMC_STA_CMDACT 391 #define SDMMC_IT_TXACT SDMMC_STA_TXACT 392 #define SDMMC_IT_RXACT SDMMC_STA_RXACT 393 #define SDMMC_IT_TXFIFOHE SDMMC_STA_TXFIFOHE 394 #define SDMMC_IT_RXFIFOHF SDMMC_STA_RXFIFOHF 395 #define SDMMC_IT_TXFIFOF SDMMC_STA_TXFIFOF 396 #define SDMMC_IT_RXFIFOF SDMMC_STA_RXFIFOF 397 #define SDMMC_IT_TXFIFOE SDMMC_STA_TXFIFOE 398 #define SDMMC_IT_RXFIFOE SDMMC_STA_RXFIFOE 399 #define SDMMC_IT_TXDAVL SDMMC_STA_TXDAVL 400 #define SDMMC_IT_RXDAVL SDMMC_STA_RXDAVL 401 #define SDMMC_IT_SDIOIT SDMMC_STA_SDIOIT 409 #define SDMMC_FLAG_CCRCFAIL SDMMC_STA_CCRCFAIL 410 #define SDMMC_FLAG_DCRCFAIL SDMMC_STA_DCRCFAIL 411 #define SDMMC_FLAG_CTIMEOUT SDMMC_STA_CTIMEOUT 412 #define SDMMC_FLAG_DTIMEOUT SDMMC_STA_DTIMEOUT 413 #define SDMMC_FLAG_TXUNDERR SDMMC_STA_TXUNDERR 414 #define SDMMC_FLAG_RXOVERR SDMMC_STA_RXOVERR 415 #define SDMMC_FLAG_CMDREND SDMMC_STA_CMDREND 416 #define SDMMC_FLAG_CMDSENT SDMMC_STA_CMDSENT 417 #define SDMMC_FLAG_DATAEND SDMMC_STA_DATAEND 418 #define SDMMC_FLAG_DBCKEND SDMMC_STA_DBCKEND 419 #define SDMMC_FLAG_CMDACT SDMMC_STA_CMDACT 420 #define SDMMC_FLAG_TXACT SDMMC_STA_TXACT 421 #define SDMMC_FLAG_RXACT SDMMC_STA_RXACT 422 #define SDMMC_FLAG_TXFIFOHE SDMMC_STA_TXFIFOHE 423 #define SDMMC_FLAG_RXFIFOHF SDMMC_STA_RXFIFOHF 424 #define SDMMC_FLAG_TXFIFOF SDMMC_STA_TXFIFOF 425 #define SDMMC_FLAG_RXFIFOF SDMMC_STA_RXFIFOF 426 #define SDMMC_FLAG_TXFIFOE SDMMC_STA_TXFIFOE 427 #define SDMMC_FLAG_RXFIFOE SDMMC_STA_RXFIFOE 428 #define SDMMC_FLAG_TXDAVL SDMMC_STA_TXDAVL 429 #define SDMMC_FLAG_RXDAVL SDMMC_STA_RXDAVL 430 #define SDMMC_FLAG_SDIOIT SDMMC_STA_SDIOIT 451 #define CLKCR_CLEAR_MASK ((uint32_t)(SDMMC_CLKCR_CLKDIV | SDMMC_CLKCR_PWRSAV |\ 452 SDMMC_CLKCR_BYPASS | SDMMC_CLKCR_WIDBUS |\ 453 SDMMC_CLKCR_NEGEDGE | SDMMC_CLKCR_HWFC_EN)) 457 #define DCTRL_CLEAR_MASK ((uint32_t)(SDMMC_DCTRL_DTEN | SDMMC_DCTRL_DTDIR |\ 458 SDMMC_DCTRL_DTMODE | SDMMC_DCTRL_DBLOCKSIZE)) 462 #define CMD_CLEAR_MASK ((uint32_t)(SDMMC_CMD_CMDINDEX | SDMMC_CMD_WAITRESP |\ 463 SDMMC_CMD_WAITINT | SDMMC_CMD_WAITPEND |\ 464 SDMMC_CMD_CPSMEN | SDMMC_CMD_SDIOSUSPEND)) 467 #define SDMMC_INIT_CLK_DIV ((uint8_t)0x76) 470 #define SDMMC_TRANSFER_CLK_DIV ((uint8_t)0x0) 486 #define __SDMMC_ENABLE(__INSTANCE__) ((__INSTANCE__)->CLKCR |= SDMMC_CLKCR_CLKEN) 493 #define __SDMMC_DISABLE(__INSTANCE__) ((__INSTANCE__)->CLKCR &= ~SDMMC_CLKCR_CLKEN) 500 #define __SDMMC_DMA_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_DMAEN) 506 #define __SDMMC_DMA_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_DMAEN) 537 #define __SDMMC_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK |= (__INTERRUPT__)) 568 #define __SDMMC_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK &= ~(__INTERRUPT__)) 599 #define __SDMMC_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->STA &(__FLAG__)) != RESET) 620 #define __SDMMC_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->ICR = (__FLAG__)) 651 #define __SDMMC_GET_IT (__INSTANCE__, __INTERRUPT__) (((__INSTANCE__)->STA &(__INTERRUPT__)) == (__INTERRUPT__)) 670 #define __SDMMC_CLEAR_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->ICR = (__INTERRUPT__)) 677 #define __SDMMC_START_READWAIT_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_RWSTART) 684 #define __SDMMC_START_READWAIT_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_RWSTART) 691 #define __SDMMC_STOP_READWAIT_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_RWSTOP) 698 #define __SDMMC_STOP_READWAIT_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_RWSTOP) 705 #define __SDMMC_OPERATION_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_SDIOEN) 712 #define __SDMMC_OPERATION_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_SDIOEN) 719 #define __SDMMC_SUSPEND_CMD_ENABLE(__INSTANCE__) ((__INSTANCE__)->CMD |= SDMMC_CMD_SDIOSUSPEND) 726 #define __SDMMC_SUSPEND_CMD_DISABLE(__INSTANCE__) ((__INSTANCE__)->CMD &= ~SDMMC_CMD_SDIOSUSPEND) uint32_t SDMMC_GetDataCounter(SDMMC_TypeDef *SDMMCx)
HAL_StatusTypeDef SDMMC_DataConfig(SDMMC_TypeDef *SDMMCx, SDMMC_DataInitTypeDef *Data)
SDMMC Configuration Structure definition.
HAL_StatusTypeDef SDMMC_SetSDMMCReadWaitMode(SDMMC_TypeDef *SDMMCx, uint32_t SDMMC_ReadWaitMode)
HAL_StatusTypeDef SDMMC_SendCommand(SDMMC_TypeDef *SDMMCx, SDMMC_CmdInitTypeDef *Command)
HAL_StatusTypeDef SDMMC_WriteFIFO(SDMMC_TypeDef *SDMMCx, uint32_t *pWriteData)
HAL_StatusTypeDef SDMMC_PowerState_OFF(SDMMC_TypeDef *SDMMCx)
uint8_t SDMMC_GetCommandResponse(SDMMC_TypeDef *SDMMCx)
HAL_StatusTypeDef SDMMC_Init(SDMMC_TypeDef *SDMMCx, SDMMC_InitTypeDef Init)
uint32_t WaitForInterrupt
uint32_t SDMMC_GetPowerState(SDMMC_TypeDef *SDMMCx)
uint32_t HardwareFlowControl
uint32_t SDMMC_GetFIFOCount(SDMMC_TypeDef *SDMMCx)
uint32_t SDMMC_GetResponse(SDMMC_TypeDef *SDMMCx, uint32_t Response)
uint32_t SDMMC_ReadFIFO(SDMMC_TypeDef *SDMMCx)
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef SDMMC_PowerState_ON(SDMMC_TypeDef *SDMMCx)
SDMMC Command Control structure.
HAL_StatusTypeDef
HAL Status structures definition.
SDMMC Data Control structure.