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:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
489:119543c9f674
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

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

Initial version of drivers for SAMR21

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 489:119543c9f674 5 * @version V1.2.0
mbed_official 489:119543c9f674 6 * @date 06-February-2015
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 489:119543c9f674 11 * <h2><center>&copy; COPYRIGHT(c) 2015 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 489:119543c9f674 58 /** @defgroup SPI_Exported_Types SPI Exported Types
mbed_official 489:119543c9f674 59 * @{
mbed_official 489:119543c9f674 60 */
mbed_official 376:cb4d9db17537 61
mbed_official 376:cb4d9db17537 62 /**
mbed_official 376:cb4d9db17537 63 * @brief SPI Configuration Structure definition
mbed_official 376:cb4d9db17537 64 */
mbed_official 376:cb4d9db17537 65 typedef struct
mbed_official 376:cb4d9db17537 66 {
mbed_official 376:cb4d9db17537 67 uint32_t Mode; /*!< Specifies the SPI operating mode.
mbed_official 376:cb4d9db17537 68 This parameter can be a value of @ref SPI_mode */
mbed_official 376:cb4d9db17537 69
mbed_official 376:cb4d9db17537 70 uint32_t Direction; /*!< Specifies the SPI Directional mode state.
mbed_official 376:cb4d9db17537 71 This parameter can be a value of @ref SPI_Direction_mode */
mbed_official 376:cb4d9db17537 72
mbed_official 376:cb4d9db17537 73 uint32_t DataSize; /*!< Specifies the SPI data size.
mbed_official 376:cb4d9db17537 74 This parameter can be a value of @ref SPI_data_size */
mbed_official 376:cb4d9db17537 75
mbed_official 376:cb4d9db17537 76 uint32_t CLKPolarity; /*!< Specifies the serial clock steady state.
mbed_official 376:cb4d9db17537 77 This parameter can be a value of @ref SPI_Clock_Polarity */
mbed_official 376:cb4d9db17537 78
mbed_official 376:cb4d9db17537 79 uint32_t CLKPhase; /*!< Specifies the clock active edge for the bit capture.
mbed_official 376:cb4d9db17537 80 This parameter can be a value of @ref SPI_Clock_Phase */
mbed_official 376:cb4d9db17537 81
mbed_official 376:cb4d9db17537 82 uint32_t NSS; /*!< Specifies whether the NSS signal is managed by
mbed_official 376:cb4d9db17537 83 hardware (NSS pin) or by software using the SSI bit.
mbed_official 376:cb4d9db17537 84 This parameter can be a value of @ref SPI_Slave_Select_management */
mbed_official 376:cb4d9db17537 85
mbed_official 376:cb4d9db17537 86 uint32_t BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be
mbed_official 376:cb4d9db17537 87 used to configure the transmit and receive SCK clock.
mbed_official 376:cb4d9db17537 88 This parameter can be a value of @ref SPI_BaudRate_Prescaler
mbed_official 376:cb4d9db17537 89 @note The communication clock is derived from the master
mbed_official 376:cb4d9db17537 90 clock. The slave clock does not need to be set */
mbed_official 376:cb4d9db17537 91
mbed_official 376:cb4d9db17537 92 uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
mbed_official 376:cb4d9db17537 93 This parameter can be a value of @ref SPI_MSB_LSB_transmission */
mbed_official 376:cb4d9db17537 94
mbed_official 376:cb4d9db17537 95 uint32_t TIMode; /*!< Specifies if the TI mode is enabled or not.
mbed_official 376:cb4d9db17537 96 This parameter can be a value of @ref SPI_TI_mode */
mbed_official 376:cb4d9db17537 97
mbed_official 376:cb4d9db17537 98 uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not.
mbed_official 376:cb4d9db17537 99 This parameter can be a value of @ref SPI_CRC_Calculation */
mbed_official 376:cb4d9db17537 100
mbed_official 376:cb4d9db17537 101 uint32_t CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation.
mbed_official 376:cb4d9db17537 102 This parameter must be a number between Min_Data = 0 and Max_Data = 65535 */
mbed_official 376:cb4d9db17537 103
mbed_official 376:cb4d9db17537 104 }SPI_InitTypeDef;
mbed_official 376:cb4d9db17537 105
mbed_official 376:cb4d9db17537 106 /**
mbed_official 376:cb4d9db17537 107 * @brief HAL SPI State structure definition
mbed_official 376:cb4d9db17537 108 */
mbed_official 376:cb4d9db17537 109 typedef enum
mbed_official 376:cb4d9db17537 110 {
mbed_official 376:cb4d9db17537 111 HAL_SPI_STATE_RESET = 0x00, /*!< SPI not yet initialized or disabled */
mbed_official 376:cb4d9db17537 112 HAL_SPI_STATE_READY = 0x01, /*!< SPI initialized and ready for use */
mbed_official 376:cb4d9db17537 113 HAL_SPI_STATE_BUSY = 0x02, /*!< SPI process is ongoing */
mbed_official 376:cb4d9db17537 114 HAL_SPI_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */
mbed_official 376:cb4d9db17537 115 HAL_SPI_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */
mbed_official 376:cb4d9db17537 116 HAL_SPI_STATE_BUSY_TX_RX = 0x32, /*!< Data Transmission and Reception process is ongoing */
mbed_official 376:cb4d9db17537 117 HAL_SPI_STATE_ERROR = 0x03 /*!< SPI error state */
mbed_official 376:cb4d9db17537 118
mbed_official 376:cb4d9db17537 119 }HAL_SPI_StateTypeDef;
mbed_official 376:cb4d9db17537 120
mbed_official 376:cb4d9db17537 121 /**
mbed_official 376:cb4d9db17537 122 * @brief SPI handle Structure definition
mbed_official 376:cb4d9db17537 123 */
mbed_official 376:cb4d9db17537 124 typedef struct __SPI_HandleTypeDef
mbed_official 376:cb4d9db17537 125 {
mbed_official 489:119543c9f674 126 SPI_TypeDef *Instance; /*!< SPI registers base address */
mbed_official 376:cb4d9db17537 127
mbed_official 489:119543c9f674 128 SPI_InitTypeDef Init; /*!< SPI communication parameters */
mbed_official 376:cb4d9db17537 129
mbed_official 489:119543c9f674 130 uint8_t *pTxBuffPtr; /*!< Pointer to SPI Tx transfer Buffer */
mbed_official 376:cb4d9db17537 131
mbed_official 489:119543c9f674 132 uint16_t TxXferSize; /*!< SPI Tx transfer size */
mbed_official 376:cb4d9db17537 133
mbed_official 489:119543c9f674 134 uint16_t TxXferCount; /*!< SPI Tx Transfer Counter */
mbed_official 376:cb4d9db17537 135
mbed_official 489:119543c9f674 136 uint8_t *pRxBuffPtr; /*!< Pointer to SPI Rx transfer Buffer */
mbed_official 376:cb4d9db17537 137
mbed_official 489:119543c9f674 138 uint16_t RxXferSize; /*!< SPI Rx transfer size */
mbed_official 376:cb4d9db17537 139
mbed_official 489:119543c9f674 140 uint16_t RxXferCount; /*!< SPI Rx Transfer Counter */
mbed_official 376:cb4d9db17537 141
mbed_official 489:119543c9f674 142 DMA_HandleTypeDef *hdmatx; /*!< SPI Tx DMA handle parameters */
mbed_official 376:cb4d9db17537 143
mbed_official 489:119543c9f674 144 DMA_HandleTypeDef *hdmarx; /*!< SPI Rx DMA handle parameters */
mbed_official 376:cb4d9db17537 145
mbed_official 489:119543c9f674 146 void (*RxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Rx ISR */
mbed_official 376:cb4d9db17537 147
mbed_official 489:119543c9f674 148 void (*TxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Tx ISR */
mbed_official 376:cb4d9db17537 149
mbed_official 489:119543c9f674 150 HAL_LockTypeDef Lock; /*!< SPI locking object */
mbed_official 376:cb4d9db17537 151
mbed_official 489:119543c9f674 152 __IO HAL_SPI_StateTypeDef State; /*!< SPI communication state */
mbed_official 376:cb4d9db17537 153
mbed_official 489:119543c9f674 154 __IO uint32_t ErrorCode; /*!< SPI Error code */
mbed_official 376:cb4d9db17537 155
mbed_official 376:cb4d9db17537 156 }SPI_HandleTypeDef;
mbed_official 489:119543c9f674 157 /**
mbed_official 489:119543c9f674 158 * @}
mbed_official 489:119543c9f674 159 */
mbed_official 489:119543c9f674 160
mbed_official 376:cb4d9db17537 161
mbed_official 376:cb4d9db17537 162 /* Exported constants --------------------------------------------------------*/
mbed_official 376:cb4d9db17537 163
mbed_official 489:119543c9f674 164 /** @defgroup SPI_Exported_Constants SPI Exported Constants
mbed_official 376:cb4d9db17537 165 * @{
mbed_official 376:cb4d9db17537 166 */
mbed_official 376:cb4d9db17537 167
mbed_official 489:119543c9f674 168 /**
mbed_official 489:119543c9f674 169 * @defgroup SPI_ErrorCode SPI Error Code
mbed_official 489:119543c9f674 170 * @{
mbed_official 489:119543c9f674 171 */
mbed_official 489:119543c9f674 172 #define HAL_SPI_ERROR_NONE ((uint32_t)0x00) /*!< No error */
mbed_official 489:119543c9f674 173 #define HAL_SPI_ERROR_MODF ((uint32_t)0x01) /*!< MODF error */
mbed_official 489:119543c9f674 174 #define HAL_SPI_ERROR_CRC ((uint32_t)0x02) /*!< CRC error */
mbed_official 489:119543c9f674 175 #define HAL_SPI_ERROR_OVR ((uint32_t)0x04) /*!< OVR error */
mbed_official 489:119543c9f674 176 #define HAL_SPI_ERROR_FRE ((uint32_t)0x08) /*!< FRE error */
mbed_official 489:119543c9f674 177 #define HAL_SPI_ERROR_DMA ((uint32_t)0x10) /*!< DMA transfer error */
mbed_official 489:119543c9f674 178 #define HAL_SPI_ERROR_FLAG ((uint32_t)0x20) /*!< Flag: RXNE,TXE, BSY */
mbed_official 489:119543c9f674 179 /**
mbed_official 489:119543c9f674 180 * @}
mbed_official 489:119543c9f674 181 */
mbed_official 489:119543c9f674 182
mbed_official 489:119543c9f674 183 /** @defgroup SPI_mode SPI mode
mbed_official 376:cb4d9db17537 184 * @{
mbed_official 376:cb4d9db17537 185 */
mbed_official 376:cb4d9db17537 186 #define SPI_MODE_SLAVE ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 187 #define SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI)
mbed_official 376:cb4d9db17537 188
mbed_official 376:cb4d9db17537 189 /**
mbed_official 376:cb4d9db17537 190 * @}
mbed_official 376:cb4d9db17537 191 */
mbed_official 376:cb4d9db17537 192
mbed_official 489:119543c9f674 193 /** @defgroup SPI_Direction_mode SPI Direction mode
mbed_official 376:cb4d9db17537 194 * @{
mbed_official 376:cb4d9db17537 195 */
mbed_official 489:119543c9f674 196 #define SPI_DIRECTION_2LINES ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 197 #define SPI_DIRECTION_2LINES_RXONLY SPI_CR1_RXONLY
mbed_official 489:119543c9f674 198 #define SPI_DIRECTION_1LINE SPI_CR1_BIDIMODE
mbed_official 376:cb4d9db17537 199
mbed_official 376:cb4d9db17537 200 /**
mbed_official 376:cb4d9db17537 201 * @}
mbed_official 376:cb4d9db17537 202 */
mbed_official 376:cb4d9db17537 203
mbed_official 489:119543c9f674 204 /** @defgroup SPI_data_size SPI data size
mbed_official 376:cb4d9db17537 205 * @{
mbed_official 376:cb4d9db17537 206 */
mbed_official 376:cb4d9db17537 207 #define SPI_DATASIZE_8BIT ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 208 #define SPI_DATASIZE_16BIT SPI_CR1_DFF
mbed_official 376:cb4d9db17537 209
mbed_official 376:cb4d9db17537 210 /**
mbed_official 376:cb4d9db17537 211 * @}
mbed_official 376:cb4d9db17537 212 */
mbed_official 376:cb4d9db17537 213
mbed_official 489:119543c9f674 214 /** @defgroup SPI_Clock_Polarity SPI Clock Polarity
mbed_official 376:cb4d9db17537 215 * @{
mbed_official 376:cb4d9db17537 216 */
mbed_official 376:cb4d9db17537 217 #define SPI_POLARITY_LOW ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 218 #define SPI_POLARITY_HIGH SPI_CR1_CPOL
mbed_official 376:cb4d9db17537 219
mbed_official 376:cb4d9db17537 220 /**
mbed_official 376:cb4d9db17537 221 * @}
mbed_official 376:cb4d9db17537 222 */
mbed_official 376:cb4d9db17537 223
mbed_official 489:119543c9f674 224 /** @defgroup SPI_Clock_Phase SPI Clock Phase
mbed_official 376:cb4d9db17537 225 * @{
mbed_official 376:cb4d9db17537 226 */
mbed_official 376:cb4d9db17537 227 #define SPI_PHASE_1EDGE ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 228 #define SPI_PHASE_2EDGE SPI_CR1_CPHA
mbed_official 376:cb4d9db17537 229
mbed_official 376:cb4d9db17537 230 /**
mbed_official 376:cb4d9db17537 231 * @}
mbed_official 376:cb4d9db17537 232 */
mbed_official 376:cb4d9db17537 233
mbed_official 489:119543c9f674 234 /** @defgroup SPI_Slave_Select_management SPI Slave Select management
mbed_official 376:cb4d9db17537 235 * @{
mbed_official 376:cb4d9db17537 236 */
mbed_official 376:cb4d9db17537 237 #define SPI_NSS_SOFT SPI_CR1_SSM
mbed_official 376:cb4d9db17537 238 #define SPI_NSS_HARD_INPUT ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 239 #define SPI_NSS_HARD_OUTPUT ((uint32_t)(SPI_CR2_SSOE << 16))
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
mbed_official 489:119543c9f674 245 /** @defgroup SPI_BaudRate_Prescaler SPI BaudRate Prescaler
mbed_official 376:cb4d9db17537 246 * @{
mbed_official 376:cb4d9db17537 247 */
mbed_official 376:cb4d9db17537 248 #define SPI_BAUDRATEPRESCALER_2 ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 249 #define SPI_BAUDRATEPRESCALER_4 ((uint32_t)SPI_CR1_BR_0)
mbed_official 489:119543c9f674 250 #define SPI_BAUDRATEPRESCALER_8 ((uint32_t)SPI_CR1_BR_1)
mbed_official 489:119543c9f674 251 #define SPI_BAUDRATEPRESCALER_16 ((uint32_t)SPI_CR1_BR_1 | SPI_CR1_BR_0)
mbed_official 489:119543c9f674 252 #define SPI_BAUDRATEPRESCALER_32 ((uint32_t)SPI_CR1_BR_2)
mbed_official 489:119543c9f674 253 #define SPI_BAUDRATEPRESCALER_64 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_0)
mbed_official 489:119543c9f674 254 #define SPI_BAUDRATEPRESCALER_128 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_1)
mbed_official 489:119543c9f674 255 #define SPI_BAUDRATEPRESCALER_256 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0)
mbed_official 376:cb4d9db17537 256
mbed_official 376:cb4d9db17537 257 /**
mbed_official 376:cb4d9db17537 258 * @}
mbed_official 376:cb4d9db17537 259 */
mbed_official 376:cb4d9db17537 260
mbed_official 489:119543c9f674 261 /** @defgroup SPI_MSB_LSB_transmission SPI MSB LSB transmission
mbed_official 376:cb4d9db17537 262 * @{
mbed_official 376:cb4d9db17537 263 */
mbed_official 376:cb4d9db17537 264 #define SPI_FIRSTBIT_MSB ((uint32_t)0x00000000)
mbed_official 376:cb4d9db17537 265 #define SPI_FIRSTBIT_LSB SPI_CR1_LSBFIRST
mbed_official 376:cb4d9db17537 266
mbed_official 376:cb4d9db17537 267 /**
mbed_official 376:cb4d9db17537 268 * @}
mbed_official 376:cb4d9db17537 269 */
mbed_official 376:cb4d9db17537 270
mbed_official 489:119543c9f674 271 /** @defgroup SPI_TI_mode SPI TI mode
mbed_official 376:cb4d9db17537 272 * @{
mbed_official 376:cb4d9db17537 273 */
mbed_official 489:119543c9f674 274 #define SPI_TIMODE_DISABLE ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 275 #define SPI_TIMODE_ENABLE SPI_CR2_FRF
mbed_official 376:cb4d9db17537 276
mbed_official 376:cb4d9db17537 277 /**
mbed_official 376:cb4d9db17537 278 * @}
mbed_official 376:cb4d9db17537 279 */
mbed_official 376:cb4d9db17537 280
mbed_official 489:119543c9f674 281 /** @defgroup SPI_CRC_Calculation SPI CRC Calculation
mbed_official 376:cb4d9db17537 282 * @{
mbed_official 376:cb4d9db17537 283 */
mbed_official 489:119543c9f674 284 #define SPI_CRCCALCULATION_DISABLE ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 285 #define SPI_CRCCALCULATION_ENABLE SPI_CR1_CRCEN
mbed_official 376:cb4d9db17537 286
mbed_official 376:cb4d9db17537 287 /**
mbed_official 376:cb4d9db17537 288 * @}
mbed_official 376:cb4d9db17537 289 */
mbed_official 376:cb4d9db17537 290
mbed_official 489:119543c9f674 291 /** @defgroup SPI_Interrupt_configuration_definition SPI Interrupt configuration definition
mbed_official 376:cb4d9db17537 292 * @{
mbed_official 376:cb4d9db17537 293 */
mbed_official 376:cb4d9db17537 294 #define SPI_IT_TXE SPI_CR2_TXEIE
mbed_official 376:cb4d9db17537 295 #define SPI_IT_RXNE SPI_CR2_RXNEIE
mbed_official 376:cb4d9db17537 296 #define SPI_IT_ERR SPI_CR2_ERRIE
mbed_official 376:cb4d9db17537 297 /**
mbed_official 376:cb4d9db17537 298 * @}
mbed_official 376:cb4d9db17537 299 */
mbed_official 376:cb4d9db17537 300
mbed_official 489:119543c9f674 301 /** @defgroup SPI_Flag_definition SPI Flag definition
mbed_official 376:cb4d9db17537 302 * @{
mbed_official 376:cb4d9db17537 303 */
mbed_official 376:cb4d9db17537 304 #define SPI_FLAG_RXNE SPI_SR_RXNE
mbed_official 376:cb4d9db17537 305 #define SPI_FLAG_TXE SPI_SR_TXE
mbed_official 376:cb4d9db17537 306 #define SPI_FLAG_CRCERR SPI_SR_CRCERR
mbed_official 376:cb4d9db17537 307 #define SPI_FLAG_MODF SPI_SR_MODF
mbed_official 376:cb4d9db17537 308 #define SPI_FLAG_OVR SPI_SR_OVR
mbed_official 376:cb4d9db17537 309 #define SPI_FLAG_BSY SPI_SR_BSY
mbed_official 376:cb4d9db17537 310 #define SPI_FLAG_FRE SPI_SR_FRE
mbed_official 376:cb4d9db17537 311
mbed_official 376:cb4d9db17537 312 /**
mbed_official 376:cb4d9db17537 313 * @}
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 */
mbed_official 376:cb4d9db17537 319
mbed_official 489:119543c9f674 320
mbed_official 376:cb4d9db17537 321 /* Exported macro ------------------------------------------------------------*/
mbed_official 489:119543c9f674 322 /** @defgroup SPI_Exported_Macros SPI Exported Macros
mbed_official 489:119543c9f674 323 * @{
mbed_official 489:119543c9f674 324 */
mbed_official 376:cb4d9db17537 325
mbed_official 376:cb4d9db17537 326 /** @brief Reset SPI handle state
mbed_official 376:cb4d9db17537 327 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 328 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 329 * @retval None
mbed_official 376:cb4d9db17537 330 */
mbed_official 376:cb4d9db17537 331 #define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPI_STATE_RESET)
mbed_official 376:cb4d9db17537 332
mbed_official 489:119543c9f674 333 /** @brief Enable the specified SPI interrupts.
mbed_official 376:cb4d9db17537 334 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 335 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 336 * @param __INTERRUPT__: specifies the interrupt source to enable.
mbed_official 376:cb4d9db17537 337 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 338 * @arg SPI_IT_TXE: Tx buffer empty interrupt enable
mbed_official 376:cb4d9db17537 339 * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 376:cb4d9db17537 340 * @arg SPI_IT_ERR: Error interrupt enable
mbed_official 376:cb4d9db17537 341 * @retval None
mbed_official 376:cb4d9db17537 342 */
mbed_official 489:119543c9f674 343 #define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
mbed_official 489:119543c9f674 344
mbed_official 489:119543c9f674 345 /** @brief Disable the specified SPI interrupts.
mbed_official 489:119543c9f674 346 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 347 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 348 * @param __INTERRUPT__: specifies the interrupt source to disable.
mbed_official 489:119543c9f674 349 * This parameter can be one of the following values:
mbed_official 489:119543c9f674 350 * @arg SPI_IT_TXE: Tx buffer empty interrupt enable
mbed_official 489:119543c9f674 351 * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 489:119543c9f674 352 * @arg SPI_IT_ERR: Error interrupt enable
mbed_official 489:119543c9f674 353 * @retval None
mbed_official 489:119543c9f674 354 */
mbed_official 489:119543c9f674 355 #define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
mbed_official 376:cb4d9db17537 356
mbed_official 376:cb4d9db17537 357 /** @brief Check if the specified SPI interrupt source is enabled or disabled.
mbed_official 376:cb4d9db17537 358 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 359 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 360 * @param __INTERRUPT__: specifies the SPI interrupt source to check.
mbed_official 376:cb4d9db17537 361 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 362 * @arg SPI_IT_TXE: Tx buffer empty interrupt enable
mbed_official 376:cb4d9db17537 363 * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 376:cb4d9db17537 364 * @arg SPI_IT_ERR: Error interrupt enable
mbed_official 376:cb4d9db17537 365 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 376:cb4d9db17537 366 */
mbed_official 376:cb4d9db17537 367 #define __HAL_SPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
mbed_official 376:cb4d9db17537 368
mbed_official 376:cb4d9db17537 369 /** @brief Check whether the specified SPI flag is set or not.
mbed_official 376:cb4d9db17537 370 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 371 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 372 * @param __FLAG__: specifies the flag to check.
mbed_official 376:cb4d9db17537 373 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 374 * @arg SPI_FLAG_RXNE: Receive buffer not empty flag
mbed_official 376:cb4d9db17537 375 * @arg SPI_FLAG_TXE: Transmit buffer empty flag
mbed_official 376:cb4d9db17537 376 * @arg SPI_FLAG_CRCERR: CRC error flag
mbed_official 376:cb4d9db17537 377 * @arg SPI_FLAG_MODF: Mode fault flag
mbed_official 376:cb4d9db17537 378 * @arg SPI_FLAG_OVR: Overrun flag
mbed_official 376:cb4d9db17537 379 * @arg SPI_FLAG_BSY: Busy flag
mbed_official 376:cb4d9db17537 380 * @arg SPI_FLAG_FRE: Frame format error flag
mbed_official 376:cb4d9db17537 381 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 376:cb4d9db17537 382 */
mbed_official 376:cb4d9db17537 383 #define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
mbed_official 376:cb4d9db17537 384
mbed_official 376:cb4d9db17537 385 /** @brief Clear the SPI CRCERR pending flag.
mbed_official 376:cb4d9db17537 386 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 387 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 388 * @retval None
mbed_official 376:cb4d9db17537 389 */
mbed_official 489:119543c9f674 390 #define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR = ~(SPI_FLAG_CRCERR))
mbed_official 376:cb4d9db17537 391
mbed_official 376:cb4d9db17537 392 /** @brief Clear the SPI MODF pending flag.
mbed_official 376:cb4d9db17537 393 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 394 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 395 * @retval None
mbed_official 489:119543c9f674 396 */
mbed_official 489:119543c9f674 397 #define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__) \
mbed_official 489:119543c9f674 398 do{ \
mbed_official 489:119543c9f674 399 __IO uint32_t tmpreg; \
mbed_official 489:119543c9f674 400 tmpreg = (__HANDLE__)->Instance->SR; \
mbed_official 489:119543c9f674 401 (__HANDLE__)->Instance->CR1 &= (~SPI_CR1_SPE); \
mbed_official 489:119543c9f674 402 UNUSED(tmpreg); \
mbed_official 489:119543c9f674 403 } while(0)
mbed_official 376:cb4d9db17537 404
mbed_official 376:cb4d9db17537 405 /** @brief Clear the SPI OVR pending flag.
mbed_official 376:cb4d9db17537 406 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 407 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 376:cb4d9db17537 408 * @retval None
mbed_official 376:cb4d9db17537 409 */
mbed_official 489:119543c9f674 410 #define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__) \
mbed_official 489:119543c9f674 411 do{ \
mbed_official 489:119543c9f674 412 __IO uint32_t tmpreg; \
mbed_official 489:119543c9f674 413 tmpreg = (__HANDLE__)->Instance->DR; \
mbed_official 489:119543c9f674 414 tmpreg = (__HANDLE__)->Instance->SR; \
mbed_official 489:119543c9f674 415 UNUSED(tmpreg); \
mbed_official 489:119543c9f674 416 } while(0)
mbed_official 376:cb4d9db17537 417
mbed_official 376:cb4d9db17537 418 /** @brief Clear the SPI FRE pending flag.
mbed_official 376:cb4d9db17537 419 * @param __HANDLE__: specifies the SPI handle.
mbed_official 489:119543c9f674 420 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 421 * @retval None
mbed_official 489:119543c9f674 422 */
mbed_official 489:119543c9f674 423 #define __HAL_SPI_CLEAR_FREFLAG(__HANDLE__) \
mbed_official 489:119543c9f674 424 do{ \
mbed_official 489:119543c9f674 425 __IO uint32_t tmpreg; \
mbed_official 489:119543c9f674 426 tmpreg = (__HANDLE__)->Instance->SR; \
mbed_official 489:119543c9f674 427 UNUSED(tmpreg); \
mbed_official 489:119543c9f674 428 } while(0)
mbed_official 489:119543c9f674 429
mbed_official 489:119543c9f674 430 /** @brief Enables the SPI.
mbed_official 489:119543c9f674 431 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 489:119543c9f674 432 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 433 * @retval None
mbed_official 489:119543c9f674 434 */
mbed_official 489:119543c9f674 435 #define __HAL_SPI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
mbed_official 489:119543c9f674 436
mbed_official 489:119543c9f674 437 /** @brief Disables the SPI.
mbed_official 489:119543c9f674 438 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 489:119543c9f674 439 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 440 * @retval None
mbed_official 489:119543c9f674 441 */
mbed_official 489:119543c9f674 442 #define __HAL_SPI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
mbed_official 489:119543c9f674 443 /**
mbed_official 489:119543c9f674 444 * @}
mbed_official 489:119543c9f674 445 */
mbed_official 489:119543c9f674 446
mbed_official 489:119543c9f674 447
mbed_official 489:119543c9f674 448 /* Private macros -----------------------------------------------------------*/
mbed_official 489:119543c9f674 449 /** @defgroup SPI_Private_Macros SPI Private Macros
mbed_official 489:119543c9f674 450 * @{
mbed_official 489:119543c9f674 451 */
mbed_official 489:119543c9f674 452
mbed_official 489:119543c9f674 453 /** @brief Checks if SPI Mode parameter is in allowed range.
mbed_official 489:119543c9f674 454 * @param __MODE__: specifies the SPI Mode.
mbed_official 489:119543c9f674 455 * This parameter can be a value of @ref SPI_mode
mbed_official 489:119543c9f674 456 * @retval None
mbed_official 489:119543c9f674 457 */
mbed_official 489:119543c9f674 458 #define IS_SPI_MODE(__MODE__) (((__MODE__) == SPI_MODE_SLAVE) || ((__MODE__) == SPI_MODE_MASTER))
mbed_official 489:119543c9f674 459
mbed_official 489:119543c9f674 460 /** @brief Checks if SPI Direction Mode parameter is in allowed range.
mbed_official 489:119543c9f674 461 * @param __MODE__: specifies the SPI Direction Mode.
mbed_official 489:119543c9f674 462 * This parameter can be a value of @ref SPI_Direction_mode
mbed_official 489:119543c9f674 463 * @retval None
mbed_official 489:119543c9f674 464 */
mbed_official 489:119543c9f674 465 #define IS_SPI_DIRECTION_MODE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
mbed_official 489:119543c9f674 466 ((__MODE__) == SPI_DIRECTION_2LINES_RXONLY) || \
mbed_official 489:119543c9f674 467 ((__MODE__) == SPI_DIRECTION_1LINE))
mbed_official 489:119543c9f674 468
mbed_official 489:119543c9f674 469 /** @brief Checks if SPI Direction Mode parameter is 1 or 2 lines.
mbed_official 489:119543c9f674 470 * @param __MODE__: specifies the SPI Direction Mode.
mbed_official 489:119543c9f674 471 * @retval None
mbed_official 489:119543c9f674 472 */
mbed_official 489:119543c9f674 473 #define IS_SPI_DIRECTION_2LINES_OR_1LINE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
mbed_official 489:119543c9f674 474 ((__MODE__) == SPI_DIRECTION_1LINE))
mbed_official 489:119543c9f674 475
mbed_official 489:119543c9f674 476 /** @brief Checks if SPI Direction Mode parameter is 2 lines.
mbed_official 489:119543c9f674 477 * @param __MODE__: specifies the SPI Direction Mode.
mbed_official 489:119543c9f674 478 * @retval None
mbed_official 489:119543c9f674 479 */
mbed_official 489:119543c9f674 480 #define IS_SPI_DIRECTION_2LINES(__MODE__) ((__MODE__) == SPI_DIRECTION_2LINES)
mbed_official 489:119543c9f674 481
mbed_official 489:119543c9f674 482 /** @brief Checks if SPI Data Size parameter is in allowed range.
mbed_official 489:119543c9f674 483 * @param __DATASIZE__: specifies the SPI Data Size.
mbed_official 489:119543c9f674 484 * This parameter can be a value of @ref SPI_data_size
mbed_official 489:119543c9f674 485 * @retval None
mbed_official 489:119543c9f674 486 */
mbed_official 489:119543c9f674 487 #define IS_SPI_DATASIZE(__DATASIZE__) (((__DATASIZE__) == SPI_DATASIZE_16BIT) || \
mbed_official 489:119543c9f674 488 ((__DATASIZE__) == SPI_DATASIZE_8BIT))
mbed_official 489:119543c9f674 489
mbed_official 489:119543c9f674 490 /** @brief Checks if SPI Serial clock steady state parameter is in allowed range.
mbed_official 489:119543c9f674 491 * @param __CPOL__: specifies the SPI serial clock steady state.
mbed_official 489:119543c9f674 492 * This parameter can be a value of @ref SPI_Clock_Polarity
mbed_official 489:119543c9f674 493 * @retval None
mbed_official 489:119543c9f674 494 */
mbed_official 489:119543c9f674 495 #define IS_SPI_CPOL(__CPOL__) (((__CPOL__) == SPI_POLARITY_LOW) || \
mbed_official 489:119543c9f674 496 ((__CPOL__) == SPI_POLARITY_HIGH))
mbed_official 489:119543c9f674 497
mbed_official 489:119543c9f674 498 /** @brief Checks if SPI Clock Phase parameter is in allowed range.
mbed_official 489:119543c9f674 499 * @param __CPHA__: specifies the SPI Clock Phase.
mbed_official 489:119543c9f674 500 * This parameter can be a value of @ref SPI_Clock_Phase
mbed_official 376:cb4d9db17537 501 * @retval None
mbed_official 376:cb4d9db17537 502 */
mbed_official 489:119543c9f674 503 #define IS_SPI_CPHA(__CPHA__) (((__CPHA__) == SPI_PHASE_1EDGE) || \
mbed_official 489:119543c9f674 504 ((__CPHA__) == SPI_PHASE_2EDGE))
mbed_official 489:119543c9f674 505
mbed_official 489:119543c9f674 506 /** @brief Checks if SPI Slave select parameter is in allowed range.
mbed_official 489:119543c9f674 507 * @param __NSS__: specifies the SPI Slave Slelect management parameter.
mbed_official 489:119543c9f674 508 * This parameter can be a value of @ref SPI_Slave_Select_management
mbed_official 489:119543c9f674 509 * @retval None
mbed_official 489:119543c9f674 510 */
mbed_official 489:119543c9f674 511 #define IS_SPI_NSS(__NSS__) (((__NSS__) == SPI_NSS_SOFT) || \
mbed_official 489:119543c9f674 512 ((__NSS__) == SPI_NSS_HARD_INPUT) || \
mbed_official 489:119543c9f674 513 ((__NSS__) == SPI_NSS_HARD_OUTPUT))
mbed_official 376:cb4d9db17537 514
mbed_official 489:119543c9f674 515 /** @brief Checks if SPI Baudrate prescaler parameter is in allowed range.
mbed_official 489:119543c9f674 516 * @param __PRESCALER__: specifies the SPI Baudrate prescaler.
mbed_official 489:119543c9f674 517 * This parameter can be a value of @ref SPI_BaudRate_Prescaler
mbed_official 489:119543c9f674 518 * @retval None
mbed_official 489:119543c9f674 519 */
mbed_official 489:119543c9f674 520 #define IS_SPI_BAUDRATE_PRESCALER(__PRESCALER__) (((__PRESCALER__) == SPI_BAUDRATEPRESCALER_2) || \
mbed_official 489:119543c9f674 521 ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_4) || \
mbed_official 489:119543c9f674 522 ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_8) || \
mbed_official 489:119543c9f674 523 ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_16) || \
mbed_official 489:119543c9f674 524 ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_32) || \
mbed_official 489:119543c9f674 525 ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_64) || \
mbed_official 489:119543c9f674 526 ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_128) || \
mbed_official 489:119543c9f674 527 ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_256))
mbed_official 376:cb4d9db17537 528
mbed_official 489:119543c9f674 529 /** @brief Checks if SPI MSB LSB transmission parameter is in allowed range.
mbed_official 489:119543c9f674 530 * @param __BIT__: specifies the SPI MSB LSB transmission (whether data transfer starts from MSB or LSB bit).
mbed_official 489:119543c9f674 531 * This parameter can be a value of @ref SPI_MSB_LSB_transmission
mbed_official 489:119543c9f674 532 * @retval None
mbed_official 489:119543c9f674 533 */
mbed_official 489:119543c9f674 534 #define IS_SPI_FIRST_BIT(__BIT__) (((__BIT__) == SPI_FIRSTBIT_MSB) || \
mbed_official 489:119543c9f674 535 ((__BIT__) == SPI_FIRSTBIT_LSB))
mbed_official 376:cb4d9db17537 536
mbed_official 489:119543c9f674 537 /** @brief Checks if SPI TI mode parameter is in allowed range.
mbed_official 489:119543c9f674 538 * @param __MODE__: specifies the SPI TI mode.
mbed_official 489:119543c9f674 539 * This parameter can be a value of @ref SPI_TI_mode
mbed_official 489:119543c9f674 540 * @retval None
mbed_official 489:119543c9f674 541 */
mbed_official 489:119543c9f674 542 #define IS_SPI_TIMODE(__MODE__) (((__MODE__) == SPI_TIMODE_DISABLE) || \
mbed_official 489:119543c9f674 543 ((__MODE__) == SPI_TIMODE_ENABLE))
mbed_official 489:119543c9f674 544 /** @brief Checks if SPI CRC calculation enabled state is in allowed range.
mbed_official 489:119543c9f674 545 * @param __CALCULATION__: specifies the SPI CRC calculation enable state.
mbed_official 489:119543c9f674 546 * This parameter can be a value of @ref SPI_CRC_Calculation
mbed_official 489:119543c9f674 547 * @retval None
mbed_official 489:119543c9f674 548 */
mbed_official 489:119543c9f674 549 #define IS_SPI_CRC_CALCULATION(__CALCULATION__) (((__CALCULATION__) == SPI_CRCCALCULATION_DISABLE) || \
mbed_official 489:119543c9f674 550 ((__CALCULATION__) == SPI_CRCCALCULATION_ENABLE))
mbed_official 376:cb4d9db17537 551
mbed_official 489:119543c9f674 552 /** @brief Checks if SPI polynomial value to be used for the CRC calculation, is in allowed range.
mbed_official 489:119543c9f674 553 * @param __POLYNOMIAL__: specifies the SPI polynomial value to be used for the CRC calculation.
mbed_official 489:119543c9f674 554 * This parameter must be a number between Min_Data = 0 and Max_Data = 65535
mbed_official 489:119543c9f674 555 * @retval None
mbed_official 489:119543c9f674 556 */
mbed_official 489:119543c9f674 557 #define IS_SPI_CRC_POLYNOMIAL(__POLYNOMIAL__) (((__POLYNOMIAL__) >= 0x1) && ((__POLYNOMIAL__) <= 0xFFFF))
mbed_official 489:119543c9f674 558 /** @brief Sets the SPI transmit-only mode.
mbed_official 489:119543c9f674 559 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 489:119543c9f674 560 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 561 * @retval None
mbed_official 489:119543c9f674 562 */
mbed_official 489:119543c9f674 563 #define SPI_1LINE_TX(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
mbed_official 376:cb4d9db17537 564
mbed_official 489:119543c9f674 565 /** @brief Sets the SPI receive-only mode.
mbed_official 489:119543c9f674 566 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 489:119543c9f674 567 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 568 * @retval None
mbed_official 489:119543c9f674 569 */
mbed_official 489:119543c9f674 570 #define SPI_1LINE_RX(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
mbed_official 489:119543c9f674 571
mbed_official 489:119543c9f674 572 /** @brief Resets the CRC calculation of the SPI.
mbed_official 489:119543c9f674 573 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 489:119543c9f674 574 * This parameter can be SPIx where x: 1 or 2 to select the SPI peripheral.
mbed_official 489:119543c9f674 575 * @retval None
mbed_official 489:119543c9f674 576 */
mbed_official 489:119543c9f674 577 #define SPI_RESET_CRC(__HANDLE__) do{CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);\
mbed_official 489:119543c9f674 578 SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);}while(0)
mbed_official 489:119543c9f674 579 /**
mbed_official 489:119543c9f674 580 * @}
mbed_official 489:119543c9f674 581 */
mbed_official 376:cb4d9db17537 582
mbed_official 376:cb4d9db17537 583 /* Exported functions --------------------------------------------------------*/
mbed_official 489:119543c9f674 584 /** @addtogroup SPI_Exported_Functions
mbed_official 489:119543c9f674 585 * @{
mbed_official 489:119543c9f674 586 */
mbed_official 376:cb4d9db17537 587
mbed_official 376:cb4d9db17537 588 /* Initialization/de-initialization functions **********************************/
mbed_official 489:119543c9f674 589 /** @addtogroup SPI_Exported_Functions_Group1
mbed_official 489:119543c9f674 590 * @{
mbed_official 489:119543c9f674 591 */
mbed_official 376:cb4d9db17537 592 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 593 HAL_StatusTypeDef HAL_SPI_DeInit (SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 594 void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 595 void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi);
mbed_official 489:119543c9f674 596 /**
mbed_official 489:119543c9f674 597 * @}
mbed_official 489:119543c9f674 598 */
mbed_official 376:cb4d9db17537 599
mbed_official 376:cb4d9db17537 600 /* I/O operation functions *****************************************************/
mbed_official 489:119543c9f674 601 /** @addtogroup SPI_Exported_Functions_Group2
mbed_official 489:119543c9f674 602 * @{
mbed_official 489:119543c9f674 603 */
mbed_official 376:cb4d9db17537 604 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 376:cb4d9db17537 605 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 376:cb4d9db17537 606 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
mbed_official 376:cb4d9db17537 607 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 608 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 609 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
mbed_official 376:cb4d9db17537 610 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 611 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 376:cb4d9db17537 612 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
mbed_official 376:cb4d9db17537 613 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 614 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 615 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 616
mbed_official 376:cb4d9db17537 617 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 618 void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 619 void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 620 void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 621 void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 622 void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 623 void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 376:cb4d9db17537 624 void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 489:119543c9f674 625 /**
mbed_official 489:119543c9f674 626 * @}
mbed_official 489:119543c9f674 627 */
mbed_official 489:119543c9f674 628
mbed_official 376:cb4d9db17537 629
mbed_official 376:cb4d9db17537 630 /* Peripheral State and Control functions **************************************/
mbed_official 489:119543c9f674 631 /** @addtogroup SPI_Exported_Functions_Group3
mbed_official 489:119543c9f674 632 * @{
mbed_official 489:119543c9f674 633 */
mbed_official 376:cb4d9db17537 634 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi);
mbed_official 489:119543c9f674 635 uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi);
mbed_official 489:119543c9f674 636
mbed_official 489:119543c9f674 637 /**
mbed_official 489:119543c9f674 638 * @}
mbed_official 489:119543c9f674 639 */
mbed_official 489:119543c9f674 640
mbed_official 489:119543c9f674 641 /**
mbed_official 489:119543c9f674 642 * @}
mbed_official 489:119543c9f674 643 */
mbed_official 489:119543c9f674 644
mbed_official 376:cb4d9db17537 645
mbed_official 376:cb4d9db17537 646 /**
mbed_official 376:cb4d9db17537 647 * @}
mbed_official 376:cb4d9db17537 648 */
mbed_official 376:cb4d9db17537 649
mbed_official 376:cb4d9db17537 650 /**
mbed_official 376:cb4d9db17537 651 * @}
mbed_official 376:cb4d9db17537 652 */
mbed_official 376:cb4d9db17537 653
mbed_official 376:cb4d9db17537 654 #ifdef __cplusplus
mbed_official 376:cb4d9db17537 655 }
mbed_official 376:cb4d9db17537 656 #endif
mbed_official 376:cb4d9db17537 657
mbed_official 376:cb4d9db17537 658 #endif /* __STM32L0xx_HAL_SPI_H */
mbed_official 376:cb4d9db17537 659
mbed_official 376:cb4d9db17537 660 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 489:119543c9f674 661