11 #ifndef __MG32F157_SDIO_H 12 #define __MG32F157_SDIO_H 36 uint32_t ClockPowerSave;
71 uint32_t DataBlockSize;
75 uint32_t TransferMode;
87 #define IS_SDIO_ALL_PERIPH(SDIOX) (((SDIOX) == SDIO)) 93 #define SDIO_CLOCK_POWER_SAVE_DISABLE 0x00000000U 94 #define SDIO_CLOCK_POWER_SAVE_ENABLE 0x0000FFFFU // SDIO_CLKCR_PWRSAV 95 #define IS_SDIO_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDIO_CLOCK_POWER_SAVE_DISABLE) || \ 96 ((SAVE) == SDIO_CLOCK_POWER_SAVE_ENABLE)) 105 #define SDIO_BUS_WIDE_1B 0x00000000U 106 #define SDIO_BUS_WIDE_4B 0x0000FFFFU // SDIO_CLKCR_WIDBUS_0 107 #define SDIO_BUS_WIDE_8B 0xFFFFFFFFU // SDIO_CLKCR_WIDBUS_1 108 #define IS_SDIO_BUS_WIDE(WIDE) (((WIDE) == SDIO_BUS_WIDE_1B) || \ 109 ((WIDE) == SDIO_BUS_WIDE_4B) || \ 110 ((WIDE) == SDIO_BUS_WIDE_8B)) 119 #define IS_SDIO_CLKDIV(DIV) ((DIV) <= 0xFFU) 128 #define IS_SDIO_CMD_INDEX(INDEX) ((INDEX) < 0x40U) 137 #define SDIO_Response_No 0x00000000U 138 #define SDIO_Response_Short 0x00000040U // SDIO_CMD_WAITRESP_0 139 #define SDIO_Response_Long 0x000000C0U // SDIO_CMD_WAITRESP 140 #define IS_SDIO_RESPONSE(RESPONSE) (((RESPONSE) == SDIO_Response_No) || \ 141 ((RESPONSE) == SDIO_Response_Short) || \ 142 ((RESPONSE) == SDIO_Response_Long)) 151 #define SDIO_CPSM_Disable 0x00000000U 152 #define SDIO_CPSM_Enable 0 153 #define IS_SDIO_CPSM(CPSM) 1 162 #define SDIO_RESP1 0x00000000U 163 #define SDIO_RESP2 0x00000004U 164 #define SDIO_RESP3 0x00000008U 165 #define SDIO_RESP4 0x0000000CU 166 #define IS_SDIO_RESP(RESP) (((RESP) == SDIO_RESP1) || \ 167 ((RESP) == SDIO_RESP2) || \ 168 ((RESP) == SDIO_RESP3) || \ 169 ((RESP) == SDIO_RESP4)) 178 #define IS_SDIO_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFFU) 187 #define SDIO_DATABLOCK_SIZE_1B 0x00000000U 188 #define SDIO_DATABLOCK_SIZE_2B 0x00000002U 189 #define SDIO_DATABLOCK_SIZE_4B 0x00000004U 190 #define SDIO_DATABLOCK_SIZE_8B 0x00000008U 191 #define SDIO_DATABLOCK_SIZE_16B 0x00000010U 192 #define SDIO_DATABLOCK_SIZE_32B 0x00000020U 193 #define SDIO_DATABLOCK_SIZE_64B 0x00000040U 194 #define SDIO_DATABLOCK_SIZE_128B 0x00000080U 195 #define SDIO_DATABLOCK_SIZE_256B 0x00000100U 196 #define SDIO_DATABLOCK_SIZE_512B 0x00000200U 197 #define SDIO_DATABLOCK_SIZE_1024B 0x00000400U 198 #define SDIO_DATABLOCK_SIZE_2048B 0x00000800U 199 #define SDIO_DATABLOCK_SIZE_4096B 0x00001000U 200 #define SDIO_DATABLOCK_SIZE_8192B 0x00002000U 201 #define SDIO_DATABLOCK_SIZE_16384B 0x00004000U 202 #define SDIO_DATABLOCK_SIZE_32768B 0x00008000U 203 #define IS_SDIO_BLOCK_SIZE(SIZE) (((SIZE) == SDIO_DATABLOCK_SIZE_1B) || \ 204 ((SIZE) == SDIO_DATABLOCK_SIZE_2B) || \ 205 ((SIZE) == SDIO_DATABLOCK_SIZE_4B) || \ 206 ((SIZE) == SDIO_DATABLOCK_SIZE_8B) || \ 207 ((SIZE) == SDIO_DATABLOCK_SIZE_16B) || \ 208 ((SIZE) == SDIO_DATABLOCK_SIZE_32B) || \ 209 ((SIZE) == SDIO_DATABLOCK_SIZE_64B) || \ 210 ((SIZE) == SDIO_DATABLOCK_SIZE_128B) || \ 211 ((SIZE) == SDIO_DATABLOCK_SIZE_256B) || \ 212 ((SIZE) == SDIO_DATABLOCK_SIZE_512B) || \ 213 ((SIZE) == SDIO_DATABLOCK_SIZE_1024B) || \ 214 ((SIZE) == SDIO_DATABLOCK_SIZE_2048B) || \ 215 ((SIZE) == SDIO_DATABLOCK_SIZE_4096B) || \ 216 ((SIZE) == SDIO_DATABLOCK_SIZE_8192B) || \ 217 ((SIZE) == SDIO_DATABLOCK_SIZE_16384B) || \ 218 ((SIZE) == SDIO_DATABLOCK_SIZE_32768B)) 227 #define SDIO_TransferDir_ToCard 0x00000000U 228 #define SDIO_TransferDir_ToSDIO 0x00000001U 229 #define IS_SDIO_TRANSFER_DIR(DIR) (((DIR) == SDIO_TransferDir_ToCard) || \ 230 ((DIR) == SDIO_TransferDir_ToSDIO)) 239 #define SDIO_TransferMode_Block 0x00000000U 240 #define SDIO_TransferMode_Stream SDIO_CMD_TRANSFER_MODE 241 #define IS_SDIO_TRANSFER_MODE(MODE) (((MODE) == SDIO_TransferMode_Block) || \ 242 ((MODE) == SDIO_TransferMode_Stream)) 251 #define SDIO_DPSM_Disable 0x00000000U 252 #define SDIO_DPSM_Enable 0x00000001U 253 #define IS_SDIO_DPSM(DPSM) (((DPSM) == SDIO_DPSM_Disable) || \ 254 ((DPSM) == SDIO_DPSM_Enable)) 263 #define SDIO_IT_CCRCFAIL SDIO_RINTSTS_RESPCRCERR // SDIO_STA_CCRCFAIL 264 #define SDIO_IT_DCRCFAIL SDIO_RINTSTS_DATACRCERR // SDIO_STA_DCRCFAIL 265 #define SDIO_IT_CTIMEOUT SDIO_RINTSTS_RESPTIMEOUT // SDIO_STA_CTIMEOUT 266 #define SDIO_IT_DTIMEOUT SDIO_RINTSTS_DATATIMEOUT // SDIO_STA_DTIMEOUT 267 #define SDIO_IT_TXUNDERR SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_TXUNDERR 268 #define SDIO_IT_RXOVERR SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_RXOVERR 269 #define SDIO_IT_CMDREND SDIO_RINTSTS_CMDDONE // SDIO_STA_CMDREND 270 #define SDIO_IT_CMDSENT SDIO_RINTSTS_CMDDONE // SDIO_STA_CMDSENT 271 #define SDIO_IT_DATAEND SDIO_RINTSTS_DTRANSFEROVER // SDIO_STA_DATAEND 272 #define SDIO_IT_STBITERR SDIO_RINTSTS_STARTERROR // SDIO_STA_STBITERR 273 #define SDIO_IT_DBCKEND SDIO_RINTSTS_DTRANSFEROVER // SDIO_STA_DBCKEND 274 #define SDIO_IT_TXFIFOF SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_TXFIFOF 275 #define SDIO_IT_RXFIFOF SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_RXFIFOF 276 #define SDIO_IT_TXDAVL SDIO_RINTSTS_TXDATAREQ // SDIO_STA_TXDAVL 277 #define SDIO_IT_RXDAVL SDIO_RINTSTS_RXDATAREQ // SDIO_STA_RXDAVL 278 #define SDIO_IT_SDIOIT SDIO_RINTSTS_SDIOIT // SDIO_STA_SDIOIT 279 #define SDIO_IT_ALL 0xFFFFFFFF // SDIO_STA_ALL 280 #define IS_SDIO_IT(IT) (((IT) == SDIO_IT_DCRCFAIL) || \ 281 ((IT) == SDIO_IT_CTIMEOUT) || \ 282 ((IT) == SDIO_IT_DTIMEOUT) || \ 283 ((IT) == SDIO_IT_TXUNDERR) || \ 284 ((IT) == SDIO_IT_RXOVERR) || \ 285 ((IT) == SDIO_IT_CMDREND ) || \ 286 ((IT) == SDIO_IT_CMDSENT ) || \ 287 ((IT) == SDIO_IT_DATAEND ) || \ 288 ((IT) == SDIO_IT_STBITERR) || \ 289 ((IT) == SDIO_IT_DBCKEND ) || \ 290 ((IT) == SDIO_IT_TXFIFOF ) || \ 291 ((IT) == SDIO_IT_RXFIFOF ) || \ 292 ((IT) == SDIO_IT_TXDAVL ) || \ 293 ((IT) == SDIO_IT_RXDAVL ) || \ 294 ((IT) == SDIO_IT_SDIOIT)) 303 #define SDIO_FLAG_CCRCFAIL SDIO_RINTSTS_RESPCRCERR // SDIO_STA_CCRCFAIL 304 #define SDIO_FLAG_DCRCFAIL SDIO_RINTSTS_DATACRCERR // SDIO_STA_DCRCFAIL 305 #define SDIO_FLAG_CTIMEOUT SDIO_RINTSTS_RESPTIMEOUT // SDIO_STA_CTIMEOUT 306 #define SDIO_FLAG_DTIMEOUT SDIO_RINTSTS_DATATIMEOUT // SDIO_STA_DTIMEOUT 307 #define SDIO_FLAG_TXUNDERR SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_TXUNDERR 308 #define SDIO_FLAG_RXOVERR SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_RXOVERR 309 #define SDIO_FLAG_CMDREND SDIO_RINTSTS_CMDDONE // SDIO_STA_CMDREND 310 #define SDIO_FLAG_CMDSENT SDIO_RINTSTS_CMDDONE // SDIO_STA_CMDSENT 311 #define SDIO_FLAG_DATAEND SDIO_RINTSTS_DTRANSFEROVER // SDIO_STA_DATAEND 312 #define SDIO_FLAG_STBITERR SDIO_RINTSTS_STARTERROR // SDIO_STA_STBITERR 313 #define SDIO_FLAG_DBCKEND SDIO_RINTSTS_DTRANSFEROVER // SDIO_STA_DBCKEND 314 #define SDIO_FLAG_BUSYCLEAR SDIO_RINTSTS_BUSYCLEAR 315 #define SDIO_FLAG_TXFIFOF SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_TXFIFOF 316 #define SDIO_FLAG_RXFIFOF SDIO_RINTSTS_UNDER_OVER_RUN // SDIO_STA_RXFIFOF 317 #define SDIO_FLAG_TXDAVL SDIO_RINTSTS_TXDATAREQ // SDIO_STA_TXDAVL 318 #define SDIO_FLAG_RXDAVL SDIO_RINTSTS_RXDATAREQ // SDIO_STA_RXDAVL 319 #define SDIO_FLAG_SDIOIT SDIO_RINTSTS_SDIOIT // SDIO_STA_SDIOIT 320 #define SDIO_FLAG_ALL 0xFFFFFFFF 321 #define SDIO_STATIC_FLAGS ((uint32_t)(SDIO_FLAG_TXDAVL |SDIO_FLAG_RXDAVL | SDIO_FLAG_CCRCFAIL | SDIO_FLAG_DCRCFAIL | \ 322 SDIO_FLAG_CTIMEOUT | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_TXUNDERR | SDIO_FLAG_RXOVERR | \ 323 SDIO_FLAG_CMDREND | SDIO_FLAG_CMDSENT | SDIO_FLAG_DATAEND | SDIO_FLAG_DBCKEND)) 332 #define SDIO_CMD_CLK_UPDATE 0xA0202000 333 #define SDIO_CMD_COMPLATE_FLAG 0x80000000 342 #define SDIO_CTRL_RESET 0x00000007 351 #define SDIO_PowerState_OFF 0x01 352 #define SDIO_PowerState_ON 0x02 SDIO Command Control structure.
Definition: mg32f157_sdio.h:48
uint32_t SDIO_ReadFIFO(SDIO_TypeDef *SDIOx)
Read data (word) from Rx FIFO in blocking mode (polling)
Definition: mg32f157_sdio.c:120
void SDIO_WriteFIFO(SDIO_TypeDef *SDIOx, uint32_t *pWriteData)
Write data (word) to Tx FIFO in blocking mode (polling)
Definition: mg32f157_sdio.c:134
void SDIO_ConfigBusWidth(SDIO_TypeDef *SDIOx, uint32_t BusWidth)
Configure the width of the SDIO data bus.
Definition: mg32f157_sdio.c:96
uint8_t SDIO_GetCommandResponse(SDIO_TypeDef *SDIOx)
Return the command index of last command for which response received.
Definition: mg32f157_sdio.c:498
void SDIO_ControlReset(SDIO_TypeDef *SDIOx)
Reset the SDIO Controller.
Definition: mg32f157_sdio.c:232
void SDIO_PowerOFF(SDIO_TypeDef *SDIOx)
Set SDIO Power state to OFF.
Definition: mg32f157_sdio.c:160
uint32_t SDIO_GetResponse(SDIO_TypeDef *SDIOx, uint32_t Response)
Return the response received from the card for the last command.
Definition: mg32f157_sdio.c:516
void SDIO_ITConfig(SDIO_TypeDef *SDIOx, uint32_t SDIO_IT, FunctionalState NewState)
Enables or disables the SDIO interrupts.
Definition: mg32f157_sdio.c:298
FlagStatus SDIO_GetFlagStatus(SDIO_TypeDef *SDIOx, uint32_t SDIO_FLAG)
Checks whether the specified SDIO flag is set or not.
Definition: mg32f157_sdio.c:346
ITStatus SDIO_GetITStatus(SDIO_TypeDef *SDIOx, uint32_t SDIO_IT)
Checks whether the specified SDIO interrupt has occurred or not.
Definition: mg32f157_sdio.c:413
void SDIO_ConfigData(SDIO_TypeDef *SDIOx, SDIO_DataInitTypeDef *Data)
Configure the SDIO data path according to the specified parameters in the SDIO_DataInitTypeDef.
Definition: mg32f157_sdio.c:539
void SDIO_ClearFlagStatus(SDIO_TypeDef *SDIOx, uint32_t SDIO_FLAG)
Clears the SDIO's pending flags.
Definition: mg32f157_sdio.c:379
void SDIO_ClockCmd(SDIO_TypeDef *SDIOx, FunctionalState NewState)
Enables or disables the SDIO Clock.
Definition: mg32f157_sdio.c:194
void SDIO_DeInit(SDIO_TypeDef *SDIOx)
Deinitializes the SDIOx peripheral registers to their default reset values.
Definition: mg32f157_sdio.c:40
void SDIO_DMACmd(SDIO_TypeDef *SDIOx, FunctionalState NewState)
Enables or disables the SDIO DMA request.
Definition: mg32f157_sdio.c:251
void SDIO_ClearITPendingBit(SDIO_TypeDef *SDIOx, uint32_t SDIO_IT)
Clears the SDIO's interrupt pending bits.
Definition: mg32f157_sdio.c:448
void SDIO_SendCommand(SDIO_TypeDef *SDIOx, SDIO_CmdInitTypeDef *Command)
Configure the SDIO command path according to the specified parameters in SDIO_CmdInitTypeDef structur...
Definition: mg32f157_sdio.c:464
void SDIO_ClockUpdate(SDIO_TypeDef *SDIOx)
Update the SDIO Clock.
Definition: mg32f157_sdio.c:215
void SDIO_PowerON(SDIO_TypeDef *SDIOx)
Set SDIO Power state to ON.
Definition: mg32f157_sdio.c:147
void SDIO_Init(SDIO_TypeDef *SDIOx, SDIO_InitTypeDef *SDIO_InitStruct)
Initializes the SDIO according to the specified parameters in the SDIO_InitTypeDef and create the ass...
Definition: mg32f157_sdio.c:64
SDIO Init structure definition.
Definition: mg32f157_sdio.h:34
Definition: mg32f157.h:793
uint32_t SDIO_GetPower(SDIO_TypeDef *SDIOx)
Get SDIO Power state.
Definition: mg32f157_sdio.c:177
SDIO Data Control structure.
Definition: mg32f157_sdio.h:65