The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
emilmont
Date:
Fri Feb 14 14:36:43 2014 +0000
Revision:
77:869cf507173a
Child:
81:7d30d6019079
Release 77 of the mbed library

Main changes:
* Add target NUCLEO_F030R8
* Add target NUCLEO_F401RE
* Add target NUCLEO_F103RB
* Add target NUCLEO_L152RE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 77:869cf507173a 1 /**
emilmont 77:869cf507173a 2 ******************************************************************************
emilmont 77:869cf507173a 3 * @file stm32l1xx_sdio.h
emilmont 77:869cf507173a 4 * @author MCD Application Team
emilmont 77:869cf507173a 5 * @version V1.3.0
emilmont 77:869cf507173a 6 * @date 31-January-2014
emilmont 77:869cf507173a 7 * @brief This file contains all the functions prototypes for the SDIO firmware
emilmont 77:869cf507173a 8 * library.
emilmont 77:869cf507173a 9 ******************************************************************************
emilmont 77:869cf507173a 10 * @attention
emilmont 77:869cf507173a 11 *
emilmont 77:869cf507173a 12 * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
emilmont 77:869cf507173a 13 *
emilmont 77:869cf507173a 14 * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
emilmont 77:869cf507173a 15 * You may not use this file except in compliance with the License.
emilmont 77:869cf507173a 16 * You may obtain a copy of the License at:
emilmont 77:869cf507173a 17 *
emilmont 77:869cf507173a 18 * http://www.st.com/software_license_agreement_liberty_v2
emilmont 77:869cf507173a 19 *
emilmont 77:869cf507173a 20 * Unless required by applicable law or agreed to in writing, software
emilmont 77:869cf507173a 21 * distributed under the License is distributed on an "AS IS" BASIS,
emilmont 77:869cf507173a 22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
emilmont 77:869cf507173a 23 * See the License for the specific language governing permissions and
emilmont 77:869cf507173a 24 * limitations under the License.
emilmont 77:869cf507173a 25 *
emilmont 77:869cf507173a 26 ******************************************************************************
emilmont 77:869cf507173a 27 */
emilmont 77:869cf507173a 28
emilmont 77:869cf507173a 29 /* Define to prevent recursive inclusion -------------------------------------*/
emilmont 77:869cf507173a 30 #ifndef __STM32L1xx_SDIO_H
emilmont 77:869cf507173a 31 #define __STM32L1xx_SDIO_H
emilmont 77:869cf507173a 32
emilmont 77:869cf507173a 33 #ifdef __cplusplus
emilmont 77:869cf507173a 34 extern "C" {
emilmont 77:869cf507173a 35 #endif
emilmont 77:869cf507173a 36
emilmont 77:869cf507173a 37 /* Includes ------------------------------------------------------------------*/
emilmont 77:869cf507173a 38 #include "stm32l1xx.h"
emilmont 77:869cf507173a 39
emilmont 77:869cf507173a 40 /** @addtogroup STM32L1xx_StdPeriph_Driver
emilmont 77:869cf507173a 41 * @{
emilmont 77:869cf507173a 42 */
emilmont 77:869cf507173a 43
emilmont 77:869cf507173a 44 /** @addtogroup SDIO
emilmont 77:869cf507173a 45 * @{
emilmont 77:869cf507173a 46 */
emilmont 77:869cf507173a 47
emilmont 77:869cf507173a 48 /* Exported types ------------------------------------------------------------*/
emilmont 77:869cf507173a 49
emilmont 77:869cf507173a 50 typedef struct
emilmont 77:869cf507173a 51 {
emilmont 77:869cf507173a 52 uint32_t SDIO_ClockEdge; /*!< Specifies the clock transition on which the bit capture is made.
emilmont 77:869cf507173a 53 This parameter can be a value of @ref SDIO_Clock_Edge */
emilmont 77:869cf507173a 54
emilmont 77:869cf507173a 55 uint32_t SDIO_ClockBypass; /*!< Specifies whether the SDIO Clock divider bypass is
emilmont 77:869cf507173a 56 enabled or disabled.
emilmont 77:869cf507173a 57 This parameter can be a value of @ref SDIO_Clock_Bypass */
emilmont 77:869cf507173a 58
emilmont 77:869cf507173a 59 uint32_t SDIO_ClockPowerSave; /*!< Specifies whether SDIO Clock output is enabled or
emilmont 77:869cf507173a 60 disabled when the bus is idle.
emilmont 77:869cf507173a 61 This parameter can be a value of @ref SDIO_Clock_Power_Save */
emilmont 77:869cf507173a 62
emilmont 77:869cf507173a 63 uint32_t SDIO_BusWide; /*!< Specifies the SDIO bus width.
emilmont 77:869cf507173a 64 This parameter can be a value of @ref SDIO_Bus_Wide */
emilmont 77:869cf507173a 65
emilmont 77:869cf507173a 66 uint32_t SDIO_HardwareFlowControl; /*!< Specifies whether the SDIO hardware flow control is enabled or disabled.
emilmont 77:869cf507173a 67 This parameter can be a value of @ref SDIO_Hardware_Flow_Control */
emilmont 77:869cf507173a 68
emilmont 77:869cf507173a 69 uint8_t SDIO_ClockDiv; /*!< Specifies the clock frequency of the SDIO controller.
emilmont 77:869cf507173a 70 This parameter can be a value between 0x00 and 0xFF. */
emilmont 77:869cf507173a 71
emilmont 77:869cf507173a 72 } SDIO_InitTypeDef;
emilmont 77:869cf507173a 73
emilmont 77:869cf507173a 74 typedef struct
emilmont 77:869cf507173a 75 {
emilmont 77:869cf507173a 76 uint32_t SDIO_Argument; /*!< Specifies the SDIO command argument which is sent
emilmont 77:869cf507173a 77 to a card as part of a command message. If a command
emilmont 77:869cf507173a 78 contains an argument, it must be loaded into this register
emilmont 77:869cf507173a 79 before writing the command to the command register */
emilmont 77:869cf507173a 80
emilmont 77:869cf507173a 81 uint32_t SDIO_CmdIndex; /*!< Specifies the SDIO command index. It must be lower than 0x40. */
emilmont 77:869cf507173a 82
emilmont 77:869cf507173a 83 uint32_t SDIO_Response; /*!< Specifies the SDIO response type.
emilmont 77:869cf507173a 84 This parameter can be a value of @ref SDIO_Response_Type */
emilmont 77:869cf507173a 85
emilmont 77:869cf507173a 86 uint32_t SDIO_Wait; /*!< Specifies whether SDIO wait-for-interrupt request is enabled or disabled.
emilmont 77:869cf507173a 87 This parameter can be a value of @ref SDIO_Wait_Interrupt_State */
emilmont 77:869cf507173a 88
emilmont 77:869cf507173a 89 uint32_t SDIO_CPSM; /*!< Specifies whether SDIO Command path state machine (CPSM)
emilmont 77:869cf507173a 90 is enabled or disabled.
emilmont 77:869cf507173a 91 This parameter can be a value of @ref SDIO_CPSM_State */
emilmont 77:869cf507173a 92 } SDIO_CmdInitTypeDef;
emilmont 77:869cf507173a 93
emilmont 77:869cf507173a 94 typedef struct
emilmont 77:869cf507173a 95 {
emilmont 77:869cf507173a 96 uint32_t SDIO_DataTimeOut; /*!< Specifies the data timeout period in card bus clock periods. */
emilmont 77:869cf507173a 97
emilmont 77:869cf507173a 98 uint32_t SDIO_DataLength; /*!< Specifies the number of data bytes to be transferred. */
emilmont 77:869cf507173a 99
emilmont 77:869cf507173a 100 uint32_t SDIO_DataBlockSize; /*!< Specifies the data block size for block transfer.
emilmont 77:869cf507173a 101 This parameter can be a value of @ref SDIO_Data_Block_Size */
emilmont 77:869cf507173a 102
emilmont 77:869cf507173a 103 uint32_t SDIO_TransferDir; /*!< Specifies the data transfer direction, whether the transfer
emilmont 77:869cf507173a 104 is a read or write.
emilmont 77:869cf507173a 105 This parameter can be a value of @ref SDIO_Transfer_Direction */
emilmont 77:869cf507173a 106
emilmont 77:869cf507173a 107 uint32_t SDIO_TransferMode; /*!< Specifies whether data transfer is in stream or block mode.
emilmont 77:869cf507173a 108 This parameter can be a value of @ref SDIO_Transfer_Type */
emilmont 77:869cf507173a 109
emilmont 77:869cf507173a 110 uint32_t SDIO_DPSM; /*!< Specifies whether SDIO Data path state machine (DPSM)
emilmont 77:869cf507173a 111 is enabled or disabled.
emilmont 77:869cf507173a 112 This parameter can be a value of @ref SDIO_DPSM_State */
emilmont 77:869cf507173a 113 } SDIO_DataInitTypeDef;
emilmont 77:869cf507173a 114
emilmont 77:869cf507173a 115 /* Exported constants --------------------------------------------------------*/
emilmont 77:869cf507173a 116
emilmont 77:869cf507173a 117 /** @defgroup SDIO_Exported_Constants
emilmont 77:869cf507173a 118 * @{
emilmont 77:869cf507173a 119 */
emilmont 77:869cf507173a 120
emilmont 77:869cf507173a 121 /** @defgroup SDIO_Clock_Edge
emilmont 77:869cf507173a 122 * @{
emilmont 77:869cf507173a 123 */
emilmont 77:869cf507173a 124
emilmont 77:869cf507173a 125 #define SDIO_ClockEdge_Rising ((uint32_t)0x00000000)
emilmont 77:869cf507173a 126 #define SDIO_ClockEdge_Falling ((uint32_t)0x00002000)
emilmont 77:869cf507173a 127 #define IS_SDIO_CLOCK_EDGE(EDGE) (((EDGE) == SDIO_ClockEdge_Rising) || \
emilmont 77:869cf507173a 128 ((EDGE) == SDIO_ClockEdge_Falling))
emilmont 77:869cf507173a 129 /**
emilmont 77:869cf507173a 130 * @}
emilmont 77:869cf507173a 131 */
emilmont 77:869cf507173a 132
emilmont 77:869cf507173a 133 /** @defgroup SDIO_Clock_Bypass
emilmont 77:869cf507173a 134 * @{
emilmont 77:869cf507173a 135 */
emilmont 77:869cf507173a 136
emilmont 77:869cf507173a 137 #define SDIO_ClockBypass_Disable ((uint32_t)0x00000000)
emilmont 77:869cf507173a 138 #define SDIO_ClockBypass_Enable ((uint32_t)0x00000400)
emilmont 77:869cf507173a 139 #define IS_SDIO_CLOCK_BYPASS(BYPASS) (((BYPASS) == SDIO_ClockBypass_Disable) || \
emilmont 77:869cf507173a 140 ((BYPASS) == SDIO_ClockBypass_Enable))
emilmont 77:869cf507173a 141 /**
emilmont 77:869cf507173a 142 * @}
emilmont 77:869cf507173a 143 */
emilmont 77:869cf507173a 144
emilmont 77:869cf507173a 145 /** @defgroup SDIO_Clock_Power_Save
emilmont 77:869cf507173a 146 * @{
emilmont 77:869cf507173a 147 */
emilmont 77:869cf507173a 148
emilmont 77:869cf507173a 149 #define SDIO_ClockPowerSave_Disable ((uint32_t)0x00000000)
emilmont 77:869cf507173a 150 #define SDIO_ClockPowerSave_Enable ((uint32_t)0x00000200)
emilmont 77:869cf507173a 151 #define IS_SDIO_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDIO_ClockPowerSave_Disable) || \
emilmont 77:869cf507173a 152 ((SAVE) == SDIO_ClockPowerSave_Enable))
emilmont 77:869cf507173a 153 /**
emilmont 77:869cf507173a 154 * @}
emilmont 77:869cf507173a 155 */
emilmont 77:869cf507173a 156
emilmont 77:869cf507173a 157 /** @defgroup SDIO_Bus_Wide
emilmont 77:869cf507173a 158 * @{
emilmont 77:869cf507173a 159 */
emilmont 77:869cf507173a 160
emilmont 77:869cf507173a 161 #define SDIO_BusWide_1b ((uint32_t)0x00000000)
emilmont 77:869cf507173a 162 #define SDIO_BusWide_4b ((uint32_t)0x00000800)
emilmont 77:869cf507173a 163 #define SDIO_BusWide_8b ((uint32_t)0x00001000)
emilmont 77:869cf507173a 164 #define IS_SDIO_BUS_WIDE(WIDE) (((WIDE) == SDIO_BusWide_1b) || ((WIDE) == SDIO_BusWide_4b) || \
emilmont 77:869cf507173a 165 ((WIDE) == SDIO_BusWide_8b))
emilmont 77:869cf507173a 166
emilmont 77:869cf507173a 167 /**
emilmont 77:869cf507173a 168 * @}
emilmont 77:869cf507173a 169 */
emilmont 77:869cf507173a 170
emilmont 77:869cf507173a 171 /** @defgroup SDIO_Hardware_Flow_Control
emilmont 77:869cf507173a 172 * @{
emilmont 77:869cf507173a 173 */
emilmont 77:869cf507173a 174
emilmont 77:869cf507173a 175 #define SDIO_HardwareFlowControl_Disable ((uint32_t)0x00000000)
emilmont 77:869cf507173a 176 #define SDIO_HardwareFlowControl_Enable ((uint32_t)0x00004000)
emilmont 77:869cf507173a 177 #define IS_SDIO_HARDWARE_FLOW_CONTROL(CONTROL) (((CONTROL) == SDIO_HardwareFlowControl_Disable) || \
emilmont 77:869cf507173a 178 ((CONTROL) == SDIO_HardwareFlowControl_Enable))
emilmont 77:869cf507173a 179 /**
emilmont 77:869cf507173a 180 * @}
emilmont 77:869cf507173a 181 */
emilmont 77:869cf507173a 182
emilmont 77:869cf507173a 183 /** @defgroup SDIO_Power_State
emilmont 77:869cf507173a 184 * @{
emilmont 77:869cf507173a 185 */
emilmont 77:869cf507173a 186
emilmont 77:869cf507173a 187 #define SDIO_PowerState_OFF ((uint32_t)0x00000000)
emilmont 77:869cf507173a 188 #define SDIO_PowerState_ON ((uint32_t)0x00000003)
emilmont 77:869cf507173a 189 #define IS_SDIO_POWER_STATE(STATE) (((STATE) == SDIO_PowerState_OFF) || ((STATE) == SDIO_PowerState_ON))
emilmont 77:869cf507173a 190 /**
emilmont 77:869cf507173a 191 * @}
emilmont 77:869cf507173a 192 */
emilmont 77:869cf507173a 193
emilmont 77:869cf507173a 194
emilmont 77:869cf507173a 195 /** @defgroup SDIO_Interrupt_soucres
emilmont 77:869cf507173a 196 * @{
emilmont 77:869cf507173a 197 */
emilmont 77:869cf507173a 198
emilmont 77:869cf507173a 199 #define SDIO_IT_CCRCFAIL ((uint32_t)0x00000001)
emilmont 77:869cf507173a 200 #define SDIO_IT_DCRCFAIL ((uint32_t)0x00000002)
emilmont 77:869cf507173a 201 #define SDIO_IT_CTIMEOUT ((uint32_t)0x00000004)
emilmont 77:869cf507173a 202 #define SDIO_IT_DTIMEOUT ((uint32_t)0x00000008)
emilmont 77:869cf507173a 203 #define SDIO_IT_TXUNDERR ((uint32_t)0x00000010)
emilmont 77:869cf507173a 204 #define SDIO_IT_RXOVERR ((uint32_t)0x00000020)
emilmont 77:869cf507173a 205 #define SDIO_IT_CMDREND ((uint32_t)0x00000040)
emilmont 77:869cf507173a 206 #define SDIO_IT_CMDSENT ((uint32_t)0x00000080)
emilmont 77:869cf507173a 207 #define SDIO_IT_DATAEND ((uint32_t)0x00000100)
emilmont 77:869cf507173a 208 #define SDIO_IT_STBITERR ((uint32_t)0x00000200)
emilmont 77:869cf507173a 209 #define SDIO_IT_DBCKEND ((uint32_t)0x00000400)
emilmont 77:869cf507173a 210 #define SDIO_IT_CMDACT ((uint32_t)0x00000800)
emilmont 77:869cf507173a 211 #define SDIO_IT_TXACT ((uint32_t)0x00001000)
emilmont 77:869cf507173a 212 #define SDIO_IT_RXACT ((uint32_t)0x00002000)
emilmont 77:869cf507173a 213 #define SDIO_IT_TXFIFOHE ((uint32_t)0x00004000)
emilmont 77:869cf507173a 214 #define SDIO_IT_RXFIFOHF ((uint32_t)0x00008000)
emilmont 77:869cf507173a 215 #define SDIO_IT_TXFIFOF ((uint32_t)0x00010000)
emilmont 77:869cf507173a 216 #define SDIO_IT_RXFIFOF ((uint32_t)0x00020000)
emilmont 77:869cf507173a 217 #define SDIO_IT_TXFIFOE ((uint32_t)0x00040000)
emilmont 77:869cf507173a 218 #define SDIO_IT_RXFIFOE ((uint32_t)0x00080000)
emilmont 77:869cf507173a 219 #define SDIO_IT_TXDAVL ((uint32_t)0x00100000)
emilmont 77:869cf507173a 220 #define SDIO_IT_RXDAVL ((uint32_t)0x00200000)
emilmont 77:869cf507173a 221 #define SDIO_IT_SDIOIT ((uint32_t)0x00400000)
emilmont 77:869cf507173a 222 #define SDIO_IT_CEATAEND ((uint32_t)0x00800000)
emilmont 77:869cf507173a 223 #define IS_SDIO_IT(IT) ((((IT) & (uint32_t)0xFF000000) == 0x00) && ((IT) != (uint32_t)0x00))
emilmont 77:869cf507173a 224 /**
emilmont 77:869cf507173a 225 * @}
emilmont 77:869cf507173a 226 */
emilmont 77:869cf507173a 227
emilmont 77:869cf507173a 228 /** @defgroup SDIO_Command_Index
emilmont 77:869cf507173a 229 * @{
emilmont 77:869cf507173a 230 */
emilmont 77:869cf507173a 231
emilmont 77:869cf507173a 232 #define IS_SDIO_CMD_INDEX(INDEX) ((INDEX) < 0x40)
emilmont 77:869cf507173a 233 /**
emilmont 77:869cf507173a 234 * @}
emilmont 77:869cf507173a 235 */
emilmont 77:869cf507173a 236
emilmont 77:869cf507173a 237 /** @defgroup SDIO_Response_Type
emilmont 77:869cf507173a 238 * @{
emilmont 77:869cf507173a 239 */
emilmont 77:869cf507173a 240
emilmont 77:869cf507173a 241 #define SDIO_Response_No ((uint32_t)0x00000000)
emilmont 77:869cf507173a 242 #define SDIO_Response_Short ((uint32_t)0x00000040)
emilmont 77:869cf507173a 243 #define SDIO_Response_Long ((uint32_t)0x000000C0)
emilmont 77:869cf507173a 244 #define IS_SDIO_RESPONSE(RESPONSE) (((RESPONSE) == SDIO_Response_No) || \
emilmont 77:869cf507173a 245 ((RESPONSE) == SDIO_Response_Short) || \
emilmont 77:869cf507173a 246 ((RESPONSE) == SDIO_Response_Long))
emilmont 77:869cf507173a 247 /**
emilmont 77:869cf507173a 248 * @}
emilmont 77:869cf507173a 249 */
emilmont 77:869cf507173a 250
emilmont 77:869cf507173a 251 /** @defgroup SDIO_Wait_Interrupt_State
emilmont 77:869cf507173a 252 * @{
emilmont 77:869cf507173a 253 */
emilmont 77:869cf507173a 254
emilmont 77:869cf507173a 255 #define SDIO_Wait_No ((uint32_t)0x00000000) /*!< SDIO No Wait, TimeOut is enabled */
emilmont 77:869cf507173a 256 #define SDIO_Wait_IT ((uint32_t)0x00000100) /*!< SDIO Wait Interrupt Request */
emilmont 77:869cf507173a 257 #define SDIO_Wait_Pend ((uint32_t)0x00000200) /*!< SDIO Wait End of transfer */
emilmont 77:869cf507173a 258 #define IS_SDIO_WAIT(WAIT) (((WAIT) == SDIO_Wait_No) || ((WAIT) == SDIO_Wait_IT) || \
emilmont 77:869cf507173a 259 ((WAIT) == SDIO_Wait_Pend))
emilmont 77:869cf507173a 260 /**
emilmont 77:869cf507173a 261 * @}
emilmont 77:869cf507173a 262 */
emilmont 77:869cf507173a 263
emilmont 77:869cf507173a 264 /** @defgroup SDIO_CPSM_State
emilmont 77:869cf507173a 265 * @{
emilmont 77:869cf507173a 266 */
emilmont 77:869cf507173a 267
emilmont 77:869cf507173a 268 #define SDIO_CPSM_Disable ((uint32_t)0x00000000)
emilmont 77:869cf507173a 269 #define SDIO_CPSM_Enable ((uint32_t)0x00000400)
emilmont 77:869cf507173a 270 #define IS_SDIO_CPSM(CPSM) (((CPSM) == SDIO_CPSM_Enable) || ((CPSM) == SDIO_CPSM_Disable))
emilmont 77:869cf507173a 271 /**
emilmont 77:869cf507173a 272 * @}
emilmont 77:869cf507173a 273 */
emilmont 77:869cf507173a 274
emilmont 77:869cf507173a 275 /** @defgroup SDIO_Response_Registers
emilmont 77:869cf507173a 276 * @{
emilmont 77:869cf507173a 277 */
emilmont 77:869cf507173a 278
emilmont 77:869cf507173a 279 #define SDIO_RESP1 ((uint32_t)0x00000000)
emilmont 77:869cf507173a 280 #define SDIO_RESP2 ((uint32_t)0x00000004)
emilmont 77:869cf507173a 281 #define SDIO_RESP3 ((uint32_t)0x00000008)
emilmont 77:869cf507173a 282 #define SDIO_RESP4 ((uint32_t)0x0000000C)
emilmont 77:869cf507173a 283 #define IS_SDIO_RESP(RESP) (((RESP) == SDIO_RESP1) || ((RESP) == SDIO_RESP2) || \
emilmont 77:869cf507173a 284 ((RESP) == SDIO_RESP3) || ((RESP) == SDIO_RESP4))
emilmont 77:869cf507173a 285 /**
emilmont 77:869cf507173a 286 * @}
emilmont 77:869cf507173a 287 */
emilmont 77:869cf507173a 288
emilmont 77:869cf507173a 289 /** @defgroup SDIO_Data_Length
emilmont 77:869cf507173a 290 * @{
emilmont 77:869cf507173a 291 */
emilmont 77:869cf507173a 292
emilmont 77:869cf507173a 293 #define IS_SDIO_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFF)
emilmont 77:869cf507173a 294 /**
emilmont 77:869cf507173a 295 * @}
emilmont 77:869cf507173a 296 */
emilmont 77:869cf507173a 297
emilmont 77:869cf507173a 298 /** @defgroup SDIO_Data_Block_Size
emilmont 77:869cf507173a 299 * @{
emilmont 77:869cf507173a 300 */
emilmont 77:869cf507173a 301
emilmont 77:869cf507173a 302 #define SDIO_DataBlockSize_1b ((uint32_t)0x00000000)
emilmont 77:869cf507173a 303 #define SDIO_DataBlockSize_2b ((uint32_t)0x00000010)
emilmont 77:869cf507173a 304 #define SDIO_DataBlockSize_4b ((uint32_t)0x00000020)
emilmont 77:869cf507173a 305 #define SDIO_DataBlockSize_8b ((uint32_t)0x00000030)
emilmont 77:869cf507173a 306 #define SDIO_DataBlockSize_16b ((uint32_t)0x00000040)
emilmont 77:869cf507173a 307 #define SDIO_DataBlockSize_32b ((uint32_t)0x00000050)
emilmont 77:869cf507173a 308 #define SDIO_DataBlockSize_64b ((uint32_t)0x00000060)
emilmont 77:869cf507173a 309 #define SDIO_DataBlockSize_128b ((uint32_t)0x00000070)
emilmont 77:869cf507173a 310 #define SDIO_DataBlockSize_256b ((uint32_t)0x00000080)
emilmont 77:869cf507173a 311 #define SDIO_DataBlockSize_512b ((uint32_t)0x00000090)
emilmont 77:869cf507173a 312 #define SDIO_DataBlockSize_1024b ((uint32_t)0x000000A0)
emilmont 77:869cf507173a 313 #define SDIO_DataBlockSize_2048b ((uint32_t)0x000000B0)
emilmont 77:869cf507173a 314 #define SDIO_DataBlockSize_4096b ((uint32_t)0x000000C0)
emilmont 77:869cf507173a 315 #define SDIO_DataBlockSize_8192b ((uint32_t)0x000000D0)
emilmont 77:869cf507173a 316 #define SDIO_DataBlockSize_16384b ((uint32_t)0x000000E0)
emilmont 77:869cf507173a 317 #define IS_SDIO_BLOCK_SIZE(SIZE) (((SIZE) == SDIO_DataBlockSize_1b) || \
emilmont 77:869cf507173a 318 ((SIZE) == SDIO_DataBlockSize_2b) || \
emilmont 77:869cf507173a 319 ((SIZE) == SDIO_DataBlockSize_4b) || \
emilmont 77:869cf507173a 320 ((SIZE) == SDIO_DataBlockSize_8b) || \
emilmont 77:869cf507173a 321 ((SIZE) == SDIO_DataBlockSize_16b) || \
emilmont 77:869cf507173a 322 ((SIZE) == SDIO_DataBlockSize_32b) || \
emilmont 77:869cf507173a 323 ((SIZE) == SDIO_DataBlockSize_64b) || \
emilmont 77:869cf507173a 324 ((SIZE) == SDIO_DataBlockSize_128b) || \
emilmont 77:869cf507173a 325 ((SIZE) == SDIO_DataBlockSize_256b) || \
emilmont 77:869cf507173a 326 ((SIZE) == SDIO_DataBlockSize_512b) || \
emilmont 77:869cf507173a 327 ((SIZE) == SDIO_DataBlockSize_1024b) || \
emilmont 77:869cf507173a 328 ((SIZE) == SDIO_DataBlockSize_2048b) || \
emilmont 77:869cf507173a 329 ((SIZE) == SDIO_DataBlockSize_4096b) || \
emilmont 77:869cf507173a 330 ((SIZE) == SDIO_DataBlockSize_8192b) || \
emilmont 77:869cf507173a 331 ((SIZE) == SDIO_DataBlockSize_16384b))
emilmont 77:869cf507173a 332 /**
emilmont 77:869cf507173a 333 * @}
emilmont 77:869cf507173a 334 */
emilmont 77:869cf507173a 335
emilmont 77:869cf507173a 336 /** @defgroup SDIO_Transfer_Direction
emilmont 77:869cf507173a 337 * @{
emilmont 77:869cf507173a 338 */
emilmont 77:869cf507173a 339
emilmont 77:869cf507173a 340 #define SDIO_TransferDir_ToCard ((uint32_t)0x00000000)
emilmont 77:869cf507173a 341 #define SDIO_TransferDir_ToSDIO ((uint32_t)0x00000002)
emilmont 77:869cf507173a 342 #define IS_SDIO_TRANSFER_DIR(DIR) (((DIR) == SDIO_TransferDir_ToCard) || \
emilmont 77:869cf507173a 343 ((DIR) == SDIO_TransferDir_ToSDIO))
emilmont 77:869cf507173a 344 /**
emilmont 77:869cf507173a 345 * @}
emilmont 77:869cf507173a 346 */
emilmont 77:869cf507173a 347
emilmont 77:869cf507173a 348 /** @defgroup SDIO_Transfer_Type
emilmont 77:869cf507173a 349 * @{
emilmont 77:869cf507173a 350 */
emilmont 77:869cf507173a 351
emilmont 77:869cf507173a 352 #define SDIO_TransferMode_Block ((uint32_t)0x00000000)
emilmont 77:869cf507173a 353 #define SDIO_TransferMode_Stream ((uint32_t)0x00000004)
emilmont 77:869cf507173a 354 #define IS_SDIO_TRANSFER_MODE(MODE) (((MODE) == SDIO_TransferMode_Stream) || \
emilmont 77:869cf507173a 355 ((MODE) == SDIO_TransferMode_Block))
emilmont 77:869cf507173a 356 /**
emilmont 77:869cf507173a 357 * @}
emilmont 77:869cf507173a 358 */
emilmont 77:869cf507173a 359
emilmont 77:869cf507173a 360 /** @defgroup SDIO_DPSM_State
emilmont 77:869cf507173a 361 * @{
emilmont 77:869cf507173a 362 */
emilmont 77:869cf507173a 363
emilmont 77:869cf507173a 364 #define SDIO_DPSM_Disable ((uint32_t)0x00000000)
emilmont 77:869cf507173a 365 #define SDIO_DPSM_Enable ((uint32_t)0x00000001)
emilmont 77:869cf507173a 366 #define IS_SDIO_DPSM(DPSM) (((DPSM) == SDIO_DPSM_Enable) || ((DPSM) == SDIO_DPSM_Disable))
emilmont 77:869cf507173a 367 /**
emilmont 77:869cf507173a 368 * @}
emilmont 77:869cf507173a 369 */
emilmont 77:869cf507173a 370
emilmont 77:869cf507173a 371 /** @defgroup SDIO_Flags
emilmont 77:869cf507173a 372 * @{
emilmont 77:869cf507173a 373 */
emilmont 77:869cf507173a 374
emilmont 77:869cf507173a 375 #define SDIO_FLAG_CCRCFAIL ((uint32_t)0x00000001)
emilmont 77:869cf507173a 376 #define SDIO_FLAG_DCRCFAIL ((uint32_t)0x00000002)
emilmont 77:869cf507173a 377 #define SDIO_FLAG_CTIMEOUT ((uint32_t)0x00000004)
emilmont 77:869cf507173a 378 #define SDIO_FLAG_DTIMEOUT ((uint32_t)0x00000008)
emilmont 77:869cf507173a 379 #define SDIO_FLAG_TXUNDERR ((uint32_t)0x00000010)
emilmont 77:869cf507173a 380 #define SDIO_FLAG_RXOVERR ((uint32_t)0x00000020)
emilmont 77:869cf507173a 381 #define SDIO_FLAG_CMDREND ((uint32_t)0x00000040)
emilmont 77:869cf507173a 382 #define SDIO_FLAG_CMDSENT ((uint32_t)0x00000080)
emilmont 77:869cf507173a 383 #define SDIO_FLAG_DATAEND ((uint32_t)0x00000100)
emilmont 77:869cf507173a 384 #define SDIO_FLAG_STBITERR ((uint32_t)0x00000200)
emilmont 77:869cf507173a 385 #define SDIO_FLAG_DBCKEND ((uint32_t)0x00000400)
emilmont 77:869cf507173a 386 #define SDIO_FLAG_CMDACT ((uint32_t)0x00000800)
emilmont 77:869cf507173a 387 #define SDIO_FLAG_TXACT ((uint32_t)0x00001000)
emilmont 77:869cf507173a 388 #define SDIO_FLAG_RXACT ((uint32_t)0x00002000)
emilmont 77:869cf507173a 389 #define SDIO_FLAG_TXFIFOHE ((uint32_t)0x00004000)
emilmont 77:869cf507173a 390 #define SDIO_FLAG_RXFIFOHF ((uint32_t)0x00008000)
emilmont 77:869cf507173a 391 #define SDIO_FLAG_TXFIFOF ((uint32_t)0x00010000)
emilmont 77:869cf507173a 392 #define SDIO_FLAG_RXFIFOF ((uint32_t)0x00020000)
emilmont 77:869cf507173a 393 #define SDIO_FLAG_TXFIFOE ((uint32_t)0x00040000)
emilmont 77:869cf507173a 394 #define SDIO_FLAG_RXFIFOE ((uint32_t)0x00080000)
emilmont 77:869cf507173a 395 #define SDIO_FLAG_TXDAVL ((uint32_t)0x00100000)
emilmont 77:869cf507173a 396 #define SDIO_FLAG_RXDAVL ((uint32_t)0x00200000)
emilmont 77:869cf507173a 397 #define SDIO_FLAG_SDIOIT ((uint32_t)0x00400000)
emilmont 77:869cf507173a 398 #define SDIO_FLAG_CEATAEND ((uint32_t)0x00800000)
emilmont 77:869cf507173a 399 #define IS_SDIO_FLAG(FLAG) (((FLAG) == SDIO_FLAG_CCRCFAIL) || \
emilmont 77:869cf507173a 400 ((FLAG) == SDIO_FLAG_DCRCFAIL) || \
emilmont 77:869cf507173a 401 ((FLAG) == SDIO_FLAG_CTIMEOUT) || \
emilmont 77:869cf507173a 402 ((FLAG) == SDIO_FLAG_DTIMEOUT) || \
emilmont 77:869cf507173a 403 ((FLAG) == SDIO_FLAG_TXUNDERR) || \
emilmont 77:869cf507173a 404 ((FLAG) == SDIO_FLAG_RXOVERR) || \
emilmont 77:869cf507173a 405 ((FLAG) == SDIO_FLAG_CMDREND) || \
emilmont 77:869cf507173a 406 ((FLAG) == SDIO_FLAG_CMDSENT) || \
emilmont 77:869cf507173a 407 ((FLAG) == SDIO_FLAG_DATAEND) || \
emilmont 77:869cf507173a 408 ((FLAG) == SDIO_FLAG_STBITERR) || \
emilmont 77:869cf507173a 409 ((FLAG) == SDIO_FLAG_DBCKEND) || \
emilmont 77:869cf507173a 410 ((FLAG) == SDIO_FLAG_CMDACT) || \
emilmont 77:869cf507173a 411 ((FLAG) == SDIO_FLAG_TXACT) || \
emilmont 77:869cf507173a 412 ((FLAG) == SDIO_FLAG_RXACT) || \
emilmont 77:869cf507173a 413 ((FLAG) == SDIO_FLAG_TXFIFOHE) || \
emilmont 77:869cf507173a 414 ((FLAG) == SDIO_FLAG_RXFIFOHF) || \
emilmont 77:869cf507173a 415 ((FLAG) == SDIO_FLAG_TXFIFOF) || \
emilmont 77:869cf507173a 416 ((FLAG) == SDIO_FLAG_RXFIFOF) || \
emilmont 77:869cf507173a 417 ((FLAG) == SDIO_FLAG_TXFIFOE) || \
emilmont 77:869cf507173a 418 ((FLAG) == SDIO_FLAG_RXFIFOE) || \
emilmont 77:869cf507173a 419 ((FLAG) == SDIO_FLAG_TXDAVL) || \
emilmont 77:869cf507173a 420 ((FLAG) == SDIO_FLAG_RXDAVL) || \
emilmont 77:869cf507173a 421 ((FLAG) == SDIO_FLAG_SDIOIT) || \
emilmont 77:869cf507173a 422 ((FLAG) == SDIO_FLAG_CEATAEND))
emilmont 77:869cf507173a 423
emilmont 77:869cf507173a 424 #define IS_SDIO_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFF3FF800) == 0x00) && ((FLAG) != (uint32_t)0x00))
emilmont 77:869cf507173a 425
emilmont 77:869cf507173a 426 #define IS_SDIO_GET_IT(IT) (((IT) == SDIO_IT_CCRCFAIL) || \
emilmont 77:869cf507173a 427 ((IT) == SDIO_IT_DCRCFAIL) || \
emilmont 77:869cf507173a 428 ((IT) == SDIO_IT_CTIMEOUT) || \
emilmont 77:869cf507173a 429 ((IT) == SDIO_IT_DTIMEOUT) || \
emilmont 77:869cf507173a 430 ((IT) == SDIO_IT_TXUNDERR) || \
emilmont 77:869cf507173a 431 ((IT) == SDIO_IT_RXOVERR) || \
emilmont 77:869cf507173a 432 ((IT) == SDIO_IT_CMDREND) || \
emilmont 77:869cf507173a 433 ((IT) == SDIO_IT_CMDSENT) || \
emilmont 77:869cf507173a 434 ((IT) == SDIO_IT_DATAEND) || \
emilmont 77:869cf507173a 435 ((IT) == SDIO_IT_STBITERR) || \
emilmont 77:869cf507173a 436 ((IT) == SDIO_IT_DBCKEND) || \
emilmont 77:869cf507173a 437 ((IT) == SDIO_IT_CMDACT) || \
emilmont 77:869cf507173a 438 ((IT) == SDIO_IT_TXACT) || \
emilmont 77:869cf507173a 439 ((IT) == SDIO_IT_RXACT) || \
emilmont 77:869cf507173a 440 ((IT) == SDIO_IT_TXFIFOHE) || \
emilmont 77:869cf507173a 441 ((IT) == SDIO_IT_RXFIFOHF) || \
emilmont 77:869cf507173a 442 ((IT) == SDIO_IT_TXFIFOF) || \
emilmont 77:869cf507173a 443 ((IT) == SDIO_IT_RXFIFOF) || \
emilmont 77:869cf507173a 444 ((IT) == SDIO_IT_TXFIFOE) || \
emilmont 77:869cf507173a 445 ((IT) == SDIO_IT_RXFIFOE) || \
emilmont 77:869cf507173a 446 ((IT) == SDIO_IT_TXDAVL) || \
emilmont 77:869cf507173a 447 ((IT) == SDIO_IT_RXDAVL) || \
emilmont 77:869cf507173a 448 ((IT) == SDIO_IT_SDIOIT) || \
emilmont 77:869cf507173a 449 ((IT) == SDIO_IT_CEATAEND))
emilmont 77:869cf507173a 450
emilmont 77:869cf507173a 451 #define IS_SDIO_CLEAR_IT(IT) ((((IT) & (uint32_t)0xFF3FF800) == 0x00) && ((IT) != (uint32_t)0x00))
emilmont 77:869cf507173a 452
emilmont 77:869cf507173a 453 /**
emilmont 77:869cf507173a 454 * @}
emilmont 77:869cf507173a 455 */
emilmont 77:869cf507173a 456
emilmont 77:869cf507173a 457 /** @defgroup SDIO_Read_Wait_Mode
emilmont 77:869cf507173a 458 * @{
emilmont 77:869cf507173a 459 */
emilmont 77:869cf507173a 460
emilmont 77:869cf507173a 461 #define SDIO_ReadWaitMode_CLK ((uint32_t)0x00000001)
emilmont 77:869cf507173a 462 #define SDIO_ReadWaitMode_DATA2 ((uint32_t)0x00000000)
emilmont 77:869cf507173a 463 #define IS_SDIO_READWAIT_MODE(MODE) (((MODE) == SDIO_ReadWaitMode_CLK) || \
emilmont 77:869cf507173a 464 ((MODE) == SDIO_ReadWaitMode_DATA2))
emilmont 77:869cf507173a 465 /**
emilmont 77:869cf507173a 466 * @}
emilmont 77:869cf507173a 467 */
emilmont 77:869cf507173a 468
emilmont 77:869cf507173a 469 /**
emilmont 77:869cf507173a 470 * @}
emilmont 77:869cf507173a 471 */
emilmont 77:869cf507173a 472
emilmont 77:869cf507173a 473 /* Exported macro ------------------------------------------------------------*/
emilmont 77:869cf507173a 474 /* Exported functions ------------------------------------------------------- */
emilmont 77:869cf507173a 475 /* Function used to set the SDIO configuration to the default reset state ****/
emilmont 77:869cf507173a 476 void SDIO_DeInit(void);
emilmont 77:869cf507173a 477
emilmont 77:869cf507173a 478 /* Initialization and Configuration functions *********************************/
emilmont 77:869cf507173a 479 void SDIO_Init(SDIO_InitTypeDef* SDIO_InitStruct);
emilmont 77:869cf507173a 480 void SDIO_StructInit(SDIO_InitTypeDef* SDIO_InitStruct);
emilmont 77:869cf507173a 481 void SDIO_ClockCmd(FunctionalState NewState);
emilmont 77:869cf507173a 482 void SDIO_SetPowerState(uint32_t SDIO_PowerState);
emilmont 77:869cf507173a 483 uint32_t SDIO_GetPowerState(void);
emilmont 77:869cf507173a 484
emilmont 77:869cf507173a 485 /* DMA transfers management functions *****************************************/
emilmont 77:869cf507173a 486 void SDIO_DMACmd(FunctionalState NewState);
emilmont 77:869cf507173a 487
emilmont 77:869cf507173a 488 /* Command path state machine (CPSM) management functions *********************/
emilmont 77:869cf507173a 489 void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct);
emilmont 77:869cf507173a 490 void SDIO_CmdStructInit(SDIO_CmdInitTypeDef* SDIO_CmdInitStruct);
emilmont 77:869cf507173a 491 uint8_t SDIO_GetCommandResponse(void);
emilmont 77:869cf507173a 492 uint32_t SDIO_GetResponse(uint32_t SDIO_RESP);
emilmont 77:869cf507173a 493
emilmont 77:869cf507173a 494 /* Data path state machine (DPSM) management functions ************************/
emilmont 77:869cf507173a 495 void SDIO_DataConfig(SDIO_DataInitTypeDef* SDIO_DataInitStruct);
emilmont 77:869cf507173a 496 void SDIO_DataStructInit(SDIO_DataInitTypeDef* SDIO_DataInitStruct);
emilmont 77:869cf507173a 497 uint32_t SDIO_GetDataCounter(void);
emilmont 77:869cf507173a 498 uint32_t SDIO_ReadData(void);
emilmont 77:869cf507173a 499 void SDIO_WriteData(uint32_t Data);
emilmont 77:869cf507173a 500 uint32_t SDIO_GetFIFOCount(void);
emilmont 77:869cf507173a 501
emilmont 77:869cf507173a 502 /* SDIO IO Cards mode management functions ************************************/
emilmont 77:869cf507173a 503 void SDIO_StartSDIOReadWait(FunctionalState NewState);
emilmont 77:869cf507173a 504 void SDIO_StopSDIOReadWait(FunctionalState NewState);
emilmont 77:869cf507173a 505 void SDIO_SetSDIOReadWaitMode(uint32_t SDIO_ReadWaitMode);
emilmont 77:869cf507173a 506 void SDIO_SetSDIOOperation(FunctionalState NewState);
emilmont 77:869cf507173a 507 void SDIO_SendSDIOSuspendCmd(FunctionalState NewState);
emilmont 77:869cf507173a 508
emilmont 77:869cf507173a 509 /* CE-ATA mode management functions *******************************************/
emilmont 77:869cf507173a 510 void SDIO_CommandCompletionCmd(FunctionalState NewState);
emilmont 77:869cf507173a 511 void SDIO_CEATAITCmd(FunctionalState NewState);
emilmont 77:869cf507173a 512 void SDIO_SendCEATACmd(FunctionalState NewState);
emilmont 77:869cf507173a 513
emilmont 77:869cf507173a 514 /* Interrupts and flags management functions **********************************/
emilmont 77:869cf507173a 515 void SDIO_ITConfig(uint32_t SDIO_IT, FunctionalState NewState);
emilmont 77:869cf507173a 516 FlagStatus SDIO_GetFlagStatus(uint32_t SDIO_FLAG);
emilmont 77:869cf507173a 517 void SDIO_ClearFlag(uint32_t SDIO_FLAG);
emilmont 77:869cf507173a 518 ITStatus SDIO_GetITStatus(uint32_t SDIO_IT);
emilmont 77:869cf507173a 519 void SDIO_ClearITPendingBit(uint32_t SDIO_IT);
emilmont 77:869cf507173a 520
emilmont 77:869cf507173a 521 #ifdef __cplusplus
emilmont 77:869cf507173a 522 }
emilmont 77:869cf507173a 523 #endif
emilmont 77:869cf507173a 524
emilmont 77:869cf507173a 525 #endif /* __STM32L1xx_SDIO_H */
emilmont 77:869cf507173a 526
emilmont 77:869cf507173a 527 /**
emilmont 77:869cf507173a 528 * @}
emilmont 77:869cf507173a 529 */
emilmont 77:869cf507173a 530
emilmont 77:869cf507173a 531 /**
emilmont 77:869cf507173a 532 * @}
emilmont 77:869cf507173a 533 */
emilmont 77:869cf507173a 534
emilmont 77:869cf507173a 535 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/