mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

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

Committer:
mbed_official
Date:
Sat Feb 08 19:45:06 2014 +0000
Revision:
87:085cde657901
Child:
106:ced8cbb51063
Synchronized with git revision 9272cdeb45ec7e6077641536509413da8fd2ebc2

Full URL: https://github.com/mbedmicro/mbed/commit/9272cdeb45ec7e6077641536509413da8fd2ebc2/

Add NUCLEO_F401RE, improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 87:085cde657901 1 /**
mbed_official 87:085cde657901 2 ******************************************************************************
mbed_official 87:085cde657901 3 * @file stm32f4xx_hal_sd.h
mbed_official 87:085cde657901 4 * @author MCD Application Team
mbed_official 87:085cde657901 5 * @version V1.0.0RC2
mbed_official 87:085cde657901 6 * @date 04-February-2014
mbed_official 87:085cde657901 7 * @brief Header file of SD HAL module.
mbed_official 87:085cde657901 8 ******************************************************************************
mbed_official 87:085cde657901 9 * @attention
mbed_official 87:085cde657901 10 *
mbed_official 87:085cde657901 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 87:085cde657901 12 *
mbed_official 87:085cde657901 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 87:085cde657901 14 * are permitted provided that the following conditions are met:
mbed_official 87:085cde657901 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 87:085cde657901 16 * this list of conditions and the following disclaimer.
mbed_official 87:085cde657901 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 87:085cde657901 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 87:085cde657901 19 * and/or other materials provided with the distribution.
mbed_official 87:085cde657901 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 87:085cde657901 21 * may be used to endorse or promote products derived from this software
mbed_official 87:085cde657901 22 * without specific prior written permission.
mbed_official 87:085cde657901 23 *
mbed_official 87:085cde657901 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 87:085cde657901 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 87:085cde657901 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 87:085cde657901 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 87:085cde657901 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 87:085cde657901 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 87:085cde657901 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 87:085cde657901 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 87:085cde657901 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 87:085cde657901 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 87:085cde657901 34 *
mbed_official 87:085cde657901 35 ******************************************************************************
mbed_official 87:085cde657901 36 */
mbed_official 87:085cde657901 37
mbed_official 87:085cde657901 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 87:085cde657901 39 #ifndef __STM32F4xx_HAL_SD_H
mbed_official 87:085cde657901 40 #define __STM32F4xx_HAL_SD_H
mbed_official 87:085cde657901 41
mbed_official 87:085cde657901 42 #ifdef __cplusplus
mbed_official 87:085cde657901 43 extern "C" {
mbed_official 87:085cde657901 44 #endif
mbed_official 87:085cde657901 45
mbed_official 87:085cde657901 46 /* Includes ------------------------------------------------------------------*/
mbed_official 87:085cde657901 47 #include "stm32f4xx_ll_sdmmc.h"
mbed_official 87:085cde657901 48
mbed_official 87:085cde657901 49 /** @addtogroup STM32F4xx_HAL_Driver
mbed_official 87:085cde657901 50 * @{
mbed_official 87:085cde657901 51 */
mbed_official 87:085cde657901 52
mbed_official 87:085cde657901 53 /** @addtogroup SD
mbed_official 87:085cde657901 54 * @{
mbed_official 87:085cde657901 55 */
mbed_official 87:085cde657901 56
mbed_official 87:085cde657901 57 /* Exported types ------------------------------------------------------------*/
mbed_official 87:085cde657901 58 #define SD_InitTypeDef SDIO_InitTypeDef
mbed_official 87:085cde657901 59 #define SD_TypeDef SDIO_TypeDef
mbed_official 87:085cde657901 60
mbed_official 87:085cde657901 61 /**
mbed_official 87:085cde657901 62 * @brief SDIO Handle Structure definition
mbed_official 87:085cde657901 63 */
mbed_official 87:085cde657901 64 typedef struct
mbed_official 87:085cde657901 65 {
mbed_official 87:085cde657901 66 SD_TypeDef *Instance; /*!< SDIO register base address */
mbed_official 87:085cde657901 67
mbed_official 87:085cde657901 68 SD_InitTypeDef Init; /*!< SD required parameters */
mbed_official 87:085cde657901 69
mbed_official 87:085cde657901 70 HAL_LockTypeDef Lock; /*!< SD locking object */
mbed_official 87:085cde657901 71
mbed_official 87:085cde657901 72 uint32_t CardType; /*!< SD card type */
mbed_official 87:085cde657901 73
mbed_official 87:085cde657901 74 uint32_t RCA; /*!< SD relative card address */
mbed_official 87:085cde657901 75
mbed_official 87:085cde657901 76 uint32_t CSD[4]; /*!< SD card specific data table */
mbed_official 87:085cde657901 77
mbed_official 87:085cde657901 78 uint32_t CID[4]; /*!< SD card identification number table */
mbed_official 87:085cde657901 79
mbed_official 87:085cde657901 80 __IO uint32_t SdTransferCplt; /*!< SD transfer complete flag in non blocking mode */
mbed_official 87:085cde657901 81
mbed_official 87:085cde657901 82 __IO uint32_t SdTransferErr; /*!< SD transfer error flag in non blocking mode */
mbed_official 87:085cde657901 83
mbed_official 87:085cde657901 84 __IO uint32_t DmaTransferCplt; /*!< SD DMA transfer complete flag */
mbed_official 87:085cde657901 85
mbed_official 87:085cde657901 86 __IO uint32_t SdOperation; /*!< SD transfer operation (read/write) */
mbed_official 87:085cde657901 87
mbed_official 87:085cde657901 88 DMA_HandleTypeDef *hdmarx; /*!< SD Rx DMA handle parameters */
mbed_official 87:085cde657901 89
mbed_official 87:085cde657901 90 DMA_HandleTypeDef *hdmatx; /*!< SD Tx DMA handle parameters */
mbed_official 87:085cde657901 91
mbed_official 87:085cde657901 92 }SD_HandleTypeDef;
mbed_official 87:085cde657901 93
mbed_official 87:085cde657901 94 /**
mbed_official 87:085cde657901 95 * @brief Card Specific Data: CSD Register
mbed_official 87:085cde657901 96 */
mbed_official 87:085cde657901 97 typedef struct
mbed_official 87:085cde657901 98 {
mbed_official 87:085cde657901 99 __IO uint8_t CSDStruct; /*!< CSD structure */
mbed_official 87:085cde657901 100 __IO uint8_t SysSpecVersion; /*!< System specification version */
mbed_official 87:085cde657901 101 __IO uint8_t Reserved1; /*!< Reserved */
mbed_official 87:085cde657901 102 __IO uint8_t TAAC; /*!< Data read access time 1 */
mbed_official 87:085cde657901 103 __IO uint8_t NSAC; /*!< Data read access time 2 in CLK cycles */
mbed_official 87:085cde657901 104 __IO uint8_t MaxBusClkFrec; /*!< Max. bus clock frequency */
mbed_official 87:085cde657901 105 __IO uint16_t CardComdClasses; /*!< Card command classes */
mbed_official 87:085cde657901 106 __IO uint8_t RdBlockLen; /*!< Max. read data block length */
mbed_official 87:085cde657901 107 __IO uint8_t PartBlockRead; /*!< Partial blocks for read allowed */
mbed_official 87:085cde657901 108 __IO uint8_t WrBlockMisalign; /*!< Write block misalignment */
mbed_official 87:085cde657901 109 __IO uint8_t RdBlockMisalign; /*!< Read block misalignment */
mbed_official 87:085cde657901 110 __IO uint8_t DSRImpl; /*!< DSR implemented */
mbed_official 87:085cde657901 111 __IO uint8_t Reserved2; /*!< Reserved */
mbed_official 87:085cde657901 112 __IO uint32_t DeviceSize; /*!< Device Size */
mbed_official 87:085cde657901 113 __IO uint8_t MaxRdCurrentVDDMin; /*!< Max. read current @ VDD min */
mbed_official 87:085cde657901 114 __IO uint8_t MaxRdCurrentVDDMax; /*!< Max. read current @ VDD max */
mbed_official 87:085cde657901 115 __IO uint8_t MaxWrCurrentVDDMin; /*!< Max. write current @ VDD min */
mbed_official 87:085cde657901 116 __IO uint8_t MaxWrCurrentVDDMax; /*!< Max. write current @ VDD max */
mbed_official 87:085cde657901 117 __IO uint8_t DeviceSizeMul; /*!< Device size multiplier */
mbed_official 87:085cde657901 118 __IO uint8_t EraseGrSize; /*!< Erase group size */
mbed_official 87:085cde657901 119 __IO uint8_t EraseGrMul; /*!< Erase group size multiplier */
mbed_official 87:085cde657901 120 __IO uint8_t WrProtectGrSize; /*!< Write protect group size */
mbed_official 87:085cde657901 121 __IO uint8_t WrProtectGrEnable; /*!< Write protect group enable */
mbed_official 87:085cde657901 122 __IO uint8_t ManDeflECC; /*!< Manufacturer default ECC */
mbed_official 87:085cde657901 123 __IO uint8_t WrSpeedFact; /*!< Write speed factor */
mbed_official 87:085cde657901 124 __IO uint8_t MaxWrBlockLen; /*!< Max. write data block length */
mbed_official 87:085cde657901 125 __IO uint8_t WriteBlockPaPartial; /*!< Partial blocks for write allowed */
mbed_official 87:085cde657901 126 __IO uint8_t Reserved3; /*!< Reserved */
mbed_official 87:085cde657901 127 __IO uint8_t ContentProtectAppli; /*!< Content protection application */
mbed_official 87:085cde657901 128 __IO uint8_t FileFormatGrouop; /*!< File format group */
mbed_official 87:085cde657901 129 __IO uint8_t CopyFlag; /*!< Copy flag (OTP) */
mbed_official 87:085cde657901 130 __IO uint8_t PermWrProtect; /*!< Permanent write protection */
mbed_official 87:085cde657901 131 __IO uint8_t TempWrProtect; /*!< Temporary write protection */
mbed_official 87:085cde657901 132 __IO uint8_t FileFormat; /*!< File format */
mbed_official 87:085cde657901 133 __IO uint8_t ECC; /*!< ECC code */
mbed_official 87:085cde657901 134 __IO uint8_t CSD_CRC; /*!< CSD CRC */
mbed_official 87:085cde657901 135 __IO uint8_t Reserved4; /*!< Always 1 */
mbed_official 87:085cde657901 136
mbed_official 87:085cde657901 137 }HAL_SD_CSDTypedef;
mbed_official 87:085cde657901 138
mbed_official 87:085cde657901 139 /**
mbed_official 87:085cde657901 140 * @brief Card Identification Data: CID Register
mbed_official 87:085cde657901 141 */
mbed_official 87:085cde657901 142 typedef struct
mbed_official 87:085cde657901 143 {
mbed_official 87:085cde657901 144 __IO uint8_t ManufacturerID; /*!< Manufacturer ID */
mbed_official 87:085cde657901 145 __IO uint16_t OEM_AppliID; /*!< OEM/Application ID */
mbed_official 87:085cde657901 146 __IO uint32_t ProdName1; /*!< Product Name part1 */
mbed_official 87:085cde657901 147 __IO uint8_t ProdName2; /*!< Product Name part2 */
mbed_official 87:085cde657901 148 __IO uint8_t ProdRev; /*!< Product Revision */
mbed_official 87:085cde657901 149 __IO uint32_t ProdSN; /*!< Product Serial Number */
mbed_official 87:085cde657901 150 __IO uint8_t Reserved1; /*!< Reserved1 */
mbed_official 87:085cde657901 151 __IO uint16_t ManufactDate; /*!< Manufacturing Date */
mbed_official 87:085cde657901 152 __IO uint8_t CID_CRC; /*!< CID CRC */
mbed_official 87:085cde657901 153 __IO uint8_t Reserved2; /*!< Always 1 */
mbed_official 87:085cde657901 154
mbed_official 87:085cde657901 155 }HAL_SD_CIDTypedef;
mbed_official 87:085cde657901 156
mbed_official 87:085cde657901 157 /**
mbed_official 87:085cde657901 158 * @brief SD Card Status returned by ACMD13
mbed_official 87:085cde657901 159 */
mbed_official 87:085cde657901 160 typedef struct
mbed_official 87:085cde657901 161 {
mbed_official 87:085cde657901 162 __IO uint8_t DAT_BUS_WIDTH; /*!< Shows the currently defined data bus width */
mbed_official 87:085cde657901 163 __IO uint8_t SECURED_MODE; /*!< Card is in secured mode of operation */
mbed_official 87:085cde657901 164 __IO uint16_t SD_CARD_TYPE; /*!< Carries information about card type */
mbed_official 87:085cde657901 165 __IO uint32_t SIZE_OF_PROTECTED_AREA; /*!< Carries information about the capacity of protected area */
mbed_official 87:085cde657901 166 __IO uint8_t SPEED_CLASS; /*!< Carries information about the speed class of the card */
mbed_official 87:085cde657901 167 __IO uint8_t PERFORMANCE_MOVE; /*!< Carries information about the card's performance move */
mbed_official 87:085cde657901 168 __IO uint8_t AU_SIZE; /*!< Carries information about the card's allocation unit size */
mbed_official 87:085cde657901 169 __IO uint16_t ERASE_SIZE; /*!< Determines the number of AUs to be erased in one operation */
mbed_official 87:085cde657901 170 __IO uint8_t ERASE_TIMEOUT; /*!< Determines the timeout for any number of AU erase */
mbed_official 87:085cde657901 171 __IO uint8_t ERASE_OFFSET; /*!< Carries information about the erase offset */
mbed_official 87:085cde657901 172
mbed_official 87:085cde657901 173 }HAL_SD_CardStatusTypedef;
mbed_official 87:085cde657901 174
mbed_official 87:085cde657901 175 /**
mbed_official 87:085cde657901 176 * @brief SD Card information structure
mbed_official 87:085cde657901 177 */
mbed_official 87:085cde657901 178 typedef struct
mbed_official 87:085cde657901 179 {
mbed_official 87:085cde657901 180 HAL_SD_CSDTypedef SD_csd; /*!< SD card specific data register */
mbed_official 87:085cde657901 181 HAL_SD_CIDTypedef SD_cid; /*!< SD card identification number register */
mbed_official 87:085cde657901 182 uint64_t CardCapacity; /*!< Card capacity */
mbed_official 87:085cde657901 183 uint32_t CardBlockSize; /*!< Card block size */
mbed_official 87:085cde657901 184 uint16_t RCA; /*!< SD relative card address */
mbed_official 87:085cde657901 185 uint8_t CardType; /*!< SD card type */
mbed_official 87:085cde657901 186
mbed_official 87:085cde657901 187 }HAL_SD_CardInfoTypedef;
mbed_official 87:085cde657901 188
mbed_official 87:085cde657901 189 /**
mbed_official 87:085cde657901 190 * @brief SD Error status enumeration Structure definition
mbed_official 87:085cde657901 191 */
mbed_official 87:085cde657901 192 typedef enum
mbed_official 87:085cde657901 193 {
mbed_official 87:085cde657901 194 /**
mbed_official 87:085cde657901 195 * @brief SD specific error defines
mbed_official 87:085cde657901 196 */
mbed_official 87:085cde657901 197 SD_CMD_CRC_FAIL = (1), /*!< Command response received (but CRC check failed) */
mbed_official 87:085cde657901 198 SD_DATA_CRC_FAIL = (2), /*!< Data block sent/received (CRC check failed) */
mbed_official 87:085cde657901 199 SD_CMD_RSP_TIMEOUT = (3), /*!< Command response timeout */
mbed_official 87:085cde657901 200 SD_DATA_TIMEOUT = (4), /*!< Data timeout */
mbed_official 87:085cde657901 201 SD_TX_UNDERRUN = (5), /*!< Transmit FIFO underrun */
mbed_official 87:085cde657901 202 SD_RX_OVERRUN = (6), /*!< Receive FIFO overrun */
mbed_official 87:085cde657901 203 SD_START_BIT_ERR = (7), /*!< Start bit not detected on all data signals in wide bus mode */
mbed_official 87:085cde657901 204 SD_CMD_OUT_OF_RANGE = (8), /*!< Command's argument was out of range. */
mbed_official 87:085cde657901 205 SD_ADDR_MISALIGNED = (9), /*!< Misaligned address */
mbed_official 87:085cde657901 206 SD_BLOCK_LEN_ERR = (10), /*!< Transferred block length is not allowed for the card or the number of transferred bytes does not match the block length */
mbed_official 87:085cde657901 207 SD_ERASE_SEQ_ERR = (11), /*!< An error in the sequence of erase command occurs. */
mbed_official 87:085cde657901 208 SD_BAD_ERASE_PARAM = (12), /*!< An invalid selection for erase groups */
mbed_official 87:085cde657901 209 SD_WRITE_PROT_VIOLATION = (13), /*!< Attempt to program a write protect block */
mbed_official 87:085cde657901 210 SD_LOCK_UNLOCK_FAILED = (14), /*!< Sequence or password error has been detected in unlock command or if there was an attempt to access a locked card */
mbed_official 87:085cde657901 211 SD_COM_CRC_FAILED = (15), /*!< CRC check of the previous command failed */
mbed_official 87:085cde657901 212 SD_ILLEGAL_CMD = (16), /*!< Command is not legal for the card state */
mbed_official 87:085cde657901 213 SD_CARD_ECC_FAILED = (17), /*!< Card internal ECC was applied but failed to correct the data */
mbed_official 87:085cde657901 214 SD_CC_ERROR = (18), /*!< Internal card controller error */
mbed_official 87:085cde657901 215 SD_GENERAL_UNKNOWN_ERROR = (19), /*!< General or unknown error */
mbed_official 87:085cde657901 216 SD_STREAM_READ_UNDERRUN = (20), /*!< The card could not sustain data transfer in stream read operation. */
mbed_official 87:085cde657901 217 SD_STREAM_WRITE_OVERRUN = (21), /*!< The card could not sustain data programming in stream mode */
mbed_official 87:085cde657901 218 SD_CID_CSD_OVERWRITE = (22), /*!< CID/CSD overwrite error */
mbed_official 87:085cde657901 219 SD_WP_ERASE_SKIP = (23), /*!< Only partial address space was erased */
mbed_official 87:085cde657901 220 SD_CARD_ECC_DISABLED = (24), /*!< Command has been executed without using internal ECC */
mbed_official 87:085cde657901 221 SD_ERASE_RESET = (25), /*!< Erase sequence was cleared before executing because an out of erase sequence command was received */
mbed_official 87:085cde657901 222 SD_AKE_SEQ_ERROR = (26), /*!< Error in sequence of authentication. */
mbed_official 87:085cde657901 223 SD_INVALID_VOLTRANGE = (27),
mbed_official 87:085cde657901 224 SD_ADDR_OUT_OF_RANGE = (28),
mbed_official 87:085cde657901 225 SD_SWITCH_ERROR = (29),
mbed_official 87:085cde657901 226 SD_SDIO_DISABLED = (30),
mbed_official 87:085cde657901 227 SD_SDIO_FUNCTION_BUSY = (31),
mbed_official 87:085cde657901 228 SD_SDIO_FUNCTION_FAILED = (32),
mbed_official 87:085cde657901 229 SD_SDIO_UNKNOWN_FUNCTION = (33),
mbed_official 87:085cde657901 230
mbed_official 87:085cde657901 231 /**
mbed_official 87:085cde657901 232 * @brief Standard error defines
mbed_official 87:085cde657901 233 */
mbed_official 87:085cde657901 234 SD_INTERNAL_ERROR = (34),
mbed_official 87:085cde657901 235 SD_NOT_CONFIGURED = (35),
mbed_official 87:085cde657901 236 SD_REQUEST_PENDING = (36),
mbed_official 87:085cde657901 237 SD_REQUEST_NOT_APPLICABLE = (37),
mbed_official 87:085cde657901 238 SD_INVALID_PARAMETER = (38),
mbed_official 87:085cde657901 239 SD_UNSUPPORTED_FEATURE = (39),
mbed_official 87:085cde657901 240 SD_UNSUPPORTED_HW = (40),
mbed_official 87:085cde657901 241 SD_ERROR = (41),
mbed_official 87:085cde657901 242 SD_OK = (0)
mbed_official 87:085cde657901 243
mbed_official 87:085cde657901 244 }HAL_SD_ErrorTypedef;
mbed_official 87:085cde657901 245
mbed_official 87:085cde657901 246 /**
mbed_official 87:085cde657901 247 * @brief SD Transfer state enumeration structure
mbed_official 87:085cde657901 248 */
mbed_official 87:085cde657901 249 typedef enum
mbed_official 87:085cde657901 250 {
mbed_official 87:085cde657901 251 SD_TRANSFER_OK = 0, /*!< Transfer success */
mbed_official 87:085cde657901 252 SD_TRANSFER_BUSY = 1, /*!< Transfer is occurring */
mbed_official 87:085cde657901 253 SD_TRANSFER_ERROR = 2 /*!< Transfer failed */
mbed_official 87:085cde657901 254
mbed_official 87:085cde657901 255 }HAL_SD_TransferStateTypedef;
mbed_official 87:085cde657901 256
mbed_official 87:085cde657901 257 /**
mbed_official 87:085cde657901 258 * @brief SD Card State enumeration structure
mbed_official 87:085cde657901 259 */
mbed_official 87:085cde657901 260 typedef enum
mbed_official 87:085cde657901 261 {
mbed_official 87:085cde657901 262 SD_CARD_READY = ((uint32_t)0x00000001), /*!< Card state is ready */
mbed_official 87:085cde657901 263 SD_CARD_IDENTIFICATION = ((uint32_t)0x00000002), /*!< Card is in identification state */
mbed_official 87:085cde657901 264 SD_CARD_STANDBY = ((uint32_t)0x00000003), /*!< Card is in standby state */
mbed_official 87:085cde657901 265 SD_CARD_TRANSFER = ((uint32_t)0x00000004), /*!< Card is in transfer state */
mbed_official 87:085cde657901 266 SD_CARD_SENDING = ((uint32_t)0x00000005), /*!< Card is sending an operation */
mbed_official 87:085cde657901 267 SD_CARD_RECEIVING = ((uint32_t)0x00000006), /*!< Card is receiving operation information */
mbed_official 87:085cde657901 268 SD_CARD_PROGRAMMING = ((uint32_t)0x00000007), /*!< Card is in programming state */
mbed_official 87:085cde657901 269 SD_CARD_DISCONNECTED = ((uint32_t)0x00000008), /*!< Card is disconnected */
mbed_official 87:085cde657901 270 SD_CARD_ERROR = ((uint32_t)0x000000FF) /*!< Card is in error state */
mbed_official 87:085cde657901 271
mbed_official 87:085cde657901 272 }HAL_SD_CardStateTypedef;
mbed_official 87:085cde657901 273
mbed_official 87:085cde657901 274 /**
mbed_official 87:085cde657901 275 * @brief SD Operation enumeration structure
mbed_official 87:085cde657901 276 */
mbed_official 87:085cde657901 277 typedef enum
mbed_official 87:085cde657901 278 {
mbed_official 87:085cde657901 279 SD_READ_SINGLE_BLOCK = 0, /*!< Read single block operation */
mbed_official 87:085cde657901 280 SD_READ_MULTIPLE_BLOCK = 1, /*!< Read multiple blocks operation */
mbed_official 87:085cde657901 281 SD_WRITE_SINGLE_BLOCK = 2, /*!< Write single block operation */
mbed_official 87:085cde657901 282 SD_WRITE_MULTIPLE_BLOCK = 3 /*!< Write multiple blocks operation */
mbed_official 87:085cde657901 283
mbed_official 87:085cde657901 284 }HAL_SD_OperationTypedef;
mbed_official 87:085cde657901 285
mbed_official 87:085cde657901 286
mbed_official 87:085cde657901 287 /* Exported constants --------------------------------------------------------*/
mbed_official 87:085cde657901 288 /** @defgroup SD_Exported_Constants
mbed_official 87:085cde657901 289 * @{
mbed_official 87:085cde657901 290 */
mbed_official 87:085cde657901 291
mbed_official 87:085cde657901 292 /**
mbed_official 87:085cde657901 293 * @brief SD Commands Index
mbed_official 87:085cde657901 294 */
mbed_official 87:085cde657901 295 #define SD_CMD_GO_IDLE_STATE ((uint8_t)0) /*!< Resets the SD memory card. */
mbed_official 87:085cde657901 296 #define SD_CMD_SEND_OP_COND ((uint8_t)1) /*!< Sends host capacity support information and activates the card's initialization process. */
mbed_official 87:085cde657901 297 #define SD_CMD_ALL_SEND_CID ((uint8_t)2) /*!< Asks any card connected to the host to send the CID numbers on the CMD line. */
mbed_official 87:085cde657901 298 #define SD_CMD_SET_REL_ADDR ((uint8_t)3) /*!< Asks the card to publish a new relative address (RCA). */
mbed_official 87:085cde657901 299 #define SD_CMD_SET_DSR ((uint8_t)4) /*!< Programs the DSR of all cards. */
mbed_official 87:085cde657901 300 #define SD_CMD_SDIO_SEN_OP_COND ((uint8_t)5) /*!< Sends host capacity support information (HCS) and asks the accessed card to send its
mbed_official 87:085cde657901 301 operating condition register (OCR) content in the response on the CMD line. */
mbed_official 87:085cde657901 302 #define SD_CMD_HS_SWITCH ((uint8_t)6) /*!< Checks switchable function (mode 0) and switch card function (mode 1). */
mbed_official 87:085cde657901 303 #define SD_CMD_SEL_DESEL_CARD ((uint8_t)7) /*!< Selects the card by its own relative address and gets deselected by any other address */
mbed_official 87:085cde657901 304 #define SD_CMD_HS_SEND_EXT_CSD ((uint8_t)8) /*!< Sends SD Memory Card interface condition, which includes host supply voltage information
mbed_official 87:085cde657901 305 and asks the card whether card supports voltage. */
mbed_official 87:085cde657901 306 #define SD_CMD_SEND_CSD ((uint8_t)9) /*!< Addressed card sends its card specific data (CSD) on the CMD line. */
mbed_official 87:085cde657901 307 #define SD_CMD_SEND_CID ((uint8_t)10) /*!< Addressed card sends its card identification (CID) on the CMD line. */
mbed_official 87:085cde657901 308 #define SD_CMD_READ_DAT_UNTIL_STOP ((uint8_t)11) /*!< SD card doesn't support it. */
mbed_official 87:085cde657901 309 #define SD_CMD_STOP_TRANSMISSION ((uint8_t)12) /*!< Forces the card to stop transmission. */
mbed_official 87:085cde657901 310 #define SD_CMD_SEND_STATUS ((uint8_t)13) /*!< Addressed card sends its status register. */
mbed_official 87:085cde657901 311 #define SD_CMD_HS_BUSTEST_READ ((uint8_t)14)
mbed_official 87:085cde657901 312 #define SD_CMD_GO_INACTIVE_STATE ((uint8_t)15) /*!< Sends an addressed card into the inactive state. */
mbed_official 87:085cde657901 313 #define SD_CMD_SET_BLOCKLEN ((uint8_t)16) /*!< Sets the block length (in bytes for SDSC) for all following block commands
mbed_official 87:085cde657901 314 (read, write, lock). Default block length is fixed to 512 Bytes. Not effective
mbed_official 87:085cde657901 315 for SDHS and SDXC. */
mbed_official 87:085cde657901 316 #define SD_CMD_READ_SINGLE_BLOCK ((uint8_t)17) /*!< Reads single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of
mbed_official 87:085cde657901 317 fixed 512 bytes in case of SDHC and SDXC. */
mbed_official 87:085cde657901 318 #define SD_CMD_READ_MULT_BLOCK ((uint8_t)18) /*!< Continuously transfers data blocks from card to host until interrupted by
mbed_official 87:085cde657901 319 STOP_TRANSMISSION command. */
mbed_official 87:085cde657901 320 #define SD_CMD_HS_BUSTEST_WRITE ((uint8_t)19) /*!< 64 bytes tuning pattern is sent for SDR50 and SDR104. */
mbed_official 87:085cde657901 321 #define SD_CMD_WRITE_DAT_UNTIL_STOP ((uint8_t)20) /*!< Speed class control command. */
mbed_official 87:085cde657901 322 #define SD_CMD_SET_BLOCK_COUNT ((uint8_t)23) /*!< Specify block count for CMD18 and CMD25. */
mbed_official 87:085cde657901 323 #define SD_CMD_WRITE_SINGLE_BLOCK ((uint8_t)24) /*!< Writes single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of
mbed_official 87:085cde657901 324 fixed 512 bytes in case of SDHC and SDXC. */
mbed_official 87:085cde657901 325 #define SD_CMD_WRITE_MULT_BLOCK ((uint8_t)25) /*!< Continuously writes blocks of data until a STOP_TRANSMISSION follows. */
mbed_official 87:085cde657901 326 #define SD_CMD_PROG_CID ((uint8_t)26) /*!< Reserved for manufacturers. */
mbed_official 87:085cde657901 327 #define SD_CMD_PROG_CSD ((uint8_t)27) /*!< Programming of the programmable bits of the CSD. */
mbed_official 87:085cde657901 328 #define SD_CMD_SET_WRITE_PROT ((uint8_t)28) /*!< Sets the write protection bit of the addressed group. */
mbed_official 87:085cde657901 329 #define SD_CMD_CLR_WRITE_PROT ((uint8_t)29) /*!< Clears the write protection bit of the addressed group. */
mbed_official 87:085cde657901 330 #define SD_CMD_SEND_WRITE_PROT ((uint8_t)30) /*!< Asks the card to send the status of the write protection bits. */
mbed_official 87:085cde657901 331 #define SD_CMD_SD_ERASE_GRP_START ((uint8_t)32) /*!< Sets the address of the first write block to be erased. (For SD card only). */
mbed_official 87:085cde657901 332 #define SD_CMD_SD_ERASE_GRP_END ((uint8_t)33) /*!< Sets the address of the last write block of the continuous range to be erased. */
mbed_official 87:085cde657901 333 #define SD_CMD_ERASE_GRP_START ((uint8_t)35) /*!< Sets the address of the first write block to be erased. Reserved for each command
mbed_official 87:085cde657901 334 system set by switch function command (CMD6). */
mbed_official 87:085cde657901 335 #define SD_CMD_ERASE_GRP_END ((uint8_t)36) /*!< Sets the address of the last write block of the continuous range to be erased.
mbed_official 87:085cde657901 336 Reserved for each command system set by switch function command (CMD6). */
mbed_official 87:085cde657901 337 #define SD_CMD_ERASE ((uint8_t)38) /*!< Reserved for SD security applications. */
mbed_official 87:085cde657901 338 #define SD_CMD_FAST_IO ((uint8_t)39) /*!< SD card doesn't support it (Reserved). */
mbed_official 87:085cde657901 339 #define SD_CMD_GO_IRQ_STATE ((uint8_t)40) /*!< SD card doesn't support it (Reserved). */
mbed_official 87:085cde657901 340 #define SD_CMD_LOCK_UNLOCK ((uint8_t)42) /*!< Sets/resets the password or lock/unlock the card. The size of the data block is set by
mbed_official 87:085cde657901 341 the SET_BLOCK_LEN command. */
mbed_official 87:085cde657901 342 #define SD_CMD_APP_CMD ((uint8_t)55) /*!< Indicates to the card that the next command is an application specific command rather
mbed_official 87:085cde657901 343 than a standard command. */
mbed_official 87:085cde657901 344 #define SD_CMD_GEN_CMD ((uint8_t)56) /*!< Used either to transfer a data block to the card or to get a data block from the card
mbed_official 87:085cde657901 345 for general purpose/application specific commands. */
mbed_official 87:085cde657901 346 #define SD_CMD_NO_CMD ((uint8_t)64)
mbed_official 87:085cde657901 347
mbed_official 87:085cde657901 348 /**
mbed_official 87:085cde657901 349 * @brief Following commands are SD Card Specific commands.
mbed_official 87:085cde657901 350 * SDIO_APP_CMD should be sent before sending these commands.
mbed_official 87:085cde657901 351 */
mbed_official 87:085cde657901 352 #define SD_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6) /*!< (ACMD6) Defines the data bus width to be used for data transfer. The allowed data bus
mbed_official 87:085cde657901 353 widths are given in SCR register. */
mbed_official 87:085cde657901 354 #define SD_CMD_SD_APP_STAUS ((uint8_t)13) /*!< (ACMD13) Sends the SD status. */
mbed_official 87:085cde657901 355 #define SD_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS ((uint8_t)22) /*!< (ACMD22) Sends the number of the written (without errors) write blocks. Responds with
mbed_official 87:085cde657901 356 32bit+CRC data block. */
mbed_official 87:085cde657901 357 #define SD_CMD_SD_APP_OP_COND ((uint8_t)41) /*!< (ACMD41) Sends host capacity support information (HCS) and asks the accessed card to
mbed_official 87:085cde657901 358 send its operating condition register (OCR) content in the response on the CMD line. */
mbed_official 87:085cde657901 359 #define SD_CMD_SD_APP_SET_CLR_CARD_DETECT ((uint8_t)42) /*!< (ACMD42) Connects/Disconnects the 50 KOhm pull-up resistor on CD/DAT3 (pin 1) of the card. */
mbed_official 87:085cde657901 360 #define SD_CMD_SD_APP_SEND_SCR ((uint8_t)51) /*!< Reads the SD Configuration Register (SCR). */
mbed_official 87:085cde657901 361 #define SD_CMD_SDIO_RW_DIRECT ((uint8_t)52) /*!< For SD I/O card only, reserved for security specification. */
mbed_official 87:085cde657901 362 #define SD_CMD_SDIO_RW_EXTENDED ((uint8_t)53) /*!< For SD I/O card only, reserved for security specification. */
mbed_official 87:085cde657901 363
mbed_official 87:085cde657901 364 /**
mbed_official 87:085cde657901 365 * @brief Following commands are SD Card Specific security commands.
mbed_official 87:085cde657901 366 * SD_CMD_APP_CMD should be sent before sending these commands.
mbed_official 87:085cde657901 367 */
mbed_official 87:085cde657901 368 #define SD_CMD_SD_APP_GET_MKB ((uint8_t)43) /*!< For SD card only */
mbed_official 87:085cde657901 369 #define SD_CMD_SD_APP_GET_MID ((uint8_t)44) /*!< For SD card only */
mbed_official 87:085cde657901 370 #define SD_CMD_SD_APP_SET_CER_RN1 ((uint8_t)45) /*!< For SD card only */
mbed_official 87:085cde657901 371 #define SD_CMD_SD_APP_GET_CER_RN2 ((uint8_t)46) /*!< For SD card only */
mbed_official 87:085cde657901 372 #define SD_CMD_SD_APP_SET_CER_RES2 ((uint8_t)47) /*!< For SD card only */
mbed_official 87:085cde657901 373 #define SD_CMD_SD_APP_GET_CER_RES1 ((uint8_t)48) /*!< For SD card only */
mbed_official 87:085cde657901 374 #define SD_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18) /*!< For SD card only */
mbed_official 87:085cde657901 375 #define SD_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK ((uint8_t)25) /*!< For SD card only */
mbed_official 87:085cde657901 376 #define SD_CMD_SD_APP_SECURE_ERASE ((uint8_t)38) /*!< For SD card only */
mbed_official 87:085cde657901 377 #define SD_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49) /*!< For SD card only */
mbed_official 87:085cde657901 378 #define SD_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48) /*!< For SD card only */
mbed_official 87:085cde657901 379
mbed_official 87:085cde657901 380 /**
mbed_official 87:085cde657901 381 * @brief Supported SD Memory Cards
mbed_official 87:085cde657901 382 */
mbed_official 87:085cde657901 383 #define STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x00000000)
mbed_official 87:085cde657901 384 #define STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x00000001)
mbed_official 87:085cde657901 385 #define HIGH_CAPACITY_SD_CARD ((uint32_t)0x00000002)
mbed_official 87:085cde657901 386 #define MULTIMEDIA_CARD ((uint32_t)0x00000003)
mbed_official 87:085cde657901 387 #define SECURE_DIGITAL_IO_CARD ((uint32_t)0x00000004)
mbed_official 87:085cde657901 388 #define HIGH_SPEED_MULTIMEDIA_CARD ((uint32_t)0x00000005)
mbed_official 87:085cde657901 389 #define SECURE_DIGITAL_IO_COMBO_CARD ((uint32_t)0x00000006)
mbed_official 87:085cde657901 390 #define HIGH_CAPACITY_MMC_CARD ((uint32_t)0x00000007)
mbed_official 87:085cde657901 391 /**
mbed_official 87:085cde657901 392 * @}
mbed_official 87:085cde657901 393 */
mbed_official 87:085cde657901 394
mbed_official 87:085cde657901 395 /* Exported macro ------------------------------------------------------------*/
mbed_official 87:085cde657901 396
mbed_official 87:085cde657901 397 /** @defgroup SD_Interrupt_Clock
mbed_official 87:085cde657901 398 * @brief macros to handle interrupts and specific clock configurations
mbed_official 87:085cde657901 399 * @{
mbed_official 87:085cde657901 400 */
mbed_official 87:085cde657901 401
mbed_official 87:085cde657901 402 /**
mbed_official 87:085cde657901 403 * @brief Enable the SD device.
mbed_official 87:085cde657901 404 * @retval None
mbed_official 87:085cde657901 405 */
mbed_official 87:085cde657901 406 #define __HAL_SD_SDIO_ENABLE() __SDIO_ENABLE()
mbed_official 87:085cde657901 407
mbed_official 87:085cde657901 408 /**
mbed_official 87:085cde657901 409 * @brief Disable the SD device.
mbed_official 87:085cde657901 410 * @retval None
mbed_official 87:085cde657901 411 */
mbed_official 87:085cde657901 412 #define __HAL_SD_SDIO_DISABLE() __SDIO_DISABLE()
mbed_official 87:085cde657901 413
mbed_official 87:085cde657901 414 /**
mbed_official 87:085cde657901 415 * @brief Enable the SDIO DMA transfer.
mbed_official 87:085cde657901 416 * @retval None
mbed_official 87:085cde657901 417 */
mbed_official 87:085cde657901 418 #define __HAL_SD_SDIO_DMA_ENABLE() __SDIO_DMA_ENABLE()
mbed_official 87:085cde657901 419
mbed_official 87:085cde657901 420 /**
mbed_official 87:085cde657901 421 * @brief Disable the SDIO DMA transfer.
mbed_official 87:085cde657901 422 * @retval None
mbed_official 87:085cde657901 423 */
mbed_official 87:085cde657901 424 #define __HAL_SD_SDIO_DMA_DISABLE() __SDIO_DMA_DISABLE()
mbed_official 87:085cde657901 425
mbed_official 87:085cde657901 426 /**
mbed_official 87:085cde657901 427 * @brief Enable the SD device interrupt.
mbed_official 87:085cde657901 428 * @param __HANDLE__: SD Handle
mbed_official 87:085cde657901 429 * @param __INTERRUPT__: specifies the SDIO interrupt sources to be enabled.
mbed_official 87:085cde657901 430 * This parameter can be one or a combination of the following values:
mbed_official 87:085cde657901 431 * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt
mbed_official 87:085cde657901 432 * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt
mbed_official 87:085cde657901 433 * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt
mbed_official 87:085cde657901 434 * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt
mbed_official 87:085cde657901 435 * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt
mbed_official 87:085cde657901 436 * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt
mbed_official 87:085cde657901 437 * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt
mbed_official 87:085cde657901 438 * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt
mbed_official 87:085cde657901 439 * @arg SDIO_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt
mbed_official 87:085cde657901 440 * @arg SDIO_IT_STBITERR: Start bit not detected on all data signals in wide
mbed_official 87:085cde657901 441 * bus mode interrupt
mbed_official 87:085cde657901 442 * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt
mbed_official 87:085cde657901 443 * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt
mbed_official 87:085cde657901 444 * @arg SDIO_IT_TXACT: Data transmit in progress interrupt
mbed_official 87:085cde657901 445 * @arg SDIO_IT_RXACT: Data receive in progress interrupt
mbed_official 87:085cde657901 446 * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt
mbed_official 87:085cde657901 447 * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt
mbed_official 87:085cde657901 448 * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt
mbed_official 87:085cde657901 449 * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt
mbed_official 87:085cde657901 450 * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt
mbed_official 87:085cde657901 451 * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt
mbed_official 87:085cde657901 452 * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt
mbed_official 87:085cde657901 453 * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt
mbed_official 87:085cde657901 454 * @arg SDIO_IT_SDIOIT: SD I/O interrupt received interrupt
mbed_official 87:085cde657901 455 * @arg SDIO_IT_CEATAEND: CE-ATA command completion signal received for CMD61 interrupt
mbed_official 87:085cde657901 456 * @retval None
mbed_official 87:085cde657901 457 */
mbed_official 87:085cde657901 458 #define __HAL_SD_SDIO_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDIO_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
mbed_official 87:085cde657901 459
mbed_official 87:085cde657901 460 /**
mbed_official 87:085cde657901 461 * @brief Disable the SD device interrupt.
mbed_official 87:085cde657901 462 * @param __HANDLE__: SD Handle
mbed_official 87:085cde657901 463 * @param __INTERRUPT__: specifies the SDIO interrupt sources to be disabled.
mbed_official 87:085cde657901 464 * This parameter can be one or a combination of the following values:
mbed_official 87:085cde657901 465 * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt
mbed_official 87:085cde657901 466 * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt
mbed_official 87:085cde657901 467 * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt
mbed_official 87:085cde657901 468 * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt
mbed_official 87:085cde657901 469 * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt
mbed_official 87:085cde657901 470 * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt
mbed_official 87:085cde657901 471 * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt
mbed_official 87:085cde657901 472 * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt
mbed_official 87:085cde657901 473 * @arg SDIO_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt
mbed_official 87:085cde657901 474 * @arg SDIO_IT_STBITERR: Start bit not detected on all data signals in wide
mbed_official 87:085cde657901 475 * bus mode interrupt
mbed_official 87:085cde657901 476 * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt
mbed_official 87:085cde657901 477 * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt
mbed_official 87:085cde657901 478 * @arg SDIO_IT_TXACT: Data transmit in progress interrupt
mbed_official 87:085cde657901 479 * @arg SDIO_IT_RXACT: Data receive in progress interrupt
mbed_official 87:085cde657901 480 * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt
mbed_official 87:085cde657901 481 * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt
mbed_official 87:085cde657901 482 * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt
mbed_official 87:085cde657901 483 * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt
mbed_official 87:085cde657901 484 * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt
mbed_official 87:085cde657901 485 * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt
mbed_official 87:085cde657901 486 * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt
mbed_official 87:085cde657901 487 * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt
mbed_official 87:085cde657901 488 * @arg SDIO_IT_SDIOIT: SD I/O interrupt received interrupt
mbed_official 87:085cde657901 489 * @arg SDIO_IT_CEATAEND: CE-ATA command completion signal received for CMD61 interrupt
mbed_official 87:085cde657901 490 * @retval None
mbed_official 87:085cde657901 491 */
mbed_official 87:085cde657901 492 #define __HAL_SD_SDIO_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDIO_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__))
mbed_official 87:085cde657901 493
mbed_official 87:085cde657901 494 /**
mbed_official 87:085cde657901 495 * @brief Check whether the specified SD flag is set or not.
mbed_official 87:085cde657901 496 * @param __HANDLE__: SD Handle
mbed_official 87:085cde657901 497 * @param __FLAG__: specifies the flag to check.
mbed_official 87:085cde657901 498 * This parameter can be one of the following values:
mbed_official 87:085cde657901 499 * @arg SDIO_FLAG_CCRCFAIL: Command response received (CRC check failed)
mbed_official 87:085cde657901 500 * @arg SDIO_FLAG_DCRCFAIL: Data block sent/received (CRC check failed)
mbed_official 87:085cde657901 501 * @arg SDIO_FLAG_CTIMEOUT: Command response timeout
mbed_official 87:085cde657901 502 * @arg SDIO_FLAG_DTIMEOUT: Data timeout
mbed_official 87:085cde657901 503 * @arg SDIO_FLAG_TXUNDERR: Transmit FIFO underrun error
mbed_official 87:085cde657901 504 * @arg SDIO_FLAG_RXOVERR: Received FIFO overrun error
mbed_official 87:085cde657901 505 * @arg SDIO_FLAG_CMDREND: Command response received (CRC check passed)
mbed_official 87:085cde657901 506 * @arg SDIO_FLAG_CMDSENT: Command sent (no response required)
mbed_official 87:085cde657901 507 * @arg SDIO_FLAG_DATAEND: Data end (data counter, SDIDCOUNT, is zero)
mbed_official 87:085cde657901 508 * @arg SDIO_FLAG_STBITERR: Start bit not detected on all data signals in wide bus mode.
mbed_official 87:085cde657901 509 * @arg SDIO_FLAG_DBCKEND: Data block sent/received (CRC check passed)
mbed_official 87:085cde657901 510 * @arg SDIO_FLAG_CMDACT: Command transfer in progress
mbed_official 87:085cde657901 511 * @arg SDIO_FLAG_TXACT: Data transmit in progress
mbed_official 87:085cde657901 512 * @arg SDIO_FLAG_RXACT: Data receive in progress
mbed_official 87:085cde657901 513 * @arg SDIO_FLAG_TXFIFOHE: Transmit FIFO Half Empty
mbed_official 87:085cde657901 514 * @arg SDIO_FLAG_RXFIFOHF: Receive FIFO Half Full
mbed_official 87:085cde657901 515 * @arg SDIO_FLAG_TXFIFOF: Transmit FIFO full
mbed_official 87:085cde657901 516 * @arg SDIO_FLAG_RXFIFOF: Receive FIFO full
mbed_official 87:085cde657901 517 * @arg SDIO_FLAG_TXFIFOE: Transmit FIFO empty
mbed_official 87:085cde657901 518 * @arg SDIO_FLAG_RXFIFOE: Receive FIFO empty
mbed_official 87:085cde657901 519 * @arg SDIO_FLAG_TXDAVL: Data available in transmit FIFO
mbed_official 87:085cde657901 520 * @arg SDIO_FLAG_RXDAVL: Data available in receive FIFO
mbed_official 87:085cde657901 521 * @arg SDIO_FLAG_SDIOIT: SD I/O interrupt received
mbed_official 87:085cde657901 522 * @arg SDIO_FLAG_CEATAEND: CE-ATA command completion signal received for CMD61
mbed_official 87:085cde657901 523 * @retval The new state of SD FLAG (SET or RESET).
mbed_official 87:085cde657901 524 */
mbed_official 87:085cde657901 525 #define __HAL_SD_SDIO_GET_FLAG(__HANDLE__, __FLAG__) __SDIO_GET_FLAG((__HANDLE__)->Instance, (__FLAG__))
mbed_official 87:085cde657901 526
mbed_official 87:085cde657901 527 /**
mbed_official 87:085cde657901 528 * @brief Clear the SD's pending flags.
mbed_official 87:085cde657901 529 * @param __HANDLE__: SD Handle
mbed_official 87:085cde657901 530 * @param __FLAG__: specifies the flag to clear.
mbed_official 87:085cde657901 531 * This parameter can be one or a combination of the following values:
mbed_official 87:085cde657901 532 * @arg SDIO_FLAG_CCRCFAIL: Command response received (CRC check failed)
mbed_official 87:085cde657901 533 * @arg SDIO_FLAG_DCRCFAIL: Data block sent/received (CRC check failed)
mbed_official 87:085cde657901 534 * @arg SDIO_FLAG_CTIMEOUT: Command response timeout
mbed_official 87:085cde657901 535 * @arg SDIO_FLAG_DTIMEOUT: Data timeout
mbed_official 87:085cde657901 536 * @arg SDIO_FLAG_TXUNDERR: Transmit FIFO underrun error
mbed_official 87:085cde657901 537 * @arg SDIO_FLAG_RXOVERR: Received FIFO overrun error
mbed_official 87:085cde657901 538 * @arg SDIO_FLAG_CMDREND: Command response received (CRC check passed)
mbed_official 87:085cde657901 539 * @arg SDIO_FLAG_CMDSENT: Command sent (no response required)
mbed_official 87:085cde657901 540 * @arg SDIO_FLAG_DATAEND: Data end (data counter, SDIDCOUNT, is zero)
mbed_official 87:085cde657901 541 * @arg SDIO_FLAG_STBITERR: Start bit not detected on all data signals in wide bus mode
mbed_official 87:085cde657901 542 * @arg SDIO_FLAG_DBCKEND: Data block sent/received (CRC check passed)
mbed_official 87:085cde657901 543 * @arg SDIO_FLAG_SDIOIT: SD I/O interrupt received
mbed_official 87:085cde657901 544 * @arg SDIO_FLAG_CEATAEND: CE-ATA command completion signal received for CMD61
mbed_official 87:085cde657901 545 * @retval None
mbed_official 87:085cde657901 546 */
mbed_official 87:085cde657901 547 #define __HAL_SD_SDIO_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDIO_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__))
mbed_official 87:085cde657901 548
mbed_official 87:085cde657901 549 /**
mbed_official 87:085cde657901 550 * @brief Check whether the specified SD interrupt has occurred or not.
mbed_official 87:085cde657901 551 * @param __HANDLE__: SD Handle
mbed_official 87:085cde657901 552 * @param __INTERRUPT__: specifies the SDIO interrupt source to check.
mbed_official 87:085cde657901 553 * This parameter can be one of the following values:
mbed_official 87:085cde657901 554 * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt
mbed_official 87:085cde657901 555 * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt
mbed_official 87:085cde657901 556 * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt
mbed_official 87:085cde657901 557 * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt
mbed_official 87:085cde657901 558 * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt
mbed_official 87:085cde657901 559 * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt
mbed_official 87:085cde657901 560 * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt
mbed_official 87:085cde657901 561 * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt
mbed_official 87:085cde657901 562 * @arg SDIO_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt
mbed_official 87:085cde657901 563 * @arg SDIO_IT_STBITERR: Start bit not detected on all data signals in wide
mbed_official 87:085cde657901 564 * bus mode interrupt
mbed_official 87:085cde657901 565 * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt
mbed_official 87:085cde657901 566 * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt
mbed_official 87:085cde657901 567 * @arg SDIO_IT_TXACT: Data transmit in progress interrupt
mbed_official 87:085cde657901 568 * @arg SDIO_IT_RXACT: Data receive in progress interrupt
mbed_official 87:085cde657901 569 * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt
mbed_official 87:085cde657901 570 * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt
mbed_official 87:085cde657901 571 * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt
mbed_official 87:085cde657901 572 * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt
mbed_official 87:085cde657901 573 * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt
mbed_official 87:085cde657901 574 * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt
mbed_official 87:085cde657901 575 * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt
mbed_official 87:085cde657901 576 * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt
mbed_official 87:085cde657901 577 * @arg SDIO_IT_SDIOIT: SD I/O interrupt received interrupt
mbed_official 87:085cde657901 578 * @arg SDIO_IT_CEATAEND: CE-ATA command completion signal received for CMD61 interrupt
mbed_official 87:085cde657901 579 * @retval The new state of SD IT (SET or RESET).
mbed_official 87:085cde657901 580 */
mbed_official 87:085cde657901 581 #define __HAL_SD_SDIO_GET_IT (__HANDLE__, __INTERRUPT__) __SDIO_GET_IT ((__HANDLE__)->Instance, __INTERRUPT__)
mbed_official 87:085cde657901 582
mbed_official 87:085cde657901 583 /**
mbed_official 87:085cde657901 584 * @brief Clear the SD's interrupt pending bits.
mbed_official 87:085cde657901 585 * @param __HANDLE__ : SD Handle
mbed_official 87:085cde657901 586 * @param __INTERRUPT__: specifies the interrupt pending bit to clear.
mbed_official 87:085cde657901 587 * This parameter can be one or a combination of the following values:
mbed_official 87:085cde657901 588 * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt
mbed_official 87:085cde657901 589 * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt
mbed_official 87:085cde657901 590 * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt
mbed_official 87:085cde657901 591 * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt
mbed_official 87:085cde657901 592 * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt
mbed_official 87:085cde657901 593 * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt
mbed_official 87:085cde657901 594 * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt
mbed_official 87:085cde657901 595 * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt
mbed_official 87:085cde657901 596 * @arg SDIO_IT_DATAEND: Data end (data counter, SDIO_DCOUNT, is zero) interrupt
mbed_official 87:085cde657901 597 * @arg SDIO_IT_STBITERR: Start bit not detected on all data signals in wide
mbed_official 87:085cde657901 598 * bus mode interrupt
mbed_official 87:085cde657901 599 * @arg SDIO_IT_SDIOIT: SD I/O interrupt received interrupt
mbed_official 87:085cde657901 600 * @arg SDIO_IT_CEATAEND: CE-ATA command completion signal received for CMD61
mbed_official 87:085cde657901 601 * @retval None
mbed_official 87:085cde657901 602 */
mbed_official 87:085cde657901 603 #define __HAL_SD_SDIO_CLEAR_IT(__HANDLE__, __INTERRUPT__) __SDIO_CLEAR_IT((__HANDLE__)->Instance, (__INTERRUPT__))
mbed_official 87:085cde657901 604 /**
mbed_official 87:085cde657901 605 * @}
mbed_official 87:085cde657901 606 */
mbed_official 87:085cde657901 607
mbed_official 87:085cde657901 608 /* Exported functions --------------------------------------------------------*/
mbed_official 87:085cde657901 609
mbed_official 87:085cde657901 610 /* Initialization/de-initialization functions **********************************/
mbed_official 87:085cde657901 611 HAL_SD_ErrorTypedef HAL_SD_Init(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *SDCardInfo);
mbed_official 87:085cde657901 612 HAL_StatusTypeDef HAL_SD_DeInit (SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 613 __weak void HAL_SD_MspInit(SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 614 __weak void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 615
mbed_official 87:085cde657901 616 /* I/O operation functions *****************************************************/
mbed_official 87:085cde657901 617 /* Blocking mode: Polling */
mbed_official 87:085cde657901 618 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
mbed_official 87:085cde657901 619 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
mbed_official 87:085cde657901 620 HAL_SD_ErrorTypedef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint64_t startaddr, uint64_t endaddr);
mbed_official 87:085cde657901 621
mbed_official 87:085cde657901 622 /* Non-Blocking mode: Interrupt */
mbed_official 87:085cde657901 623 void HAL_SD_IRQHandler(SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 624
mbed_official 87:085cde657901 625 /* Callback in non blocking modes (DMA) */
mbed_official 87:085cde657901 626 __weak void HAL_SD_DMA_RxCpltCallback(DMA_HandleTypeDef *hdma);
mbed_official 87:085cde657901 627 __weak void HAL_SD_DMA_RxErrorCallback(DMA_HandleTypeDef *hdma);
mbed_official 87:085cde657901 628 __weak void HAL_SD_DMA_TxCpltCallback(DMA_HandleTypeDef *hdma);
mbed_official 87:085cde657901 629 __weak void HAL_SD_DMA_TxErrorCallback(DMA_HandleTypeDef *hdma);
mbed_official 87:085cde657901 630 __weak void HAL_SD_XferCpltCallback(SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 631 __weak void HAL_SD_XferErrorCallback(SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 632
mbed_official 87:085cde657901 633 /* Non-Blocking mode: DMA */
mbed_official 87:085cde657901 634 HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pReadBuffer, uint64_t ReadAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
mbed_official 87:085cde657901 635 HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWriteBuffer, uint64_t WriteAddr, uint32_t BlockSize, uint32_t NumberOfBlocks);
mbed_official 87:085cde657901 636 HAL_SD_ErrorTypedef HAL_SD_CheckWriteOperation(SD_HandleTypeDef *hsd, uint32_t Timeout);
mbed_official 87:085cde657901 637 HAL_SD_ErrorTypedef HAL_SD_CheckReadOperation(SD_HandleTypeDef *hsd, uint32_t Timeout);
mbed_official 87:085cde657901 638
mbed_official 87:085cde657901 639 /* Peripheral Control functions ************************************************/
mbed_official 87:085cde657901 640 HAL_SD_ErrorTypedef HAL_SD_Get_CardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypedef *pCardInfo);
mbed_official 87:085cde657901 641 HAL_SD_ErrorTypedef HAL_SD_WideBusOperation_Config(SD_HandleTypeDef *hsd, uint32_t WideMode);
mbed_official 87:085cde657901 642 HAL_SD_ErrorTypedef HAL_SD_StopTransfer(SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 643 HAL_SD_ErrorTypedef HAL_SD_HighSpeed (SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 644
mbed_official 87:085cde657901 645 /* Peripheral State functions **************************************************/
mbed_official 87:085cde657901 646 HAL_SD_ErrorTypedef HAL_SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus);
mbed_official 87:085cde657901 647 HAL_SD_ErrorTypedef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypedef *pCardStatus);
mbed_official 87:085cde657901 648 HAL_SD_TransferStateTypedef HAL_SD_GetStatus(SD_HandleTypeDef *hsd);
mbed_official 87:085cde657901 649
mbed_official 87:085cde657901 650 /**
mbed_official 87:085cde657901 651 * @}
mbed_official 87:085cde657901 652 */
mbed_official 87:085cde657901 653
mbed_official 87:085cde657901 654 /**
mbed_official 87:085cde657901 655 * @}
mbed_official 87:085cde657901 656 */
mbed_official 87:085cde657901 657
mbed_official 87:085cde657901 658 #ifdef __cplusplus
mbed_official 87:085cde657901 659 }
mbed_official 87:085cde657901 660 #endif
mbed_official 87:085cde657901 661
mbed_official 87:085cde657901 662
mbed_official 87:085cde657901 663 #endif /* __STM32F4xx_HAL_SD_H */
mbed_official 87:085cde657901 664
mbed_official 87:085cde657901 665 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/