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:
Mon Nov 03 10:45:07 2014 +0000
Revision:
382:ee426a420dbb
Parent:
targets/cmsis/TARGET_STM/TARGET_DISCO_L053C8/stm32l0xx_hal_spi.h@376:cb4d9db17537
Child:
489:119543c9f674
Synchronized with git revision d54467eb07f62efd9ccdf44f1ede7fe1c1b0cf83

Full URL: https://github.com/mbedmicro/mbed/commit/d54467eb07f62efd9ccdf44f1ede7fe1c1b0cf83/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 376:cb4d9db17537 1 /**
mbed_official 376:cb4d9db17537 2 ******************************************************************************
mbed_official 376:cb4d9db17537 3 * @file stm32l0xx_hal_spi.h
mbed_official 376:cb4d9db17537 4 * @author MCD Application Team
mbed_official 376:cb4d9db17537 5 * @version V1.1.0
mbed_official 376:cb4d9db17537 6 * @date 18-June-2014
mbed_official 376:cb4d9db17537 7 * @brief Header file of SPI HAL module.
mbed_official 376:cb4d9db17537 8 ******************************************************************************
mbed_official 376:cb4d9db17537 9 * @attention
mbed_official 376:cb4d9db17537 10 *
mbed_official 376:cb4d9db17537 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 376:cb4d9db17537 12 *
mbed_official 376:cb4d9db17537 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 376:cb4d9db17537 14 * are permitted provided that the following conditions are met:
mbed_official 376:cb4d9db17537 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 376:cb4d9db17537 16 * this list of conditions and the following disclaimer.
mbed_official 376:cb4d9db17537 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 376:cb4d9db17537 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 376:cb4d9db17537 19 * and/or other materials provided with the distribution.
mbed_official 376:cb4d9db17537 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 376:cb4d9db17537 21 * may be used to endorse or promote products derived from this software
mbed_official 376:cb4d9db17537 22 * without specific prior written permission.
mbed_official 376:cb4d9db17537 23 *
mbed_official 376:cb4d9db17537 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 376:cb4d9db17537 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 376:cb4d9db17537 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 376:cb4d9db17537 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 376:cb4d9db17537 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 376:cb4d9db17537 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 376:cb4d9db17537 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 376:cb4d9db17537 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 376:cb4d9db17537 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 376:cb4d9db17537 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 376:cb4d9db17537 34 *
mbed_official 376:cb4d9db17537 35 ******************************************************************************
mbed_official 376:cb4d9db17537 36 */
mbed_official 376:cb4d9db17537 37
mbed_official 376:cb4d9db17537 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 376:cb4d9db17537 39 #ifndef __STM32L0xx_HAL_SPI_H
mbed_official 376:cb4d9db17537 40 #define __STM32L0xx_HAL_SPI_H
mbed_official 376:cb4d9db17537 41
mbed_official 376:cb4d9db17537 42 #ifdef __cplusplus
mbed_official 376:cb4d9db17537 43 extern "C" {
mbed_official 376:cb4d9db17537 44 #endif
mbed_official 376:cb4d9db17537 45
mbed_official 376:cb4d9db17537 46 /* Includes ------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 47 #include "stm32l0xx_hal_def.h"
mbed_official 376:cb4d9db17537 48
mbed_official 376:cb4d9db17537 49 /** @addtogroup STM32L0xx_HAL_Driver
mbed_official 376:cb4d9db17537 50 * @{
mbed_official 376:cb4d9db17537 51 */
mbed_official 376:cb4d9db17537 52
mbed_official 376:cb4d9db17537 53 /** @addtogroup SPI
mbed_official 376:cb4d9db17537 54 * @{
mbed_official 376:cb4d9db17537 55 */
mbed_official 376:cb4d9db17537 56
mbed_official 376:cb4d9db17537 57 /* Exported types ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 58
mbed_official 376:cb4d9db17537 59 /**
mbed_official 376:cb4d9db17537 60 * @brief SPI Configuration Structure definition
mbed_official 376:cb4d9db17537 61 */
mbed_official 376:cb4d9db17537 62 typedef struct
mbed_official 376:cb4d9db17537 63 {
mbed_official 376:cb4d9db17537 64 uint32_t Mode; /*!< Specifies the SPI operating mode.
mbed_official 376:cb4d9db17537 65 This parameter can be a value of @ref SPI_mode */
mbed_official 376:cb4d9db17537 66
mbed_official 376:cb4d9db17537 67 uint32_t Direction; /*!< Specifies the SPI Directional mode state.
mbed_official 376:cb4d9db17537 68 This parameter can be a value of @ref SPI_Direction_mode */
mbed_official 376:cb4d9db17537 69
mbed_official 376:cb4d9db17537 70 uint32_t DataSize; /*!< Specifies the SPI data size.
mbed_official 376:cb4d9db17537 71 This parameter can be a value of @ref SPI_data_size */
mbed_official 376:cb4d9db17537 72
mbed_official 376:cb4d9db17537 73 uint32_t CLKPolarity; /*!< Specifies the serial clock steady state.
mbed_official 376:cb4d9db17537 74 This parameter can be a value of @ref SPI_Clock_Polarity */
mbed_official 376:cb4d9db17537 75
mbed_official 376:cb4d9db17537 76 uint32_t CLKPhase; /*!< Specifies the clock active edge for the bit capture.
mbed_official 376:cb4d9db17537 77 This parameter can be a value of @ref SPI_Clock_Phase */
mbed_official 376:cb4d9db17537 78
mbed_official 376:cb4d9db17537 79 uint32_t NSS; /*!< Specifies whether the NSS signal is managed by
mbed_official 376:cb4d9db17537 80 hardware (NSS pin) or by software using the SSI bit.
mbed_official 376:cb4d9db17537 81 This parameter can be a value of @ref SPI_Slave_Select_management */
mbed_official 376:cb4d9db17537 82
mbed_official 376:cb4d9db17537 83 uint32_t BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be
mbed_official 376:cb4d9db17537 84 used to configure the transmit and receive SCK clock.
mbed_official 376:cb4d9db17537 85 This parameter can be a value of @ref SPI_BaudRate_Prescaler
mbed_official 376:cb4d9db17537 86 @note The communication clock is derived from the master
mbed_official 376:cb4d9db17537 87 clock. The slave clock does not need to be set */
mbed_official 376:cb4d9db17537 88
mbed_official 376:cb4d9db17537 89 uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
mbed_official 376:cb4d9db17537 90 This parameter can be a value of @ref SPI_MSB_LSB_transmission */
mbed_official 376:cb4d9db17537 91
mbed_official 376:cb4d9db17537 92 uint32_t TIMode; /*!< Specifies if the TI mode is enabled or not.
mbed_official 376:cb4d9db17537 93 This parameter can be a value of @ref SPI_TI_mode */
mbed_official 376:cb4d9db17537 94
mbed_official 376:cb4d9db17537 95 uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not.
mbed_official 376:cb4d9db17537 96 This parameter can be a value of @ref SPI_CRC_Calculation */
mbed_official 376:cb4d9db17537 97
mbed_official 376:cb4d9db17537 98 uint32_t CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation.
mbed_official 376:cb4d9db17537 99 This parameter must be a number between Min_Data = 0 and Max_Data = 65535 */
mbed_official 376:cb4d9db17537 100
mbed_official 376:cb4d9db17537 101 }SPI_InitTypeDef;
mbed_official 376:cb4d9db17537 102
mbed_official 376:cb4d9db17537 103 /**
mbed_official 376:cb4d9db17537 104 * @brief HAL SPI State structure definition
mbed_official 376:cb4d9db17537 105 */
mbed_official 376:cb4d9db17537 106 typedef enum
mbed_official 376:cb4d9db17537 107 {
mbed_official 376:cb4d9db17537 108 HAL_SPI_STATE_RESET = 0x00, /*!< SPI not yet initialized or disabled */
mbed_official 376:cb4d9db17537 109 HAL_SPI_STATE_READY = 0x01, /*!< SPI initialized and ready for use */
mbed_official 376:cb4d9db17537 110 HAL_SPI_STATE_BUSY = 0x02, /*!< SPI process is ongoing */
mbed_official 376:cb4d9db17537 111 HAL_SPI_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */
mbed_official 376:cb4d9db17537 112 HAL_SPI_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */
mbed_official 376:cb4d9db17537 113 HAL_SPI_STATE_BUSY_TX_RX = 0x32, /*!< Data Transmission and Reception process is ongoing */
mbed_official 376:cb4d9db17537 114 HAL_SPI_STATE_ERROR = 0x03 /*!< SPI error state */
mbed_official 376:cb4d9db17537 115
mbed_official 376:cb4d9db17537 116 }HAL_SPI_StateTypeDef;
mbed_official 376:cb4d9db17537 117
mbed_official 376:cb4d9db17537 118 /**
mbed_official 376:cb4d9db17537 119 * @brief HAL SPI Error Code structure definition
mbed_official 376:cb4d9db17537 120 */
mbed_official 376:cb4d9db17537 121 typedef enum
mbed_official 376:cb4d9db17537 122 {
mbed_official 376:cb4d9db17537 123 HAL_SPI_ERROR_NONE = 0x00, /*!< No error */
mbed_official 376:cb4d9db17537 124 HAL_SPI_ERROR_MODF = 0x01, /*!< MODF error */
mbed_official 376:cb4d9db17537 125 HAL_SPI_ERROR_CRC = 0x02, /*!< CRC error */
mbed_official 376:cb4d9db17537 126 HAL_SPI_ERROR_OVR = 0x04, /*!< OVR error */
mbed_official 376:cb4d9db17537 127 HAL_SPI_ERROR_FRE = 0x08, /*!< FRE error */
mbed_official 376:cb4d9db17537 128 HAL_SPI_ERROR_DMA = 0x10, /*!< DMA transfer error */
mbed_official 376:cb4d9db17537 129 HAL_SPI_ERROR_FLAG = 0x20 /*!< Flag: RXNE,TXE, BSY */
mbed_official 376:cb4d9db17537 130
mbed_official 376:cb4d9db17537 131 }HAL_SPI_ErrorTypeDef;
mbed_official 376:cb4d9db17537 132
mbed_official 376:cb4d9db17537 133 /**
mbed_official 376:cb4d9db17537 134 * @brief SPI handle Structure definition
mbed_official 376:cb4d9db17537 135 */
mbed_official 376:cb4d9db17537 136 typedef struct __SPI_HandleTypeDef
mbed_official 376:cb4d9db17537 137 {
mbed_official 376:cb4d9db17537 138 SPI_TypeDef *Instance; /* SPI registers base address */
mbed_official 376:cb4d9db17537 139
mbed_official 376:cb4d9db17537 140 SPI_InitTypeDef Init; /* SPI communication parameters */
mbed_official 376:cb4d9db17537 141
mbed_official 376:cb4d9db17537 142 uint8_t *pTxBuffPtr; /* Pointer to SPI Tx transfer Buffer */
mbed_official 376:cb4d9db17537 143
mbed_official 376:cb4d9db17537 144 uint16_t TxXferSize; /* SPI Tx transfer size */
mbed_official 376:cb4d9db17537 145
mbed_official 376:cb4d9db17537 146 uint16_t TxXferCount; /* SPI Tx Transfer Counter */
mbed_official 376:cb4d9db17537 147
mbed_official 376:cb4d9db17537 148 uint8_t *pRxBuffPtr; /* Pointer to SPI Rx transfer Buffer */
mbed_official 376:cb4d9db17537 149
mbed_official 376:cb4d9db17537 150 uint16_t RxXferSize; /* SPI Rx transfer size */
mbed_official 376:cb4d9db17537 151
mbed_official 376:cb4d9db17537 152 uint16_t RxXferCount; /* SPI Rx Transfer Counter */
mbed_official 376:cb4d9db17537 153
mbed_official 376:cb4d9db17537 154 DMA_HandleTypeDef *hdmatx; /* SPI Tx DMA handle parameters */
mbed_official 376:cb4d9db17537 155
mbed_official 376:cb4d9db17537 156 DMA_HandleTypeDef *hdmarx; /* SPI Rx DMA handle parameters */
mbed_official 376:cb4d9db17537 157
mbed_official 376:cb4d9db17537 158 void (*RxISR)(struct __SPI_HandleTypeDef * hspi); /* function pointer on Rx ISR */
mbed_official 376:cb4d9db17537 159
mbed_official 376:cb4d9db17537 160 void (*TxISR)(struct __SPI_HandleTypeDef * hspi); /* function pointer on Tx ISR */
mbed_official 376:cb4d9db17537 161
mbed_official 376:cb4d9db17537 162 HAL_LockTypeDef Lock; /* SPI locking object */
mbed_official 376:cb4d9db17537 163
mbed_official 376:cb4d9db17537 164 __IO HAL_SPI_StateTypeDef State; /* SPI communication state */
mbed_official 376:cb4d9db17537 165
mbed_official 376:cb4d9db17537 166 __IO HAL_SPI_ErrorTypeDef ErrorCode; /* SPI Error code */
mbed_official 376:cb4d9db17537 167
mbed_official 376:cb4d9db17537 168 }SPI_HandleTypeDef;
mbed_official 376:cb4d9db17537 169
mbed_official 376:cb4d9db17537 170 /* Exported constants --------------------------------------------------------*/
mbed_official 376:cb4d9db17537 171
mbed_official 376:cb4d9db17537 172 /** @defgroup SPI_Exported_Constants
mbed_official 376:cb4d9db17537 173 * @{
mbed_official 376:cb4d9db17537 174 */
mbed_official 376:cb4d9db17537 175
mbed_official 376:cb4d9db17537 176 /** @defgroup SPI_mode
mbed_official 376:cb4d9db17537 177 * @{
mbed_official 376:cb4d9db17537 178 */
mbed_official 376:cb4d9db17537 179 #define SPI_MODE_SLAVE ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 180 #define SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI)
mbed_official 376:cb4d9db17537 181
mbed_official 376:cb4d9db17537 182 #define IS_SPI_MODE(MODE) (((MODE) == SPI_MODE_SLAVE) || \
mbed_official 376:cb4d9db17537 183 ((MODE) == SPI_MODE_MASTER))
mbed_official 376:cb4d9db17537 184 /**
mbed_official 376:cb4d9db17537 185 * @}
mbed_official 376:cb4d9db17537 186 */
mbed_official 376:cb4d9db17537 187
mbed_official 376:cb4d9db17537 188 /** @defgroup SPI_Direction_mode
mbed_official 376:cb4d9db17537 189 * @{
mbed_official 376:cb4d9db17537 190 */
mbed_official 376:cb4d9db17537 191 #define SPI_DIRECTION_2LINES ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 192 #define SPI_DIRECTION_2LINES_RXONLY SPI_CR1_RXONLY
mbed_official 376:cb4d9db17537 193 #define SPI_DIRECTION_1LINE SPI_CR1_BIDIMODE
mbed_official 376:cb4d9db17537 194
mbed_official 376:cb4d9db17537 195 #define IS_SPI_DIRECTION_MODE(MODE) (((MODE) == SPI_DIRECTION_2LINES) || \
mbed_official 376:cb4d9db17537 196 ((MODE) == SPI_DIRECTION_2LINES_RXONLY) || \
mbed_official 376:cb4d9db17537 197 ((MODE) == SPI_DIRECTION_1LINE))
mbed_official 376:cb4d9db17537 198
mbed_official 376:cb4d9db17537 199 #define IS_SPI_DIRECTION_2LINES_OR_1LINE(MODE) (((MODE) == SPI_DIRECTION_2LINES) || \
mbed_official 376:cb4d9db17537 200 ((MODE) == SPI_DIRECTION_1LINE))
mbed_official 376:cb4d9db17537 201
mbed_official 376:cb4d9db17537 202 #define IS_SPI_DIRECTION_2LINES(MODE) ((MODE) == SPI_DIRECTION_2LINES)
mbed_official 376:cb4d9db17537 203
mbed_official 376:cb4d9db17537 204 /**
mbed_official 376:cb4d9db17537 205 * @}
mbed_official 376:cb4d9db17537 206 */
mbed_official 376:cb4d9db17537 207
mbed_official 376:cb4d9db17537 208 /** @defgroup SPI_data_size
mbed_official 376:cb4d9db17537 209 * @{
mbed_official 376:cb4d9db17537 210 */
mbed_official 376:cb4d9db17537 211 #define SPI_DATASIZE_8BIT ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 212 #define SPI_DATASIZE_16BIT SPI_CR1_DFF
mbed_official 376:cb4d9db17537 213
mbed_official 376:cb4d9db17537 214 #define IS_SPI_DATASIZE(DATASIZE) (((DATASIZE) == SPI_DATASIZE_16BIT) || \
mbed_official 376:cb4d9db17537 215 ((DATASIZE) == SPI_DATASIZE_8BIT))
mbed_official 376:cb4d9db17537 216 /**
mbed_official 376:cb4d9db17537 217 * @}
mbed_official 376:cb4d9db17537 218 */
mbed_official 376:cb4d9db17537 219
mbed_official 376:cb4d9db17537 220 /** @defgroup SPI_Clock_Polarity
mbed_official 376:cb4d9db17537 221 * @{
mbed_official 376:cb4d9db17537 222 */
mbed_official 376:cb4d9db17537 223 #define SPI_POLARITY_LOW ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 224 #define SPI_POLARITY_HIGH SPI_CR1_CPOL
mbed_official 376:cb4d9db17537 225
mbed_official 376:cb4d9db17537 226 #define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_POLARITY_LOW) || \
mbed_official 376:cb4d9db17537 227 ((CPOL) == SPI_POLARITY_HIGH))
mbed_official 376:cb4d9db17537 228 /**
mbed_official 376:cb4d9db17537 229 * @}
mbed_official 376:cb4d9db17537 230 */
mbed_official 376:cb4d9db17537 231
mbed_official 376:cb4d9db17537 232 /** @defgroup SPI_Clock_Phase
mbed_official 376:cb4d9db17537 233 * @{
mbed_official 376:cb4d9db17537 234 */
mbed_official 376:cb4d9db17537 235 #define SPI_PHASE_1EDGE ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 236 #define SPI_PHASE_2EDGE SPI_CR1_CPHA
mbed_official 376:cb4d9db17537 237
mbed_official 376:cb4d9db17537 238 #define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_PHASE_1EDGE) || \
mbed_official 376:cb4d9db17537 239 ((CPHA) == SPI_PHASE_2EDGE))
mbed_official 376:cb4d9db17537 240 /**
mbed_official 376:cb4d9db17537 241 * @}
mbed_official 376:cb4d9db17537 242 */
mbed_official 376:cb4d9db17537 243
mbed_official 376:cb4d9db17537 244 /** @defgroup SPI_Slave_Select_management
mbed_official 376:cb4d9db17537 245 * @{
mbed_official 376:cb4d9db17537 246 */
mbed_official 376:cb4d9db17537 247 #define SPI_NSS_SOFT SPI_CR1_SSM
mbed_official 376:cb4d9db17537 248 #define SPI_NSS_HARD_INPUT ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 249 #define SPI_NSS_HARD_OUTPUT ((uint32_t)0x00040000)
mbed_official 376:cb4d9db17537 250
mbed_official 376:cb4d9db17537 251 #define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_SOFT) || \
mbed_official 376:cb4d9db17537 252 ((NSS) == SPI_NSS_HARD_INPUT) || \
mbed_official 376:cb4d9db17537 253 ((NSS) == SPI_NSS_HARD_OUTPUT))
mbed_official 376:cb4d9db17537 254 /**
mbed_official 376:cb4d9db17537 255 * @}
mbed_official 376:cb4d9db17537 256 */
mbed_official 376:cb4d9db17537 257
mbed_official 376:cb4d9db17537 258 /** @defgroup SPI_BaudRate_Prescaler
mbed_official 376:cb4d9db17537 259 * @{
mbed_official 376:cb4d9db17537 260 */
mbed_official 376:cb4d9db17537 261 #define SPI_BAUDRATEPRESCALER_2 ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 262 #define SPI_BAUDRATEPRESCALER_4 ((uint32_t)0x00000008)
mbed_official 376:cb4d9db17537 263 #define SPI_BAUDRATEPRESCALER_8 ((uint32_t)0x00000010)
mbed_official 376:cb4d9db17537 264 #define SPI_BAUDRATEPRESCALER_16 ((uint32_t)0x00000018)
mbed_official 376:cb4d9db17537 265 #define SPI_BAUDRATEPRESCALER_32 ((uint32_t)0x00000020)
mbed_official 376:cb4d9db17537 266 #define SPI_BAUDRATEPRESCALER_64 ((uint32_t)0x00000028)
mbed_official 376:cb4d9db17537 267 #define SPI_BAUDRATEPRESCALER_128 ((uint32_t)0x00000030)
mbed_official 376:cb4d9db17537 268 #define SPI_BAUDRATEPRESCALER_256 ((uint32_t)0x00000038)
mbed_official 376:cb4d9db17537 269
mbed_official 376:cb4d9db17537 270 #define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BAUDRATEPRESCALER_2) || \
mbed_official 376:cb4d9db17537 271 ((PRESCALER) == SPI_BAUDRATEPRESCALER_4) || \
mbed_official 376:cb4d9db17537 272 ((PRESCALER) == SPI_BAUDRATEPRESCALER_8) || \
mbed_official 376:cb4d9db17537 273 ((PRESCALER) == SPI_BAUDRATEPRESCALER_16) || \
mbed_official 376:cb4d9db17537 274 ((PRESCALER) == SPI_BAUDRATEPRESCALER_32) || \
mbed_official 376:cb4d9db17537 275 ((PRESCALER) == SPI_BAUDRATEPRESCALER_64) || \
mbed_official 376:cb4d9db17537 276 ((PRESCALER) == SPI_BAUDRATEPRESCALER_128) || \
mbed_official 376:cb4d9db17537 277 ((PRESCALER) == SPI_BAUDRATEPRESCALER_256))
mbed_official 376:cb4d9db17537 278 /**
mbed_official 376:cb4d9db17537 279 * @}
mbed_official 376:cb4d9db17537 280 */
mbed_official 376:cb4d9db17537 281
mbed_official 376:cb4d9db17537 282 /** @defgroup SPI_MSB_LSB_transmission
mbed_official 376:cb4d9db17537 283 * @{
mbed_official 376:cb4d9db17537 284 */
mbed_official 376:cb4d9db17537 285 #define SPI_FIRSTBIT_MSB ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 286 #define SPI_FIRSTBIT_LSB SPI_CR1_LSBFIRST
mbed_official 376:cb4d9db17537 287
mbed_official 376:cb4d9db17537 288 #define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FIRSTBIT_MSB) || \
mbed_official 376:cb4d9db17537 289 ((BIT) == SPI_FIRSTBIT_LSB))
mbed_official 376:cb4d9db17537 290 /**
mbed_official 376:cb4d9db17537 291 * @}
mbed_official 376:cb4d9db17537 292 */
mbed_official 376:cb4d9db17537 293
mbed_official 376:cb4d9db17537 294 /** @defgroup SPI_TI_mode
mbed_official 376:cb4d9db17537 295 * @{
mbed_official 376:cb4d9db17537 296 */
mbed_official 376:cb4d9db17537 297 #define SPI_TIMODE_DISABLED ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 298 #define SPI_TIMODE_ENABLED SPI_CR2_FRF
mbed_official 376:cb4d9db17537 299
mbed_official 376:cb4d9db17537 300 #define IS_SPI_TIMODE(MODE) (((MODE) == SPI_TIMODE_DISABLED) || \
mbed_official 376:cb4d9db17537 301 ((MODE) == SPI_TIMODE_ENABLED))
mbed_official 376:cb4d9db17537 302 /**
mbed_official 376:cb4d9db17537 303 * @}
mbed_official 376:cb4d9db17537 304 */
mbed_official 376:cb4d9db17537 305
mbed_official 376:cb4d9db17537 306 /** @defgroup SPI_CRC_Calculation
mbed_official 376:cb4d9db17537 307 * @{
mbed_official 376:cb4d9db17537 308 */
mbed_official 376:cb4d9db17537 309 #define SPI_CRCCALCULATION_DISABLED ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 310 #define SPI_CRCCALCULATION_ENABLED SPI_CR1_CRCEN
mbed_official 376:cb4d9db17537 311
mbed_official 376:cb4d9db17537 312 #define IS_SPI_CRC_CALCULATION(CALCULATION) (((CALCULATION) == SPI_CRCCALCULATION_DISABLED) || \
mbed_official 376:cb4d9db17537 313 ((CALCULATION) == SPI_CRCCALCULATION_ENABLED))
mbed_official 376:cb4d9db17537 314 /**
mbed_official 376:cb4d9db17537 315 * @}
mbed_official 376:cb4d9db17537 316 */
mbed_official 376:cb4d9db17537 317
mbed_official 376:cb4d9db17537 318 /** @defgroup SPI_Interrupt_configuration_definition
mbed_official 376:cb4d9db17537 319 * @{
mbed_official 376:cb4d9db17537 320 */
mbed_official 376:cb4d9db17537 321 #define SPI_IT_TXE SPI_CR2_TXEIE
mbed_official 376:cb4d9db17537 322 #define SPI_IT_RXNE SPI_CR2_RXNEIE
mbed_official 376:cb4d9db17537 323 #define SPI_IT_ERR SPI_CR2_ERRIE
mbed_official 376:cb4d9db17537 324 /**
mbed_official 376:cb4d9db17537 325 * @}
mbed_official 376:cb4d9db17537 326 */
mbed_official 376:cb4d9db17537 327
mbed_official 376:cb4d9db17537 328 /** @defgroup SPI_Flag_definition
mbed_official 376:cb4d9db17537 329 * @{
mbed_official 376:cb4d9db17537 330 */
mbed_official 376:cb4d9db17537 331 #define SPI_FLAG_RXNE SPI_SR_RXNE
mbed_official 376:cb4d9db17537 332 #define SPI_FLAG_TXE SPI_SR_TXE
mbed_official 376:cb4d9db17537 333 #define SPI_FLAG_CRCERR SPI_SR_CRCERR
mbed_official 376:cb4d9db17537 334 #define SPI_FLAG_MODF SPI_SR_MODF
mbed_official 376:cb4d9db17537 335 #define SPI_FLAG_OVR SPI_SR_OVR
mbed_official 376:cb4d9db17537 336 #define SPI_FLAG_BSY SPI_SR_BSY
mbed_official 376:cb4d9db17537 337 #define SPI_FLAG_FRE SPI_SR_FRE
mbed_official 376:cb4d9db17537 338
mbed_official 376:cb4d9db17537 339 /**
mbed_official 376:cb4d9db17537 340 * @}
mbed_official 376:cb4d9db17537 341 */
mbed_official 376:cb4d9db17537 342
mbed_official 376:cb4d9db17537 343 /**
mbed_official 376:cb4d9db17537 344 * @}
mbed_official 376:cb4d9db17537 345 */
mbed_official 376:cb4d9db17537 346
mbed_official 376:cb4d9db17537 347 /* Exported macro ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 348
mbed_official 376:cb4d9db17537 349 /** @brief Reset SPI handle state
mbed_official 376:cb4d9db17537 350 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 351 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 352 * @retval None
mbed_official 376:cb4d9db17537 353 */
mbed_official 376:cb4d9db17537 354 #define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPI_STATE_RESET)
mbed_official 376:cb4d9db17537 355
mbed_official 376:cb4d9db17537 356 /** @brief Enable or disable the specified SPI interrupts.
mbed_official 376:cb4d9db17537 357 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 358 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 359 * @param __INTERRUPT__: specifies the interrupt source to enable or disable.
mbed_official 376:cb4d9db17537 360 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 361 * @arg SPI_IT_TXE: Tx buffer empty interrupt enable
mbed_official 376:cb4d9db17537 362 * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 376:cb4d9db17537 363 * @arg SPI_IT_ERR: Error interrupt enable
mbed_official 376:cb4d9db17537 364 * @retval None
mbed_official 376:cb4d9db17537 365 */
mbed_official 376:cb4d9db17537 366 #define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 |= (__INTERRUPT__))
mbed_official 376:cb4d9db17537 367 #define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 &= (~(__INTERRUPT__)))
mbed_official 376:cb4d9db17537 368
mbed_official 376:cb4d9db17537 369 /** @brief Check if the specified SPI interrupt source is enabled or disabled.
mbed_official 376:cb4d9db17537 370 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 371 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 372 * @param __INTERRUPT__: specifies the SPI interrupt source to check.
mbed_official 376:cb4d9db17537 373 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 374 * @arg SPI_IT_TXE: Tx buffer empty interrupt enable
mbed_official 376:cb4d9db17537 375 * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 376:cb4d9db17537 376 * @arg SPI_IT_ERR: Error interrupt enable
mbed_official 376:cb4d9db17537 377 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 376:cb4d9db17537 378 */
mbed_official 376:cb4d9db17537 379 #define __HAL_SPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
mbed_official 376:cb4d9db17537 380
mbed_official 376:cb4d9db17537 381 /** @brief Check whether the specified SPI flag is set or not.
mbed_official 376:cb4d9db17537 382 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 383 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 384 * @param __FLAG__: specifies the flag to check.
mbed_official 376:cb4d9db17537 385 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 386 * @arg SPI_FLAG_RXNE: Receive buffer not empty flag
mbed_official 376:cb4d9db17537 387 * @arg SPI_FLAG_TXE: Transmit buffer empty flag
mbed_official 376:cb4d9db17537 388 * @arg SPI_FLAG_CRCERR: CRC error flag
mbed_official 376:cb4d9db17537 389 * @arg SPI_FLAG_MODF: Mode fault flag
mbed_official 376:cb4d9db17537 390 * @arg SPI_FLAG_OVR: Overrun flag
mbed_official 376:cb4d9db17537 391 * @arg SPI_FLAG_BSY: Busy flag
mbed_official 376:cb4d9db17537 392 * @arg SPI_FLAG_FRE: Frame format error flag
mbed_official 376:cb4d9db17537 393 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 376:cb4d9db17537 394 */
mbed_official 376:cb4d9db17537 395 #define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
mbed_official 376:cb4d9db17537 396
mbed_official 376:cb4d9db17537 397 /** @brief Clear the SPI CRCERR pending flag.
mbed_official 376:cb4d9db17537 398 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 399 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 400 * @retval None
mbed_official 376:cb4d9db17537 401 */
mbed_official 376:cb4d9db17537 402 #define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR &= (uint32_t)~((uint32_t)SPI_FLAG_CRCERR))
mbed_official 376:cb4d9db17537 403
mbed_official 376:cb4d9db17537 404 /** @brief Clear the SPI MODF pending flag.
mbed_official 376:cb4d9db17537 405 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 406 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 407 * @retval None
mbed_official 376:cb4d9db17537 408 */
mbed_official 376:cb4d9db17537 409 #define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__) do{(__HANDLE__)->Instance->SR;\
mbed_official 376:cb4d9db17537 410 (__HANDLE__)->Instance->CR1 &= (uint32_t)~((uint32_t)SPI_CR1_SPE);}while(0)
mbed_official 376:cb4d9db17537 411
mbed_official 376:cb4d9db17537 412 /** @brief Clear the SPI OVR pending flag.
mbed_official 376:cb4d9db17537 413 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 414 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 415 * @retval None
mbed_official 376:cb4d9db17537 416 */
mbed_official 376:cb4d9db17537 417 #define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__) do{(__HANDLE__)->Instance->DR;\
mbed_official 376:cb4d9db17537 418 (__HANDLE__)->Instance->SR;}while(0)
mbed_official 376:cb4d9db17537 419
mbed_official 376:cb4d9db17537 420 /** @brief Clear the SPI FRE pending flag.
mbed_official 376:cb4d9db17537 421 * @param __HANDLE__: specifies the SPI handle.
mbed_official 376:cb4d9db17537 422 * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 423 * @retval None
mbed_official 376:cb4d9db17537 424 */
mbed_official 376:cb4d9db17537 425 #define __HAL_SPI_CLEAR_FREFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR)
mbed_official 376:cb4d9db17537 426
mbed_official 376:cb4d9db17537 427 #define __HAL_SPI_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= SPI_CR1_SPE)
mbed_official 376:cb4d9db17537 428 #define __HAL_SPI_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= (uint32_t)~((uint32_t)SPI_CR1_SPE))
mbed_official 376:cb4d9db17537 429
mbed_official 376:cb4d9db17537 430 #define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) (((POLYNOMIAL) >= 0x1) && ((POLYNOMIAL) <= 0xFFFF))
mbed_official 376:cb4d9db17537 431
mbed_official 376:cb4d9db17537 432 #define __HAL_SPI_1LINE_TX(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= SPI_CR1_BIDIOE)
mbed_official 376:cb4d9db17537 433
mbed_official 376:cb4d9db17537 434 #define __HAL_SPI_1LINE_RX(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= (uint32_t)~((uint32_t)SPI_CR1_BIDIOE))
mbed_official 376:cb4d9db17537 435
mbed_official 376:cb4d9db17537 436 #define __HAL_SPI_RESET_CRC(__HANDLE__) do{(__HANDLE__)->Instance->CR1 &= (uint32_t)~((uint32_t)SPI_CR1_CRCEN);\
mbed_official 376:cb4d9db17537 437 (__HANDLE__)->Instance->CR1 |= SPI_CR1_CRCEN;}while(0)
mbed_official 376:cb4d9db17537 438
mbed_official 376:cb4d9db17537 439 /* Exported functions --------------------------------------------------------*/
mbed_official 376:cb4d9db17537 440
mbed_official 376:cb4d9db17537 441 /* Initialization/de-initialization functions **********************************/
mbed_official 376:cb4d9db17537 442 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 443 HAL_StatusTypeDef HAL_SPI_DeInit (SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 444 void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 445 void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 446
mbed_official 376:cb4d9db17537 447 /* I/O operation functions *****************************************************/
mbed_official 376:cb4d9db17537 448 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 376:cb4d9db17537 449 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 376:cb4d9db17537 450 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
mbed_official 376:cb4d9db17537 451 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 452 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 453 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
mbed_official 376:cb4d9db17537 454 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 455 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 456 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
mbed_official 376:cb4d9db17537 457 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 458 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 459 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 460
mbed_official 376:cb4d9db17537 461 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 462 void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 463 void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 464 void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 465 void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 466 void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 467 void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 468 void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 469
mbed_official 376:cb4d9db17537 470 /* Peripheral State and Control functions **************************************/
mbed_official 376:cb4d9db17537 471 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 472 HAL_SPI_ErrorTypeDef HAL_SPI_GetError(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 473
mbed_official 376:cb4d9db17537 474 /**
mbed_official 376:cb4d9db17537 475 * @}
mbed_official 376:cb4d9db17537 476 */
mbed_official 376:cb4d9db17537 477
mbed_official 376:cb4d9db17537 478 /**
mbed_official 376:cb4d9db17537 479 * @}
mbed_official 376:cb4d9db17537 480 */
mbed_official 376:cb4d9db17537 481
mbed_official 376:cb4d9db17537 482 #ifdef __cplusplus
mbed_official 376:cb4d9db17537 483 }
mbed_official 376:cb4d9db17537 484 #endif
mbed_official 376:cb4d9db17537 485
mbed_official 376:cb4d9db17537 486 #endif /* __STM32L0xx_HAL_SPI_H */
mbed_official 376:cb4d9db17537 487
mbed_official 376:cb4d9db17537 488 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/