STM32F10x Standard Peripherals Library
3.5.0
|
00001 00023 /* Define to prevent recursive inclusion -------------------------------------*/ 00024 #ifndef __STM32F10x_SDIO_H 00025 #define __STM32F10x_SDIO_H 00026 00027 #ifdef __cplusplus 00028 extern "C" { 00029 #endif 00030 00031 /* Includes ------------------------------------------------------------------*/ 00032 #include "stm32f10x.h" 00033 00046 typedef struct 00047 { 00048 uint32_t SDIO_ClockEdge; 00051 uint32_t SDIO_ClockBypass; 00055 uint32_t SDIO_ClockPowerSave; 00059 uint32_t SDIO_BusWide; 00062 uint32_t SDIO_HardwareFlowControl; 00065 uint8_t SDIO_ClockDiv; 00068 } SDIO_InitTypeDef; 00069 00070 typedef struct 00071 { 00072 uint32_t SDIO_Argument; 00077 uint32_t SDIO_CmdIndex; 00079 uint32_t SDIO_Response; 00082 uint32_t SDIO_Wait; 00085 uint32_t SDIO_CPSM; 00088 } SDIO_CmdInitTypeDef; 00089 00090 typedef struct 00091 { 00092 uint32_t SDIO_DataTimeOut; 00094 uint32_t SDIO_DataLength; 00096 uint32_t SDIO_DataBlockSize; 00099 uint32_t SDIO_TransferDir; 00103 uint32_t SDIO_TransferMode; 00106 uint32_t SDIO_DPSM; 00109 } SDIO_DataInitTypeDef; 00110 00123 #define SDIO_ClockEdge_Rising ((uint32_t)0x00000000) 00124 #define SDIO_ClockEdge_Falling ((uint32_t)0x00002000) 00125 #define IS_SDIO_CLOCK_EDGE(EDGE) (((EDGE) == SDIO_ClockEdge_Rising) || \ 00126 ((EDGE) == SDIO_ClockEdge_Falling)) 00127 00135 #define SDIO_ClockBypass_Disable ((uint32_t)0x00000000) 00136 #define SDIO_ClockBypass_Enable ((uint32_t)0x00000400) 00137 #define IS_SDIO_CLOCK_BYPASS(BYPASS) (((BYPASS) == SDIO_ClockBypass_Disable) || \ 00138 ((BYPASS) == SDIO_ClockBypass_Enable)) 00139 00147 #define SDIO_ClockPowerSave_Disable ((uint32_t)0x00000000) 00148 #define SDIO_ClockPowerSave_Enable ((uint32_t)0x00000200) 00149 #define IS_SDIO_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDIO_ClockPowerSave_Disable) || \ 00150 ((SAVE) == SDIO_ClockPowerSave_Enable)) 00151 00159 #define SDIO_BusWide_1b ((uint32_t)0x00000000) 00160 #define SDIO_BusWide_4b ((uint32_t)0x00000800) 00161 #define SDIO_BusWide_8b ((uint32_t)0x00001000) 00162 #define IS_SDIO_BUS_WIDE(WIDE) (((WIDE) == SDIO_BusWide_1b) || ((WIDE) == SDIO_BusWide_4b) || \ 00163 ((WIDE) == SDIO_BusWide_8b)) 00164 00173 #define SDIO_HardwareFlowControl_Disable ((uint32_t)0x00000000) 00174 #define SDIO_HardwareFlowControl_Enable ((uint32_t)0x00004000) 00175 #define IS_SDIO_HARDWARE_FLOW_CONTROL(CONTROL) (((CONTROL) == SDIO_HardwareFlowControl_Disable) || \ 00176 ((CONTROL) == SDIO_HardwareFlowControl_Enable)) 00177 00185 #define SDIO_PowerState_OFF ((uint32_t)0x00000000) 00186 #define SDIO_PowerState_ON ((uint32_t)0x00000003) 00187 #define IS_SDIO_POWER_STATE(STATE) (((STATE) == SDIO_PowerState_OFF) || ((STATE) == SDIO_PowerState_ON)) 00188 00197 #define SDIO_IT_CCRCFAIL ((uint32_t)0x00000001) 00198 #define SDIO_IT_DCRCFAIL ((uint32_t)0x00000002) 00199 #define SDIO_IT_CTIMEOUT ((uint32_t)0x00000004) 00200 #define SDIO_IT_DTIMEOUT ((uint32_t)0x00000008) 00201 #define SDIO_IT_TXUNDERR ((uint32_t)0x00000010) 00202 #define SDIO_IT_RXOVERR ((uint32_t)0x00000020) 00203 #define SDIO_IT_CMDREND ((uint32_t)0x00000040) 00204 #define SDIO_IT_CMDSENT ((uint32_t)0x00000080) 00205 #define SDIO_IT_DATAEND ((uint32_t)0x00000100) 00206 #define SDIO_IT_STBITERR ((uint32_t)0x00000200) 00207 #define SDIO_IT_DBCKEND ((uint32_t)0x00000400) 00208 #define SDIO_IT_CMDACT ((uint32_t)0x00000800) 00209 #define SDIO_IT_TXACT ((uint32_t)0x00001000) 00210 #define SDIO_IT_RXACT ((uint32_t)0x00002000) 00211 #define SDIO_IT_TXFIFOHE ((uint32_t)0x00004000) 00212 #define SDIO_IT_RXFIFOHF ((uint32_t)0x00008000) 00213 #define SDIO_IT_TXFIFOF ((uint32_t)0x00010000) 00214 #define SDIO_IT_RXFIFOF ((uint32_t)0x00020000) 00215 #define SDIO_IT_TXFIFOE ((uint32_t)0x00040000) 00216 #define SDIO_IT_RXFIFOE ((uint32_t)0x00080000) 00217 #define SDIO_IT_TXDAVL ((uint32_t)0x00100000) 00218 #define SDIO_IT_RXDAVL ((uint32_t)0x00200000) 00219 #define SDIO_IT_SDIOIT ((uint32_t)0x00400000) 00220 #define SDIO_IT_CEATAEND ((uint32_t)0x00800000) 00221 #define IS_SDIO_IT(IT) ((((IT) & (uint32_t)0xFF000000) == 0x00) && ((IT) != (uint32_t)0x00)) 00222 00230 #define IS_SDIO_CMD_INDEX(INDEX) ((INDEX) < 0x40) 00231 00239 #define SDIO_Response_No ((uint32_t)0x00000000) 00240 #define SDIO_Response_Short ((uint32_t)0x00000040) 00241 #define SDIO_Response_Long ((uint32_t)0x000000C0) 00242 #define IS_SDIO_RESPONSE(RESPONSE) (((RESPONSE) == SDIO_Response_No) || \ 00243 ((RESPONSE) == SDIO_Response_Short) || \ 00244 ((RESPONSE) == SDIO_Response_Long)) 00245 00253 #define SDIO_Wait_No ((uint32_t)0x00000000) 00254 #define SDIO_Wait_IT ((uint32_t)0x00000100) 00255 #define SDIO_Wait_Pend ((uint32_t)0x00000200) 00256 #define IS_SDIO_WAIT(WAIT) (((WAIT) == SDIO_Wait_No) || ((WAIT) == SDIO_Wait_IT) || \ 00257 ((WAIT) == SDIO_Wait_Pend)) 00258 00266 #define SDIO_CPSM_Disable ((uint32_t)0x00000000) 00267 #define SDIO_CPSM_Enable ((uint32_t)0x00000400) 00268 #define IS_SDIO_CPSM(CPSM) (((CPSM) == SDIO_CPSM_Enable) || ((CPSM) == SDIO_CPSM_Disable)) 00269 00277 #define SDIO_RESP1 ((uint32_t)0x00000000) 00278 #define SDIO_RESP2 ((uint32_t)0x00000004) 00279 #define SDIO_RESP3 ((uint32_t)0x00000008) 00280 #define SDIO_RESP4 ((uint32_t)0x0000000C) 00281 #define IS_SDIO_RESP(RESP) (((RESP) == SDIO_RESP1) || ((RESP) == SDIO_RESP2) || \ 00282 ((RESP) == SDIO_RESP3) || ((RESP) == SDIO_RESP4)) 00283 00291 #define IS_SDIO_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFF) 00292 00300 #define SDIO_DataBlockSize_1b ((uint32_t)0x00000000) 00301 #define SDIO_DataBlockSize_2b ((uint32_t)0x00000010) 00302 #define SDIO_DataBlockSize_4b ((uint32_t)0x00000020) 00303 #define SDIO_DataBlockSize_8b ((uint32_t)0x00000030) 00304 #define SDIO_DataBlockSize_16b ((uint32_t)0x00000040) 00305 #define SDIO_DataBlockSize_32b ((uint32_t)0x00000050) 00306 #define SDIO_DataBlockSize_64b ((uint32_t)0x00000060) 00307 #define SDIO_DataBlockSize_128b ((uint32_t)0x00000070) 00308 #define SDIO_DataBlockSize_256b ((uint32_t)0x00000080) 00309 #define SDIO_DataBlockSize_512b ((uint32_t)0x00000090) 00310 #define SDIO_DataBlockSize_1024b ((uint32_t)0x000000A0) 00311 #define SDIO_DataBlockSize_2048b ((uint32_t)0x000000B0) 00312 #define SDIO_DataBlockSize_4096b ((uint32_t)0x000000C0) 00313 #define SDIO_DataBlockSize_8192b ((uint32_t)0x000000D0) 00314 #define SDIO_DataBlockSize_16384b ((uint32_t)0x000000E0) 00315 #define IS_SDIO_BLOCK_SIZE(SIZE) (((SIZE) == SDIO_DataBlockSize_1b) || \ 00316 ((SIZE) == SDIO_DataBlockSize_2b) || \ 00317 ((SIZE) == SDIO_DataBlockSize_4b) || \ 00318 ((SIZE) == SDIO_DataBlockSize_8b) || \ 00319 ((SIZE) == SDIO_DataBlockSize_16b) || \ 00320 ((SIZE) == SDIO_DataBlockSize_32b) || \ 00321 ((SIZE) == SDIO_DataBlockSize_64b) || \ 00322 ((SIZE) == SDIO_DataBlockSize_128b) || \ 00323 ((SIZE) == SDIO_DataBlockSize_256b) || \ 00324 ((SIZE) == SDIO_DataBlockSize_512b) || \ 00325 ((SIZE) == SDIO_DataBlockSize_1024b) || \ 00326 ((SIZE) == SDIO_DataBlockSize_2048b) || \ 00327 ((SIZE) == SDIO_DataBlockSize_4096b) || \ 00328 ((SIZE) == SDIO_DataBlockSize_8192b) || \ 00329 ((SIZE) == SDIO_DataBlockSize_16384b)) 00330 00338 #define SDIO_TransferDir_ToCard ((uint32_t)0x00000000) 00339 #define SDIO_TransferDir_ToSDIO ((uint32_t)0x00000002) 00340 #define IS_SDIO_TRANSFER_DIR(DIR) (((DIR) == SDIO_TransferDir_ToCard) || \ 00341 ((DIR) == SDIO_TransferDir_ToSDIO)) 00342 00350 #define SDIO_TransferMode_Block ((uint32_t)0x00000000) 00351 #define SDIO_TransferMode_Stream ((uint32_t)0x00000004) 00352 #define IS_SDIO_TRANSFER_MODE(MODE) (((MODE) == SDIO_TransferMode_Stream) || \ 00353 ((MODE) == SDIO_TransferMode_Block)) 00354 00362 #define SDIO_DPSM_Disable ((uint32_t)0x00000000) 00363 #define SDIO_DPSM_Enable ((uint32_t)0x00000001) 00364 #define IS_SDIO_DPSM(DPSM) (((DPSM) == SDIO_DPSM_Enable) || ((DPSM) == SDIO_DPSM_Disable)) 00365 00373 #define SDIO_FLAG_CCRCFAIL ((uint32_t)0x00000001) 00374 #define SDIO_FLAG_DCRCFAIL ((uint32_t)0x00000002) 00375 #define SDIO_FLAG_CTIMEOUT ((uint32_t)0x00000004) 00376 #define SDIO_FLAG_DTIMEOUT ((uint32_t)0x00000008) 00377 #define SDIO_FLAG_TXUNDERR ((uint32_t)0x00000010) 00378 #define SDIO_FLAG_RXOVERR ((uint32_t)0x00000020) 00379 #define SDIO_FLAG_CMDREND ((uint32_t)0x00000040) 00380 #define SDIO_FLAG_CMDSENT ((uint32_t)0x00000080) 00381 #define SDIO_FLAG_DATAEND ((uint32_t)0x00000100) 00382 #define SDIO_FLAG_STBITERR ((uint32_t)0x00000200) 00383 #define SDIO_FLAG_DBCKEND ((uint32_t)0x00000400) 00384 #define SDIO_FLAG_CMDACT ((uint32_t)0x00000800) 00385 #define SDIO_FLAG_TXACT ((uint32_t)0x00001000) 00386 #define SDIO_FLAG_RXACT ((uint32_t)0x00002000) 00387 #define SDIO_FLAG_TXFIFOHE ((uint32_t)0x00004000) 00388 #define SDIO_FLAG_RXFIFOHF ((uint32_t)0x00008000) 00389 #define SDIO_FLAG_TXFIFOF ((uint32_t)0x00010000) 00390 #define SDIO_FLAG_RXFIFOF ((uint32_t)0x00020000) 00391 #define SDIO_FLAG_TXFIFOE ((uint32_t)0x00040000) 00392 #define SDIO_FLAG_RXFIFOE ((uint32_t)0x00080000) 00393 #define SDIO_FLAG_TXDAVL ((uint32_t)0x00100000) 00394 #define SDIO_FLAG_RXDAVL ((uint32_t)0x00200000) 00395 #define SDIO_FLAG_SDIOIT ((uint32_t)0x00400000) 00396 #define SDIO_FLAG_CEATAEND ((uint32_t)0x00800000) 00397 #define IS_SDIO_FLAG(FLAG) (((FLAG) == SDIO_FLAG_CCRCFAIL) || \ 00398 ((FLAG) == SDIO_FLAG_DCRCFAIL) || \ 00399 ((FLAG) == SDIO_FLAG_CTIMEOUT) || \ 00400 ((FLAG) == SDIO_FLAG_DTIMEOUT) || \ 00401 ((FLAG) == SDIO_FLAG_TXUNDERR) || \ 00402 ((FLAG) == SDIO_FLAG_RXOVERR) || \ 00403 ((FLAG) == SDIO_FLAG_CMDREND) || \ 00404 ((FLAG) == SDIO_FLAG_CMDSENT) || \ 00405 ((FLAG) == SDIO_FLAG_DATAEND) || \ 00406 ((FLAG) == SDIO_FLAG_STBITERR) || \ 00407 ((FLAG) == SDIO_FLAG_DBCKEND) || \ 00408 ((FLAG) == SDIO_FLAG_CMDACT) || \ 00409 ((FLAG) == SDIO_FLAG_TXACT) || \ 00410 ((FLAG) == SDIO_FLAG_RXACT) || \ 00411 ((FLAG) == SDIO_FLAG_TXFIFOHE) || \ 00412 ((FLAG) == SDIO_FLAG_RXFIFOHF) || \ 00413 ((FLAG) == SDIO_FLAG_TXFIFOF) || \ 00414 ((FLAG) == SDIO_FLAG_RXFIFOF) || \ 00415 ((FLAG) == SDIO_FLAG_TXFIFOE) || \ 00416 ((FLAG) == SDIO_FLAG_RXFIFOE) || \ 00417 ((FLAG) == SDIO_FLAG_TXDAVL) || \ 00418 ((FLAG) == SDIO_FLAG_RXDAVL) || \ 00419 ((FLAG) == SDIO_FLAG_SDIOIT) || \ 00420 ((FLAG) == SDIO_FLAG_CEATAEND)) 00421 00422 #define IS_SDIO_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFF3FF800) == 0x00) && ((FLAG) != (uint32_t)0x00)) 00423 00424 #define IS_SDIO_GET_IT(IT) (((IT) == SDIO_IT_CCRCFAIL) || \ 00425 ((IT) == SDIO_IT_DCRCFAIL) || \ 00426 ((IT) == SDIO_IT_CTIMEOUT) || \ 00427 ((IT) == SDIO_IT_DTIMEOUT) || \ 00428 ((IT) == SDIO_IT_TXUNDERR) || \ 00429 ((IT) == SDIO_IT_RXOVERR) || \ 00430 ((IT) == SDIO_IT_CMDREND) || \ 00431 ((IT) == SDIO_IT_CMDSENT) || \ 00432 ((IT) == SDIO_IT_DATAEND) || \ 00433 ((IT) == SDIO_IT_STBITERR) || \ 00434 ((IT) == SDIO_IT_DBCKEND) || \ 00435 ((IT) == SDIO_IT_CMDACT) || \ 00436 ((IT) == SDIO_IT_TXACT) || \ 00437 ((IT) == SDIO_IT_RXACT) || \ 00438 ((IT) == SDIO_IT_TXFIFOHE) || \ 00439 ((IT) == SDIO_IT_RXFIFOHF) || \ 00440 ((IT) == SDIO_IT_TXFIFOF) || \ 00441 ((IT) == SDIO_IT_RXFIFOF) || \ 00442 ((IT) == SDIO_IT_TXFIFOE) || \ 00443 ((IT) == SDIO_IT_RXFIFOE) || \ 00444 ((IT) == SDIO_IT_TXDAVL) || \ 00445 ((IT) == SDIO_IT_RXDAVL) || \ 00446 ((IT) == SDIO_IT_SDIOIT) || \ 00447 ((IT) == SDIO_IT_CEATAEND)) 00448 00449 #define IS_SDIO_CLEAR_IT(IT) ((((IT) & (uint32_t)0xFF3FF800) == 0x00) && ((IT) != (uint32_t)0x00)) 00450 00459 #define SDIO_ReadWaitMode_CLK ((uint32_t)0x00000001) 00460 #define SDIO_ReadWaitMode_DATA2 ((uint32_t)0x00000000) 00461 #define IS_SDIO_READWAIT_MODE(MODE) (((MODE) == SDIO_ReadWaitMode_CLK) || \ 00462 ((MODE) == SDIO_ReadWaitMode_DATA2)) 00463 00483 void SDIO_DeInit(void); 00484 void SDIO_Init(SDIO_InitTypeDef* SDIO_InitStruct); 00485 void SDIO_StructInit(SDIO_InitTypeDef* SDIO_InitStruct); 00486 void SDIO_ClockCmd(FunctionalState NewState); 00487 void SDIO_SetPowerState(uint32_t SDIO_PowerState); 00488 uint32_t SDIO_GetPowerState(void); 00489 void SDIO_ITConfig(uint32_t SDIO_IT, FunctionalState NewState); 00490 void SDIO_DMACmd(FunctionalState NewState); 00491 void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct); 00492 void SDIO_CmdStructInit(SDIO_CmdInitTypeDef* SDIO_CmdInitStruct); 00493 uint8_t SDIO_GetCommandResponse(void); 00494 uint32_t SDIO_GetResponse(uint32_t SDIO_RESP); 00495 void SDIO_DataConfig(SDIO_DataInitTypeDef* SDIO_DataInitStruct); 00496 void SDIO_DataStructInit(SDIO_DataInitTypeDef* SDIO_DataInitStruct); 00497 uint32_t SDIO_GetDataCounter(void); 00498 uint32_t SDIO_ReadData(void); 00499 void SDIO_WriteData(uint32_t Data); 00500 uint32_t SDIO_GetFIFOCount(void); 00501 void SDIO_StartSDIOReadWait(FunctionalState NewState); 00502 void SDIO_StopSDIOReadWait(FunctionalState NewState); 00503 void SDIO_SetSDIOReadWaitMode(uint32_t SDIO_ReadWaitMode); 00504 void SDIO_SetSDIOOperation(FunctionalState NewState); 00505 void SDIO_SendSDIOSuspendCmd(FunctionalState NewState); 00506 void SDIO_CommandCompletionCmd(FunctionalState NewState); 00507 void SDIO_CEATAITCmd(FunctionalState NewState); 00508 void SDIO_SendCEATACmd(FunctionalState NewState); 00509 FlagStatus SDIO_GetFlagStatus(uint32_t SDIO_FLAG); 00510 void SDIO_ClearFlag(uint32_t SDIO_FLAG); 00511 ITStatus SDIO_GetITStatus(uint32_t SDIO_IT); 00512 void SDIO_ClearITPendingBit(uint32_t SDIO_IT); 00513 00514 #ifdef __cplusplus 00515 } 00516 #endif 00517 00518 #endif /* __STM32F10x_SDIO_H */ 00519 00531 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/