STM32F4xx_HAL_Driver  1.8.3
stm32f4xx_ll_sdmmc.h
Go to the documentation of this file.
1 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32F4xx_LL_SDMMC_H
21 #define STM32F4xx_LL_SDMMC_H
22 
23 #ifdef __cplusplus
24  extern "C" {
25 #endif
26 
27 #if defined(SDIO)
28 
29 /* Includes ------------------------------------------------------------------*/
30 #include "stm32f4xx_hal_def.h"
31 
40 /* Exported types ------------------------------------------------------------*/
48 typedef struct
49 {
50  uint32_t ClockEdge;
53  uint32_t ClockBypass;
57  uint32_t ClockPowerSave;
61  uint32_t BusWide;
64  uint32_t HardwareFlowControl;
67  uint32_t ClockDiv;
70 }SDIO_InitTypeDef;
71 
72 
76 typedef struct
77 {
78  uint32_t Argument;
83  uint32_t CmdIndex;
86  uint32_t Response;
89  uint32_t WaitForInterrupt;
93  uint32_t CPSM;
97 
98 
102 typedef struct
103 {
104  uint32_t DataTimeOut;
106  uint32_t DataLength;
108  uint32_t DataBlockSize;
111  uint32_t TransferDir;
115  uint32_t TransferMode;
118  uint32_t DPSM;
122 
127 /* Exported constants --------------------------------------------------------*/
131 #define SDMMC_ERROR_NONE 0x00000000U
132 #define SDMMC_ERROR_CMD_CRC_FAIL 0x00000001U
133 #define SDMMC_ERROR_DATA_CRC_FAIL 0x00000002U
134 #define SDMMC_ERROR_CMD_RSP_TIMEOUT 0x00000004U
135 #define SDMMC_ERROR_DATA_TIMEOUT 0x00000008U
136 #define SDMMC_ERROR_TX_UNDERRUN 0x00000010U
137 #define SDMMC_ERROR_RX_OVERRUN 0x00000020U
138 #define SDMMC_ERROR_ADDR_MISALIGNED 0x00000040U
139 #define SDMMC_ERROR_BLOCK_LEN_ERR 0x00000080U
141 #define SDMMC_ERROR_ERASE_SEQ_ERR 0x00000100U
142 #define SDMMC_ERROR_BAD_ERASE_PARAM 0x00000200U
143 #define SDMMC_ERROR_WRITE_PROT_VIOLATION 0x00000400U
144 #define SDMMC_ERROR_LOCK_UNLOCK_FAILED 0x00000800U
146 #define SDMMC_ERROR_COM_CRC_FAILED 0x00001000U
147 #define SDMMC_ERROR_ILLEGAL_CMD 0x00002000U
148 #define SDMMC_ERROR_CARD_ECC_FAILED 0x00004000U
149 #define SDMMC_ERROR_CC_ERR 0x00008000U
150 #define SDMMC_ERROR_GENERAL_UNKNOWN_ERR 0x00010000U
151 #define SDMMC_ERROR_STREAM_READ_UNDERRUN 0x00020000U
152 #define SDMMC_ERROR_STREAM_WRITE_OVERRUN 0x00040000U
153 #define SDMMC_ERROR_CID_CSD_OVERWRITE 0x00080000U
154 #define SDMMC_ERROR_WP_ERASE_SKIP 0x00100000U
155 #define SDMMC_ERROR_CARD_ECC_DISABLED 0x00200000U
156 #define SDMMC_ERROR_ERASE_RESET 0x00400000U
158 #define SDMMC_ERROR_AKE_SEQ_ERR 0x00800000U
159 #define SDMMC_ERROR_INVALID_VOLTRANGE 0x01000000U
160 #define SDMMC_ERROR_ADDR_OUT_OF_RANGE 0x02000000U
161 #define SDMMC_ERROR_REQUEST_NOT_APPLICABLE 0x04000000U
162 #define SDMMC_ERROR_INVALID_PARAMETER 0x08000000U
163 #define SDMMC_ERROR_UNSUPPORTED_FEATURE 0x10000000U
164 #define SDMMC_ERROR_BUSY 0x20000000U
165 #define SDMMC_ERROR_DMA 0x40000000U
166 #define SDMMC_ERROR_TIMEOUT 0x80000000U
171 #define SDMMC_CMD_GO_IDLE_STATE 0U
172 #define SDMMC_CMD_SEND_OP_COND 1U
173 #define SDMMC_CMD_ALL_SEND_CID 2U
174 #define SDMMC_CMD_SET_REL_ADDR 3U
175 #define SDMMC_CMD_SET_DSR 4U
176 #define SDMMC_CMD_SDMMC_SEN_OP_COND 5U
178 #define SDMMC_CMD_HS_SWITCH 6U
179 #define SDMMC_CMD_SEL_DESEL_CARD 7U
180 #define SDMMC_CMD_HS_SEND_EXT_CSD 8U
182 #define SDMMC_CMD_SEND_CSD 9U
183 #define SDMMC_CMD_SEND_CID 10U
184 #define SDMMC_CMD_READ_DAT_UNTIL_STOP 11U
185 #define SDMMC_CMD_STOP_TRANSMISSION 12U
186 #define SDMMC_CMD_SEND_STATUS 13U
187 #define SDMMC_CMD_HS_BUSTEST_READ 14U
188 #define SDMMC_CMD_GO_INACTIVE_STATE 15U
189 #define SDMMC_CMD_SET_BLOCKLEN 16U
192 #define SDMMC_CMD_READ_SINGLE_BLOCK 17U
194 #define SDMMC_CMD_READ_MULT_BLOCK 18U
196 #define SDMMC_CMD_HS_BUSTEST_WRITE 19U
197 #define SDMMC_CMD_WRITE_DAT_UNTIL_STOP 20U
198 #define SDMMC_CMD_SET_BLOCK_COUNT 23U
199 #define SDMMC_CMD_WRITE_SINGLE_BLOCK 24U
201 #define SDMMC_CMD_WRITE_MULT_BLOCK 25U
202 #define SDMMC_CMD_PROG_CID 26U
203 #define SDMMC_CMD_PROG_CSD 27U
204 #define SDMMC_CMD_SET_WRITE_PROT 28U
205 #define SDMMC_CMD_CLR_WRITE_PROT 29U
206 #define SDMMC_CMD_SEND_WRITE_PROT 30U
207 #define SDMMC_CMD_SD_ERASE_GRP_START 32U
208 #define SDMMC_CMD_SD_ERASE_GRP_END 33U
209 #define SDMMC_CMD_ERASE_GRP_START 35U
211 #define SDMMC_CMD_ERASE_GRP_END 36U
213 #define SDMMC_CMD_ERASE 38U
214 #define SDMMC_CMD_FAST_IO 39U
215 #define SDMMC_CMD_GO_IRQ_STATE 40U
216 #define SDMMC_CMD_LOCK_UNLOCK 42U
218 #define SDMMC_CMD_APP_CMD 55U
220 #define SDMMC_CMD_GEN_CMD 56U
222 #define SDMMC_CMD_NO_CMD 64U
228 #define SDMMC_CMD_APP_SD_SET_BUSWIDTH 6U
230 #define SDMMC_CMD_SD_APP_STATUS 13U
231 #define SDMMC_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS 22U
233 #define SDMMC_CMD_SD_APP_OP_COND 41U
235 #define SDMMC_CMD_SD_APP_SET_CLR_CARD_DETECT 42U
236 #define SDMMC_CMD_SD_APP_SEND_SCR 51U
237 #define SDMMC_CMD_SDMMC_RW_DIRECT 52U
238 #define SDMMC_CMD_SDMMC_RW_EXTENDED 53U
244 #define SDMMC_CMD_SD_APP_GET_MKB 43U
245 #define SDMMC_CMD_SD_APP_GET_MID 44U
246 #define SDMMC_CMD_SD_APP_SET_CER_RN1 45U
247 #define SDMMC_CMD_SD_APP_GET_CER_RN2 46U
248 #define SDMMC_CMD_SD_APP_SET_CER_RES2 47U
249 #define SDMMC_CMD_SD_APP_GET_CER_RES1 48U
250 #define SDMMC_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK 18U
251 #define SDMMC_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK 25U
252 #define SDMMC_CMD_SD_APP_SECURE_ERASE 38U
253 #define SDMMC_CMD_SD_APP_CHANGE_SECURE_AREA 49U
254 #define SDMMC_CMD_SD_APP_SECURE_WRITE_MKB 48U
255 
259 #define SDMMC_OCR_ADDR_OUT_OF_RANGE 0x80000000U
260 #define SDMMC_OCR_ADDR_MISALIGNED 0x40000000U
261 #define SDMMC_OCR_BLOCK_LEN_ERR 0x20000000U
262 #define SDMMC_OCR_ERASE_SEQ_ERR 0x10000000U
263 #define SDMMC_OCR_BAD_ERASE_PARAM 0x08000000U
264 #define SDMMC_OCR_WRITE_PROT_VIOLATION 0x04000000U
265 #define SDMMC_OCR_LOCK_UNLOCK_FAILED 0x01000000U
266 #define SDMMC_OCR_COM_CRC_FAILED 0x00800000U
267 #define SDMMC_OCR_ILLEGAL_CMD 0x00400000U
268 #define SDMMC_OCR_CARD_ECC_FAILED 0x00200000U
269 #define SDMMC_OCR_CC_ERROR 0x00100000U
270 #define SDMMC_OCR_GENERAL_UNKNOWN_ERROR 0x00080000U
271 #define SDMMC_OCR_STREAM_READ_UNDERRUN 0x00040000U
272 #define SDMMC_OCR_STREAM_WRITE_OVERRUN 0x00020000U
273 #define SDMMC_OCR_CID_CSD_OVERWRITE 0x00010000U
274 #define SDMMC_OCR_WP_ERASE_SKIP 0x00008000U
275 #define SDMMC_OCR_CARD_ECC_DISABLED 0x00004000U
276 #define SDMMC_OCR_ERASE_RESET 0x00002000U
277 #define SDMMC_OCR_AKE_SEQ_ERROR 0x00000008U
278 #define SDMMC_OCR_ERRORBITS 0xFDFFE008U
279 
283 #define SDMMC_R6_GENERAL_UNKNOWN_ERROR 0x00002000U
284 #define SDMMC_R6_ILLEGAL_CMD 0x00004000U
285 #define SDMMC_R6_COM_CRC_FAILED 0x00008000U
286 
287 #define SDMMC_VOLTAGE_WINDOW_SD 0x80100000U
288 #define SDMMC_HIGH_CAPACITY 0x40000000U
289 #define SDMMC_STD_CAPACITY 0x00000000U
290 #define SDMMC_CHECK_PATTERN 0x000001AAU
291 #define SD_SWITCH_1_8V_CAPACITY 0x01000000U
292 
293 #define SDMMC_MAX_VOLT_TRIAL 0x0000FFFFU
294 
295 #define SDMMC_MAX_TRIAL 0x0000FFFFU
296 
297 #define SDMMC_ALLZERO 0x00000000U
298 
299 #define SDMMC_WIDE_BUS_SUPPORT 0x00040000U
300 #define SDMMC_SINGLE_BUS_SUPPORT 0x00010000U
301 #define SDMMC_CARD_LOCKED 0x02000000U
302 
303 #ifndef SDMMC_DATATIMEOUT /*Hardware Data Timeout (ms) */
304 #define SDMMC_DATATIMEOUT ((uint32_t)0xFFFFFFFFU)
305 #endif /* SDMMC_DATATIMEOUT */
306 
307 #ifndef SDMMC_SWDATATIMEOUT /*Software Data Timeout (ms) */
308 #define SDMMC_SWDATATIMEOUT SDMMC_DATATIMEOUT
309 #endif /* SDMMC_SWDATATIMEOUT */
310 
311 #define SDMMC_0TO7BITS 0x000000FFU
312 #define SDMMC_8TO15BITS 0x0000FF00U
313 #define SDMMC_16TO23BITS 0x00FF0000U
314 #define SDMMC_24TO31BITS 0xFF000000U
315 #define SDMMC_MAX_DATA_LENGTH 0x01FFFFFFU
316 
317 #define SDMMC_HALFFIFO 0x00000008U
318 #define SDMMC_HALFFIFOBYTES 0x00000020U
319 
323 #define SDIO_CCCC_ERASE 0x00000020U
324 
325 #define SDIO_CMDTIMEOUT 5000U /* Command send and response timeout */
326 #define SDIO_MAXERASETIMEOUT 63000U /* Max erase Timeout 63 s */
327 #define SDIO_STOPTRANSFERTIMEOUT 100000000U /* Timeout for STOP TRANSMISSION command */
328 
332 #define SDIO_CLOCK_EDGE_RISING 0x00000000U
333 #define SDIO_CLOCK_EDGE_FALLING SDIO_CLKCR_NEGEDGE
334 
335 #define IS_SDIO_CLOCK_EDGE(EDGE) (((EDGE) == SDIO_CLOCK_EDGE_RISING) || \
336  ((EDGE) == SDIO_CLOCK_EDGE_FALLING))
344 #define SDIO_CLOCK_BYPASS_DISABLE 0x00000000U
345 #define SDIO_CLOCK_BYPASS_ENABLE SDIO_CLKCR_BYPASS
346 
347 #define IS_SDIO_CLOCK_BYPASS(BYPASS) (((BYPASS) == SDIO_CLOCK_BYPASS_DISABLE) || \
348  ((BYPASS) == SDIO_CLOCK_BYPASS_ENABLE))
356 #define SDIO_CLOCK_POWER_SAVE_DISABLE 0x00000000U
357 #define SDIO_CLOCK_POWER_SAVE_ENABLE SDIO_CLKCR_PWRSAV
358 
359 #define IS_SDIO_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDIO_CLOCK_POWER_SAVE_DISABLE) || \
360  ((SAVE) == SDIO_CLOCK_POWER_SAVE_ENABLE))
368 #define SDIO_BUS_WIDE_1B 0x00000000U
369 #define SDIO_BUS_WIDE_4B SDIO_CLKCR_WIDBUS_0
370 #define SDIO_BUS_WIDE_8B SDIO_CLKCR_WIDBUS_1
371 
372 #define IS_SDIO_BUS_WIDE(WIDE) (((WIDE) == SDIO_BUS_WIDE_1B) || \
373  ((WIDE) == SDIO_BUS_WIDE_4B) || \
374  ((WIDE) == SDIO_BUS_WIDE_8B))
382 #define SDIO_HARDWARE_FLOW_CONTROL_DISABLE 0x00000000U
383 #define SDIO_HARDWARE_FLOW_CONTROL_ENABLE SDIO_CLKCR_HWFC_EN
384 
385 #define IS_SDIO_HARDWARE_FLOW_CONTROL(CONTROL) (((CONTROL) == SDIO_HARDWARE_FLOW_CONTROL_DISABLE) || \
386  ((CONTROL) == SDIO_HARDWARE_FLOW_CONTROL_ENABLE))
394 #define IS_SDIO_CLKDIV(DIV) ((DIV) <= 0xFFU)
402 #define IS_SDIO_CMD_INDEX(INDEX) ((INDEX) < 0x40U)
410 #define SDIO_RESPONSE_NO 0x00000000U
411 #define SDIO_RESPONSE_SHORT SDIO_CMD_WAITRESP_0
412 #define SDIO_RESPONSE_LONG SDIO_CMD_WAITRESP
413 
414 #define IS_SDIO_RESPONSE(RESPONSE) (((RESPONSE) == SDIO_RESPONSE_NO) || \
415  ((RESPONSE) == SDIO_RESPONSE_SHORT) || \
416  ((RESPONSE) == SDIO_RESPONSE_LONG))
424 #define SDIO_WAIT_NO 0x00000000U
425 #define SDIO_WAIT_IT SDIO_CMD_WAITINT
426 #define SDIO_WAIT_PEND SDIO_CMD_WAITPEND
427 
428 #define IS_SDIO_WAIT(WAIT) (((WAIT) == SDIO_WAIT_NO) || \
429  ((WAIT) == SDIO_WAIT_IT) || \
430  ((WAIT) == SDIO_WAIT_PEND))
438 #define SDIO_CPSM_DISABLE 0x00000000U
439 #define SDIO_CPSM_ENABLE SDIO_CMD_CPSMEN
440 
441 #define IS_SDIO_CPSM(CPSM) (((CPSM) == SDIO_CPSM_DISABLE) || \
442  ((CPSM) == SDIO_CPSM_ENABLE))
450 #define SDIO_RESP1 0x00000000U
451 #define SDIO_RESP2 0x00000004U
452 #define SDIO_RESP3 0x00000008U
453 #define SDIO_RESP4 0x0000000CU
454 
455 #define IS_SDIO_RESP(RESP) (((RESP) == SDIO_RESP1) || \
456  ((RESP) == SDIO_RESP2) || \
457  ((RESP) == SDIO_RESP3) || \
458  ((RESP) == SDIO_RESP4))
466 #define IS_SDIO_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFFU)
474 #define SDIO_DATABLOCK_SIZE_1B 0x00000000U
475 #define SDIO_DATABLOCK_SIZE_2B SDIO_DCTRL_DBLOCKSIZE_0
476 #define SDIO_DATABLOCK_SIZE_4B SDIO_DCTRL_DBLOCKSIZE_1
477 #define SDIO_DATABLOCK_SIZE_8B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_1)
478 #define SDIO_DATABLOCK_SIZE_16B SDIO_DCTRL_DBLOCKSIZE_2
479 #define SDIO_DATABLOCK_SIZE_32B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_2)
480 #define SDIO_DATABLOCK_SIZE_64B (SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_2)
481 #define SDIO_DATABLOCK_SIZE_128B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_2)
482 #define SDIO_DATABLOCK_SIZE_256B SDIO_DCTRL_DBLOCKSIZE_3
483 #define SDIO_DATABLOCK_SIZE_512B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_3)
484 #define SDIO_DATABLOCK_SIZE_1024B (SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_3)
485 #define SDIO_DATABLOCK_SIZE_2048B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_3)
486 #define SDIO_DATABLOCK_SIZE_4096B (SDIO_DCTRL_DBLOCKSIZE_2|SDIO_DCTRL_DBLOCKSIZE_3)
487 #define SDIO_DATABLOCK_SIZE_8192B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_2|SDIO_DCTRL_DBLOCKSIZE_3)
488 #define SDIO_DATABLOCK_SIZE_16384B (SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_2|SDIO_DCTRL_DBLOCKSIZE_3)
489 
490 #define IS_SDIO_BLOCK_SIZE(SIZE) (((SIZE) == SDIO_DATABLOCK_SIZE_1B) || \
491  ((SIZE) == SDIO_DATABLOCK_SIZE_2B) || \
492  ((SIZE) == SDIO_DATABLOCK_SIZE_4B) || \
493  ((SIZE) == SDIO_DATABLOCK_SIZE_8B) || \
494  ((SIZE) == SDIO_DATABLOCK_SIZE_16B) || \
495  ((SIZE) == SDIO_DATABLOCK_SIZE_32B) || \
496  ((SIZE) == SDIO_DATABLOCK_SIZE_64B) || \
497  ((SIZE) == SDIO_DATABLOCK_SIZE_128B) || \
498  ((SIZE) == SDIO_DATABLOCK_SIZE_256B) || \
499  ((SIZE) == SDIO_DATABLOCK_SIZE_512B) || \
500  ((SIZE) == SDIO_DATABLOCK_SIZE_1024B) || \
501  ((SIZE) == SDIO_DATABLOCK_SIZE_2048B) || \
502  ((SIZE) == SDIO_DATABLOCK_SIZE_4096B) || \
503  ((SIZE) == SDIO_DATABLOCK_SIZE_8192B) || \
504  ((SIZE) == SDIO_DATABLOCK_SIZE_16384B))
512 #define SDIO_TRANSFER_DIR_TO_CARD 0x00000000U
513 #define SDIO_TRANSFER_DIR_TO_SDIO SDIO_DCTRL_DTDIR
514 
515 #define IS_SDIO_TRANSFER_DIR(DIR) (((DIR) == SDIO_TRANSFER_DIR_TO_CARD) || \
516  ((DIR) == SDIO_TRANSFER_DIR_TO_SDIO))
524 #define SDIO_TRANSFER_MODE_BLOCK 0x00000000U
525 #define SDIO_TRANSFER_MODE_STREAM SDIO_DCTRL_DTMODE
526 
527 #define IS_SDIO_TRANSFER_MODE(MODE) (((MODE) == SDIO_TRANSFER_MODE_BLOCK) || \
528  ((MODE) == SDIO_TRANSFER_MODE_STREAM))
536 #define SDIO_DPSM_DISABLE 0x00000000U
537 #define SDIO_DPSM_ENABLE SDIO_DCTRL_DTEN
538 
539 #define IS_SDIO_DPSM(DPSM) (((DPSM) == SDIO_DPSM_DISABLE) ||\
540  ((DPSM) == SDIO_DPSM_ENABLE))
548 #define SDIO_READ_WAIT_MODE_DATA2 0x00000000U
549 #define SDIO_READ_WAIT_MODE_CLK (SDIO_DCTRL_RWMOD)
550 
551 #define IS_SDIO_READWAIT_MODE(MODE) (((MODE) == SDIO_READ_WAIT_MODE_CLK) || \
552  ((MODE) == SDIO_READ_WAIT_MODE_DATA2))
560 #define SDIO_IT_CCRCFAIL SDIO_MASK_CCRCFAILIE
561 #define SDIO_IT_DCRCFAIL SDIO_MASK_DCRCFAILIE
562 #define SDIO_IT_CTIMEOUT SDIO_MASK_CTIMEOUTIE
563 #define SDIO_IT_DTIMEOUT SDIO_MASK_DTIMEOUTIE
564 #define SDIO_IT_TXUNDERR SDIO_MASK_TXUNDERRIE
565 #define SDIO_IT_RXOVERR SDIO_MASK_RXOVERRIE
566 #define SDIO_IT_CMDREND SDIO_MASK_CMDRENDIE
567 #define SDIO_IT_CMDSENT SDIO_MASK_CMDSENTIE
568 #define SDIO_IT_DATAEND SDIO_MASK_DATAENDIE
569 #if defined(SDIO_STA_STBITERR)
570 #define SDIO_IT_STBITERR SDIO_MASK_STBITERRIE
571 #endif
572 #define SDIO_IT_DBCKEND SDIO_MASK_DBCKENDIE
573 #define SDIO_IT_CMDACT SDIO_MASK_CMDACTIE
574 #define SDIO_IT_TXACT SDIO_MASK_TXACTIE
575 #define SDIO_IT_RXACT SDIO_MASK_RXACTIE
576 #define SDIO_IT_TXFIFOHE SDIO_MASK_TXFIFOHEIE
577 #define SDIO_IT_RXFIFOHF SDIO_MASK_RXFIFOHFIE
578 #define SDIO_IT_TXFIFOF SDIO_MASK_TXFIFOFIE
579 #define SDIO_IT_RXFIFOF SDIO_MASK_RXFIFOFIE
580 #define SDIO_IT_TXFIFOE SDIO_MASK_TXFIFOEIE
581 #define SDIO_IT_RXFIFOE SDIO_MASK_RXFIFOEIE
582 #define SDIO_IT_TXDAVL SDIO_MASK_TXDAVLIE
583 #define SDIO_IT_RXDAVL SDIO_MASK_RXDAVLIE
584 #define SDIO_IT_SDIOIT SDIO_MASK_SDIOITIE
585 #if defined(SDIO_CMD_CEATACMD)
586 #define SDIO_IT_CEATAEND SDIO_MASK_CEATAENDIE
587 #endif
595 #define SDIO_FLAG_CCRCFAIL SDIO_STA_CCRCFAIL
596 #define SDIO_FLAG_DCRCFAIL SDIO_STA_DCRCFAIL
597 #define SDIO_FLAG_CTIMEOUT SDIO_STA_CTIMEOUT
598 #define SDIO_FLAG_DTIMEOUT SDIO_STA_DTIMEOUT
599 #define SDIO_FLAG_TXUNDERR SDIO_STA_TXUNDERR
600 #define SDIO_FLAG_RXOVERR SDIO_STA_RXOVERR
601 #define SDIO_FLAG_CMDREND SDIO_STA_CMDREND
602 #define SDIO_FLAG_CMDSENT SDIO_STA_CMDSENT
603 #define SDIO_FLAG_DATAEND SDIO_STA_DATAEND
604 #if defined(SDIO_STA_STBITERR)
605 #define SDIO_FLAG_STBITERR SDIO_STA_STBITERR
606 #endif
607 #define SDIO_FLAG_DBCKEND SDIO_STA_DBCKEND
608 #define SDIO_FLAG_CMDACT SDIO_STA_CMDACT
609 #define SDIO_FLAG_TXACT SDIO_STA_TXACT
610 #define SDIO_FLAG_RXACT SDIO_STA_RXACT
611 #define SDIO_FLAG_TXFIFOHE SDIO_STA_TXFIFOHE
612 #define SDIO_FLAG_RXFIFOHF SDIO_STA_RXFIFOHF
613 #define SDIO_FLAG_TXFIFOF SDIO_STA_TXFIFOF
614 #define SDIO_FLAG_RXFIFOF SDIO_STA_RXFIFOF
615 #define SDIO_FLAG_TXFIFOE SDIO_STA_TXFIFOE
616 #define SDIO_FLAG_RXFIFOE SDIO_STA_RXFIFOE
617 #define SDIO_FLAG_TXDAVL SDIO_STA_TXDAVL
618 #define SDIO_FLAG_RXDAVL SDIO_STA_RXDAVL
619 #define SDIO_FLAG_SDIOIT SDIO_STA_SDIOIT
620 #if defined(SDIO_CMD_CEATACMD)
621 #define SDIO_FLAG_CEATAEND SDIO_STA_CEATAEND
622 #endif
623 #define SDIO_STATIC_FLAGS ((uint32_t)(SDIO_FLAG_CCRCFAIL | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_CTIMEOUT |\
624  SDIO_FLAG_DTIMEOUT | SDIO_FLAG_TXUNDERR | SDIO_FLAG_RXOVERR |\
625  SDIO_FLAG_CMDREND | SDIO_FLAG_CMDSENT | SDIO_FLAG_DATAEND |\
626  SDIO_FLAG_DBCKEND | SDIO_FLAG_SDIOIT))
627 
628 #define SDIO_STATIC_CMD_FLAGS ((uint32_t)(SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CTIMEOUT | SDIO_FLAG_CMDREND |\
629  SDIO_FLAG_CMDSENT))
630 
631 #define SDIO_STATIC_DATA_FLAGS ((uint32_t)(SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_TXUNDERR |\
632  SDIO_FLAG_RXOVERR | SDIO_FLAG_DATAEND | SDIO_FLAG_DBCKEND))
641 /* Exported macro ------------------------------------------------------------*/
649 /* ------------ SDIO registers bit address in the alias region -------------- */
650 #define SDIO_OFFSET (SDIO_BASE - PERIPH_BASE)
651 
652 /* --- CLKCR Register ---*/
653 /* Alias word address of CLKEN bit */
654 #define CLKCR_OFFSET (SDIO_OFFSET + 0x04U)
655 #define CLKEN_BITNUMBER 0x08U
656 #define CLKCR_CLKEN_BB (PERIPH_BB_BASE + (CLKCR_OFFSET * 32U) + (CLKEN_BITNUMBER * 4U))
657 
658 /* --- CMD Register ---*/
659 /* Alias word address of SDIOSUSPEND bit */
660 #define CMD_OFFSET (SDIO_OFFSET + 0x0CU)
661 #define SDIOSUSPEND_BITNUMBER 0x0BU
662 #define CMD_SDIOSUSPEND_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (SDIOSUSPEND_BITNUMBER * 4U))
663 
664 /* Alias word address of ENCMDCOMPL bit */
665 #define ENCMDCOMPL_BITNUMBER 0x0CU
666 #define CMD_ENCMDCOMPL_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (ENCMDCOMPL_BITNUMBER * 4U))
667 
668 /* Alias word address of NIEN bit */
669 #define NIEN_BITNUMBER 0x0DU
670 #define CMD_NIEN_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (NIEN_BITNUMBER * 4U))
671 
672 /* Alias word address of ATACMD bit */
673 #define ATACMD_BITNUMBER 0x0EU
674 #define CMD_ATACMD_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (ATACMD_BITNUMBER * 4U))
675 
676 /* --- DCTRL Register ---*/
677 /* Alias word address of DMAEN bit */
678 #define DCTRL_OFFSET (SDIO_OFFSET + 0x2CU)
679 #define DMAEN_BITNUMBER 0x03U
680 #define DCTRL_DMAEN_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (DMAEN_BITNUMBER * 4U))
681 
682 /* Alias word address of RWSTART bit */
683 #define RWSTART_BITNUMBER 0x08U
684 #define DCTRL_RWSTART_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (RWSTART_BITNUMBER * 4U))
685 
686 /* Alias word address of RWSTOP bit */
687 #define RWSTOP_BITNUMBER 0x09U
688 #define DCTRL_RWSTOP_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (RWSTOP_BITNUMBER * 4U))
689 
690 /* Alias word address of RWMOD bit */
691 #define RWMOD_BITNUMBER 0x0AU
692 #define DCTRL_RWMOD_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (RWMOD_BITNUMBER * 4U))
693 
694 /* Alias word address of SDIOEN bit */
695 #define SDIOEN_BITNUMBER 0x0BU
696 #define DCTRL_SDIOEN_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (SDIOEN_BITNUMBER * 4U))
705 /* ---------------------- SDIO registers bit mask --------------------------- */
706 /* --- CLKCR Register ---*/
707 /* CLKCR register clear mask */
708 #define CLKCR_CLEAR_MASK ((uint32_t)(SDIO_CLKCR_CLKDIV | SDIO_CLKCR_PWRSAV |\
709  SDIO_CLKCR_BYPASS | SDIO_CLKCR_WIDBUS |\
710  SDIO_CLKCR_NEGEDGE | SDIO_CLKCR_HWFC_EN))
711 
712 /* --- DCTRL Register ---*/
713 /* SDIO DCTRL Clear Mask */
714 #define DCTRL_CLEAR_MASK ((uint32_t)(SDIO_DCTRL_DTEN | SDIO_DCTRL_DTDIR |\
715  SDIO_DCTRL_DTMODE | SDIO_DCTRL_DBLOCKSIZE))
716 
717 /* --- CMD Register ---*/
718 /* CMD Register clear mask */
719 #define CMD_CLEAR_MASK ((uint32_t)(SDIO_CMD_CMDINDEX | SDIO_CMD_WAITRESP |\
720  SDIO_CMD_WAITINT | SDIO_CMD_WAITPEND |\
721  SDIO_CMD_CPSMEN | SDIO_CMD_SDIOSUSPEND))
722 
723 /* SDIO Initialization Frequency (400KHz max) */
724 #define SDIO_INIT_CLK_DIV ((uint8_t)0x76) /* 48MHz / (SDMMC_INIT_CLK_DIV + 2) < 400KHz */
725 
726 /* SDIO Data Transfer Frequency (25MHz max) */
727 #define SDIO_TRANSFER_CLK_DIV ((uint8_t)0x0) /* 48MHz / (SDMMC_TRANSFER_CLK_DIV + 2) < 25MHz */
742 #define __SDIO_ENABLE(__INSTANCE__) (*(__IO uint32_t *)CLKCR_CLKEN_BB = ENABLE)
743 
749 #define __SDIO_DISABLE(__INSTANCE__) (*(__IO uint32_t *)CLKCR_CLKEN_BB = DISABLE)
750 
756 #define __SDIO_DMA_ENABLE(__INSTANCE__) (*(__IO uint32_t *)DCTRL_DMAEN_BB = ENABLE)
757 
763 #define __SDIO_DMA_DISABLE(__INSTANCE__) (*(__IO uint32_t *)DCTRL_DMAEN_BB = DISABLE)
764 
794 #define __SDIO_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK |= (__INTERRUPT__))
795 
825 #define __SDIO_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK &= ~(__INTERRUPT__))
826 
856 #define __SDIO_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->STA &(__FLAG__)) != 0U)
857 
858 
877 #define __SDIO_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->ICR = (__FLAG__))
878 
908 #define __SDIO_GET_IT (__INSTANCE__, __INTERRUPT__) (((__INSTANCE__)->STA &(__INTERRUPT__)) == (__INTERRUPT__))
909 
927 #define __SDIO_CLEAR_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->ICR = (__INTERRUPT__))
928 
934 #define __SDIO_START_READWAIT_ENABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTART_BB = ENABLE)
935 
941 #define __SDIO_START_READWAIT_DISABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTART_BB = DISABLE)
942 
948 #define __SDIO_STOP_READWAIT_ENABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTOP_BB = ENABLE)
949 
955 #define __SDIO_STOP_READWAIT_DISABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTOP_BB = DISABLE)
956 
962 #define __SDIO_OPERATION_ENABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_SDIOEN_BB = ENABLE)
963 
969 #define __SDIO_OPERATION_DISABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_SDIOEN_BB = DISABLE)
970 
976 #define __SDIO_SUSPEND_CMD_ENABLE(__INSTANCE__) (*(__IO uint32_t *) CMD_SDIOSUSPEND_BB = ENABLE)
977 
983 #define __SDIO_SUSPEND_CMD_DISABLE(__INSTANCE__) (*(__IO uint32_t *) CMD_SDIOSUSPEND_BB = DISABLE)
984 
985 #if defined(SDIO_CMD_CEATACMD)
990 #define __SDIO_CEATA_CMD_COMPLETION_ENABLE() (*(__IO uint32_t *) CMD_ENCMDCOMPL_BB = ENABLE)
991 
996 #define __SDIO_CEATA_CMD_COMPLETION_DISABLE() (*(__IO uint32_t *) CMD_ENCMDCOMPL_BB = DISABLE)
997 
1002 #define __SDIO_CEATA_ENABLE_IT() (*(__IO uint32_t *) CMD_NIEN_BB = (uint32_t)0U)
1003 
1008 #define __SDIO_CEATA_DISABLE_IT() (*(__IO uint32_t *) CMD_NIEN_BB = (uint32_t)1U)
1009 
1014 #define __SDIO_CEATA_SENDCMD_ENABLE() (*(__IO uint32_t *) CMD_ATACMD_BB = ENABLE)
1015 
1020 #define __SDIO_CEATA_SENDCMD_DISABLE() (*(__IO uint32_t *) CMD_ATACMD_BB = DISABLE)
1021 
1022 #endif
1031 /* Exported functions --------------------------------------------------------*/
1036 /* Initialization/de-initialization functions **********************************/
1040 HAL_StatusTypeDef SDIO_Init(SDIO_TypeDef *SDIOx, SDIO_InitTypeDef Init);
1045 /* I/O operation functions *****************************************************/
1049 uint32_t SDIO_ReadFIFO(SDIO_TypeDef *SDIOx);
1050 HAL_StatusTypeDef SDIO_WriteFIFO(SDIO_TypeDef *SDIOx, uint32_t *pWriteData);
1055 /* Peripheral Control functions ************************************************/
1059 HAL_StatusTypeDef SDIO_PowerState_ON(SDIO_TypeDef *SDIOx);
1060 HAL_StatusTypeDef SDIO_PowerState_OFF(SDIO_TypeDef *SDIOx);
1061 uint32_t SDIO_GetPowerState(SDIO_TypeDef *SDIOx);
1062 
1063 /* Command path state machine (CPSM) management functions */
1064 HAL_StatusTypeDef SDIO_SendCommand(SDIO_TypeDef *SDIOx, SDIO_CmdInitTypeDef *Command);
1065 uint8_t SDIO_GetCommandResponse(SDIO_TypeDef *SDIOx);
1066 uint32_t SDIO_GetResponse(SDIO_TypeDef *SDIOx, uint32_t Response);
1067 
1068 /* Data path state machine (DPSM) management functions */
1069 HAL_StatusTypeDef SDIO_ConfigData(SDIO_TypeDef *SDIOx, SDIO_DataInitTypeDef* Data);
1070 uint32_t SDIO_GetDataCounter(SDIO_TypeDef *SDIOx);
1071 uint32_t SDIO_GetFIFOCount(SDIO_TypeDef *SDIOx);
1072 
1073 /* SDMMC Cards mode management functions */
1074 HAL_StatusTypeDef SDIO_SetSDMMCReadWaitMode(SDIO_TypeDef *SDIOx, uint32_t SDIO_ReadWaitMode);
1079 /* SDMMC Commands management functions */
1083 uint32_t SDMMC_CmdBlockLength(SDIO_TypeDef *SDIOx, uint32_t BlockSize);
1084 uint32_t SDMMC_CmdReadSingleBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd);
1085 uint32_t SDMMC_CmdReadMultiBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd);
1086 uint32_t SDMMC_CmdWriteSingleBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd);
1087 uint32_t SDMMC_CmdWriteMultiBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd);
1088 uint32_t SDMMC_CmdEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd);
1089 uint32_t SDMMC_CmdSDEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd);
1090 uint32_t SDMMC_CmdEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd);
1091 uint32_t SDMMC_CmdSDEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd);
1092 uint32_t SDMMC_CmdErase(SDIO_TypeDef *SDIOx);
1093 uint32_t SDMMC_CmdStopTransfer(SDIO_TypeDef *SDIOx);
1094 uint32_t SDMMC_CmdSelDesel(SDIO_TypeDef *SDIOx, uint64_t Addr);
1095 uint32_t SDMMC_CmdGoIdleState(SDIO_TypeDef *SDIOx);
1096 uint32_t SDMMC_CmdOperCond(SDIO_TypeDef *SDIOx);
1097 uint32_t SDMMC_CmdAppCommand(SDIO_TypeDef *SDIOx, uint32_t Argument);
1098 uint32_t SDMMC_CmdAppOperCommand(SDIO_TypeDef *SDIOx, uint32_t Argument);
1099 uint32_t SDMMC_CmdBusWidth(SDIO_TypeDef *SDIOx, uint32_t BusWidth);
1100 uint32_t SDMMC_CmdSendSCR(SDIO_TypeDef *SDIOx);
1101 uint32_t SDMMC_CmdSendCID(SDIO_TypeDef *SDIOx);
1102 uint32_t SDMMC_CmdSendCSD(SDIO_TypeDef *SDIOx, uint32_t Argument);
1103 uint32_t SDMMC_CmdSetRelAdd(SDIO_TypeDef *SDIOx, uint16_t *pRCA);
1104 uint32_t SDMMC_CmdSetRelAddMmc(SDIO_TypeDef *SDIOx, uint16_t RCA);
1105 uint32_t SDMMC_CmdSendStatus(SDIO_TypeDef *SDIOx, uint32_t Argument);
1106 uint32_t SDMMC_CmdStatusRegister(SDIO_TypeDef *SDIOx);
1107 uint32_t SDMMC_CmdOpCondition(SDIO_TypeDef *SDIOx, uint32_t Argument);
1108 uint32_t SDMMC_CmdSwitch(SDIO_TypeDef *SDIOx, uint32_t Argument);
1109 uint32_t SDMMC_CmdSendEXTCSD(SDIO_TypeDef *SDIOx, uint32_t Argument);
1114 /* SDMMC Responses management functions *****************************************/
1118 uint32_t SDMMC_GetCmdResp1(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint32_t Timeout);
1119 uint32_t SDMMC_GetCmdResp2(SDIO_TypeDef *SDIOx);
1120 uint32_t SDMMC_GetCmdResp3(SDIO_TypeDef *SDIOx);
1121 uint32_t SDMMC_GetCmdResp6(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint16_t *pRCA);
1122 uint32_t SDMMC_GetCmdResp7(SDIO_TypeDef *SDIOx);
1139 #endif /* SDIO */
1140 
1141 #ifdef __cplusplus
1142 }
1143 #endif
1144 
1145 #endif /* STM32F4xx_LL_SDMMC_H */
HAL_StatusTypeDef SDIO_Init(SDIO_TypeDef *SDIOx, SDIO_InitTypeDef Init)
Initializes the SDMMC according to the specified parameters in the SDMMC_InitTypeDef and create the a...
uint32_t SDIO_ReadFIFO(SDIO_TypeDef *SDIOx)
Read data (word) from Rx FIFO in blocking mode (polling)
HAL_StatusTypeDef SDIO_WriteFIFO(SDIO_TypeDef *SDIOx, uint32_t *pWriteData)
Write data (word) to Tx FIFO in blocking mode (polling)
HAL_StatusTypeDef SDIO_PowerState_OFF(SDIO_TypeDef *SDIOx)
Set SDMMC Power state to OFF.
uint32_t SDIO_GetPowerState(SDIO_TypeDef *SDIOx)
Get SDMMC Power state.
HAL_StatusTypeDef SDIO_SendCommand(SDIO_TypeDef *SDIOx, SDIO_CmdInitTypeDef *Command)
Configure the SDMMC command path according to the specified parameters in SDIO_CmdInitTypeDef structu...
HAL_StatusTypeDef SDIO_PowerState_ON(SDIO_TypeDef *SDIOx)
Set SDMMC Power state to ON.
HAL_StatusTypeDef SDIO_ConfigData(SDIO_TypeDef *SDIOx, SDIO_DataInitTypeDef *Data)
Configure the SDMMC data path according to the specified parameters in the SDIO_DataInitTypeDef.
uint8_t SDIO_GetCommandResponse(SDIO_TypeDef *SDIOx)
Return the command index of last command for which response received.
uint32_t SDIO_GetFIFOCount(SDIO_TypeDef *SDIOx)
Get the FIFO data.
uint32_t SDIO_GetDataCounter(SDIO_TypeDef *SDIOx)
Returns number of remaining data bytes to be transferred.
uint32_t SDIO_GetResponse(SDIO_TypeDef *SDIOx, uint32_t Response)
Return the response received from the card for the last command.
HAL_StatusTypeDef SDIO_SetSDMMCReadWaitMode(SDIO_TypeDef *SDIOx, uint32_t SDIO_ReadWaitMode)
Sets one of the two options of inserting read wait interval.
uint32_t SDMMC_CmdSwitch(SDIO_TypeDef *SDIOx, uint32_t Argument)
Checks switchable function and switch card function. SDMMC_CMD_HS_SWITCH command.
uint32_t SDMMC_CmdSelDesel(SDIO_TypeDef *SDIOx, uint64_t Addr)
Send the Select Deselect command and check the response.
uint32_t SDMMC_CmdBlockLength(SDIO_TypeDef *SDIOx, uint32_t BlockSize)
Send the Data Block Length command and check the response.
uint32_t SDMMC_CmdWriteSingleBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd)
Send the Write Single Block command and check the response.
uint32_t SDMMC_CmdAppCommand(SDIO_TypeDef *SDIOx, uint32_t Argument)
Send the Application command to verify that that the next command is an application specific com-mand...
uint32_t SDMMC_CmdEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd)
Send the Start Address Erase command and check the response.
uint32_t SDMMC_CmdOperCond(SDIO_TypeDef *SDIOx)
Send the Operating Condition command and check the response.
uint32_t SDMMC_CmdGoIdleState(SDIO_TypeDef *SDIOx)
Send the Go Idle State command and check the response.
uint32_t SDMMC_CmdBusWidth(SDIO_TypeDef *SDIOx, uint32_t BusWidth)
Send the Bus Width command and check the response.
uint32_t SDMMC_CmdSetRelAddMmc(SDIO_TypeDef *SDIOx, uint16_t RCA)
Send the Set Relative Address command to MMC card (not SD card).
uint32_t SDMMC_CmdWriteMultiBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd)
Send the Write Multi Block command and check the response.
uint32_t SDMMC_CmdErase(SDIO_TypeDef *SDIOx)
Send the Erase command and check the response.
uint32_t SDMMC_CmdEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd)
Send the End Address Erase command and check the response.
uint32_t SDMMC_CmdStopTransfer(SDIO_TypeDef *SDIOx)
Send the Stop Transfer command and check the response.
uint32_t SDMMC_CmdSendEXTCSD(SDIO_TypeDef *SDIOx, uint32_t Argument)
Send the Send EXT_CSD command and check the response.
uint32_t SDMMC_CmdSDEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd)
Send the Start Address Erase command for SD and check the response.
uint32_t SDMMC_CmdSendSCR(SDIO_TypeDef *SDIOx)
Send the Send SCR command and check the response.
uint32_t SDMMC_CmdStatusRegister(SDIO_TypeDef *SDIOx)
Send the Status register command and check the response.
uint32_t SDMMC_CmdSendCSD(SDIO_TypeDef *SDIOx, uint32_t Argument)
Send the Send CSD command and check the response.
uint32_t SDMMC_CmdReadMultiBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd)
Send the Read Multi Block command and check the response.
uint32_t SDMMC_CmdOpCondition(SDIO_TypeDef *SDIOx, uint32_t Argument)
Sends host capacity support information and activates the card's initialization process....
uint32_t SDMMC_CmdSendCID(SDIO_TypeDef *SDIOx)
Send the Send CID command and check the response.
uint32_t SDMMC_CmdSetRelAdd(SDIO_TypeDef *SDIOx, uint16_t *pRCA)
Send the Send CSD command and check the response.
uint32_t SDMMC_CmdReadSingleBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd)
Send the Read Single Block command and check the response.
uint32_t SDMMC_CmdSDEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd)
Send the End Address Erase command for SD and check the response.
uint32_t SDMMC_CmdAppOperCommand(SDIO_TypeDef *SDIOx, uint32_t Argument)
Send the command asking the accessed card to send its operating condition register (OCR)
uint32_t SDMMC_CmdSendStatus(SDIO_TypeDef *SDIOx, uint32_t Argument)
Send the Status command and check the response.
uint32_t SDMMC_GetCmdResp7(SDIO_TypeDef *SDIOx)
Checks for error conditions for R7 response.
uint32_t SDMMC_GetCmdResp2(SDIO_TypeDef *SDIOx)
Checks for error conditions for R2 (CID or CSD) response.
uint32_t SDMMC_GetCmdResp6(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint16_t *pRCA)
Checks for error conditions for R6 (RCA) response.
uint32_t SDMMC_GetCmdResp3(SDIO_TypeDef *SDIOx)
Checks for error conditions for R3 (OCR) response.
uint32_t SDMMC_GetCmdResp1(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint32_t Timeout)
Checks for error conditions for R1 response.
This file contains HAL common defines, enumeration, macros and structures definitions.
SDMMC Command Control structure.
SDMMC Data Control structure.