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 Sep 28 14:00:11 2015 +0100
Revision:
632:7687fb9c4f91
Parent:
385:be64abf45658
Child:
634:ac7d6880524d
Synchronized with git revision f7ce4ed029cc611121464252ff28d5e8beb895b0

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

NUCLEO_F303K8 - add support of the STM32F303K8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 330:c80ac197fa6a 1 /**
mbed_official 330:c80ac197fa6a 2 ******************************************************************************
mbed_official 330:c80ac197fa6a 3 * @file stm32f3xx_hal_spi.h
mbed_official 330:c80ac197fa6a 4 * @author MCD Application Team
mbed_official 632:7687fb9c4f91 5 * @version V1.1.1
mbed_official 632:7687fb9c4f91 6 * @date 19-June-2015
mbed_official 330:c80ac197fa6a 7 * @brief Header file of SPI HAL module.
mbed_official 330:c80ac197fa6a 8 ******************************************************************************
mbed_official 330:c80ac197fa6a 9 * @attention
mbed_official 330:c80ac197fa6a 10 *
mbed_official 632:7687fb9c4f91 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 330:c80ac197fa6a 12 *
mbed_official 330:c80ac197fa6a 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 330:c80ac197fa6a 14 * are permitted provided that the following conditions are met:
mbed_official 330:c80ac197fa6a 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 330:c80ac197fa6a 16 * this list of conditions and the following disclaimer.
mbed_official 330:c80ac197fa6a 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 330:c80ac197fa6a 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 330:c80ac197fa6a 19 * and/or other materials provided with the distribution.
mbed_official 330:c80ac197fa6a 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 330:c80ac197fa6a 21 * may be used to endorse or promote products derived from this software
mbed_official 330:c80ac197fa6a 22 * without specific prior written permission.
mbed_official 330:c80ac197fa6a 23 *
mbed_official 330:c80ac197fa6a 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 330:c80ac197fa6a 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 330:c80ac197fa6a 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 330:c80ac197fa6a 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 330:c80ac197fa6a 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 330:c80ac197fa6a 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 330:c80ac197fa6a 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 330:c80ac197fa6a 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 330:c80ac197fa6a 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 330:c80ac197fa6a 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 330:c80ac197fa6a 34 *
mbed_official 330:c80ac197fa6a 35 ******************************************************************************
mbed_official 330:c80ac197fa6a 36 */
mbed_official 330:c80ac197fa6a 37
mbed_official 330:c80ac197fa6a 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 330:c80ac197fa6a 39 #ifndef __STM32F3xx_HAL_SPI_H
mbed_official 330:c80ac197fa6a 40 #define __STM32F3xx_HAL_SPI_H
mbed_official 330:c80ac197fa6a 41
mbed_official 330:c80ac197fa6a 42 #ifdef __cplusplus
mbed_official 330:c80ac197fa6a 43 extern "C" {
mbed_official 330:c80ac197fa6a 44 #endif
mbed_official 330:c80ac197fa6a 45
mbed_official 330:c80ac197fa6a 46 /* Includes ------------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 47 #include "stm32f3xx_hal_def.h"
mbed_official 330:c80ac197fa6a 48
mbed_official 330:c80ac197fa6a 49 /** @addtogroup STM32F3xx_HAL_Driver
mbed_official 330:c80ac197fa6a 50 * @{
mbed_official 330:c80ac197fa6a 51 */
mbed_official 330:c80ac197fa6a 52
mbed_official 330:c80ac197fa6a 53 /** @addtogroup SPI
mbed_official 330:c80ac197fa6a 54 * @{
mbed_official 330:c80ac197fa6a 55 */
mbed_official 330:c80ac197fa6a 56
mbed_official 330:c80ac197fa6a 57 /* Exported types ------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 58 /** @defgroup SPI_Exported_Types SPI Exported Types
mbed_official 330:c80ac197fa6a 59 * @{
mbed_official 330:c80ac197fa6a 60 */
mbed_official 330:c80ac197fa6a 61
mbed_official 330:c80ac197fa6a 62 /**
mbed_official 330:c80ac197fa6a 63 * @brief SPI Configuration Structure definition
mbed_official 330:c80ac197fa6a 64 */
mbed_official 330:c80ac197fa6a 65 typedef struct
mbed_official 330:c80ac197fa6a 66 {
mbed_official 330:c80ac197fa6a 67 uint32_t Mode; /*!< Specifies the SPI operating mode.
mbed_official 330:c80ac197fa6a 68 This parameter can be a value of @ref SPI_mode */
mbed_official 330:c80ac197fa6a 69
mbed_official 330:c80ac197fa6a 70 uint32_t Direction; /*!< Specifies the SPI bidirectional mode state.
mbed_official 330:c80ac197fa6a 71 This parameter can be a value of @ref SPI_Direction */
mbed_official 330:c80ac197fa6a 72
mbed_official 330:c80ac197fa6a 73 uint32_t DataSize; /*!< Specifies the SPI data size.
mbed_official 330:c80ac197fa6a 74 This parameter can be a value of @ref SPI_data_size */
mbed_official 330:c80ac197fa6a 75
mbed_official 330:c80ac197fa6a 76 uint32_t CLKPolarity; /*!< Specifies the serial clock steady state.
mbed_official 330:c80ac197fa6a 77 This parameter can be a value of @ref SPI_Clock_Polarity */
mbed_official 330:c80ac197fa6a 78
mbed_official 330:c80ac197fa6a 79 uint32_t CLKPhase; /*!< Specifies the clock active edge for the bit capture.
mbed_official 330:c80ac197fa6a 80 This parameter can be a value of @ref SPI_Clock_Phase */
mbed_official 330:c80ac197fa6a 81
mbed_official 330:c80ac197fa6a 82 uint32_t NSS; /*!< Specifies whether the NSS signal is managed by
mbed_official 330:c80ac197fa6a 83 hardware (NSS pin) or by software using the SSI bit.
mbed_official 330:c80ac197fa6a 84 This parameter can be a value of @ref SPI_Slave_Select_management */
mbed_official 330:c80ac197fa6a 85
mbed_official 330:c80ac197fa6a 86 uint32_t BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be
mbed_official 330:c80ac197fa6a 87 used to configure the transmit and receive SCK clock.
mbed_official 330:c80ac197fa6a 88 This parameter can be a value of @ref SPI_BaudRate_Prescaler
mbed_official 330:c80ac197fa6a 89 @note The communication clock is derived from the master
mbed_official 330:c80ac197fa6a 90 clock. The slave clock does not need to be set. */
mbed_official 330:c80ac197fa6a 91
mbed_official 330:c80ac197fa6a 92 uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
mbed_official 330:c80ac197fa6a 93 This parameter can be a value of @ref SPI_MSB_LSB_transmission */
mbed_official 330:c80ac197fa6a 94
mbed_official 330:c80ac197fa6a 95 uint32_t TIMode; /*!< Specifies if the TI mode is enabled or not .
mbed_official 330:c80ac197fa6a 96 This parameter can be a value of @ref SPI_TI_mode */
mbed_official 330:c80ac197fa6a 97
mbed_official 330:c80ac197fa6a 98 uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not.
mbed_official 330:c80ac197fa6a 99 This parameter can be a value of @ref SPI_CRC_Calculation */
mbed_official 330:c80ac197fa6a 100
mbed_official 330:c80ac197fa6a 101 uint32_t CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation.
mbed_official 330:c80ac197fa6a 102 This parameter must be a number between Min_Data = 0 and Max_Data = 65535 */
mbed_official 330:c80ac197fa6a 103
mbed_official 330:c80ac197fa6a 104 uint32_t CRCLength; /*!< Specifies the CRC Length used for the CRC calculation.
mbed_official 330:c80ac197fa6a 105 CRC Length is only used with Data8 and Data16, not other data size
mbed_official 330:c80ac197fa6a 106 This parameter must 0 or 1 or 2*/
mbed_official 330:c80ac197fa6a 107
mbed_official 330:c80ac197fa6a 108 uint32_t NSSPMode; /*!< Specifies whether the NSSP signal is enabled or not .
mbed_official 330:c80ac197fa6a 109 This mode is activated by the NSSP bit in the SPIx_CR2 register and
mbed_official 330:c80ac197fa6a 110 it takes effect only if the SPI interface is configured as Motorola SPI
mbed_official 330:c80ac197fa6a 111 master (FRF=0) with capture on the first edge (SPIx_CR1 CPHA = 0,
mbed_official 330:c80ac197fa6a 112 CPOL setting is ignored).. */
mbed_official 330:c80ac197fa6a 113 } SPI_InitTypeDef;
mbed_official 330:c80ac197fa6a 114
mbed_official 330:c80ac197fa6a 115 /**
mbed_official 330:c80ac197fa6a 116 * @brief HAL State structures definition
mbed_official 330:c80ac197fa6a 117 */
mbed_official 330:c80ac197fa6a 118 typedef enum
mbed_official 330:c80ac197fa6a 119 {
mbed_official 330:c80ac197fa6a 120 HAL_SPI_STATE_RESET = 0x00, /*!< Peripheral not Initialized */
mbed_official 330:c80ac197fa6a 121 HAL_SPI_STATE_READY = 0x01, /*!< Peripheral Initialized and ready for use */
mbed_official 330:c80ac197fa6a 122 HAL_SPI_STATE_BUSY = 0x02, /*!< an internal process is ongoing */
mbed_official 330:c80ac197fa6a 123 HAL_SPI_STATE_BUSY_TX = 0x03, /*!< Data Transmission process is ongoing */
mbed_official 330:c80ac197fa6a 124 HAL_SPI_STATE_BUSY_RX = 0x04, /*!< Data Reception process is ongoing */
mbed_official 330:c80ac197fa6a 125 HAL_SPI_STATE_BUSY_TX_RX = 0x05, /*!< Data Transmission and Reception process is ongoing */
mbed_official 330:c80ac197fa6a 126 HAL_SPI_STATE_TIMEOUT = 0x06, /*!< Timeout state */
mbed_official 330:c80ac197fa6a 127 HAL_SPI_STATE_ERROR = 0x07 /*!< Data Transmission and Reception process is ongoing */
mbed_official 330:c80ac197fa6a 128
mbed_official 330:c80ac197fa6a 129 }HAL_SPI_StateTypeDef;
mbed_official 330:c80ac197fa6a 130
mbed_official 330:c80ac197fa6a 131 /**
mbed_official 330:c80ac197fa6a 132 * @brief HAL SPI Error Code structure definition
mbed_official 330:c80ac197fa6a 133 */
mbed_official 330:c80ac197fa6a 134 typedef enum
mbed_official 330:c80ac197fa6a 135 {
mbed_official 330:c80ac197fa6a 136 HAL_SPI_ERROR_NONE = 0x00, /*!< No error */
mbed_official 330:c80ac197fa6a 137 HAL_SPI_ERROR_MODF = 0x01, /*!< MODF error */
mbed_official 330:c80ac197fa6a 138 HAL_SPI_ERROR_CRC = 0x02, /*!< CRC error */
mbed_official 330:c80ac197fa6a 139 HAL_SPI_ERROR_OVR = 0x04, /*!< OVR error */
mbed_official 330:c80ac197fa6a 140 HAL_SPI_ERROR_FRE = 0x08, /*!< FRE error */
mbed_official 330:c80ac197fa6a 141 HAL_SPI_ERROR_DMA = 0x10, /*!< DMA transfer error */
mbed_official 330:c80ac197fa6a 142 HAL_SPI_ERROR_FLAG = 0x20, /*!< Error on BSY/TXE/FTLVL/FRLVL Flag */
mbed_official 330:c80ac197fa6a 143 HAL_SPI_ERROR_UNKNOW = 0x40, /*!< Unknow Error error */
mbed_official 330:c80ac197fa6a 144 }HAL_SPI_ErrorTypeDef;
mbed_official 330:c80ac197fa6a 145
mbed_official 330:c80ac197fa6a 146 /**
mbed_official 330:c80ac197fa6a 147 * @brief SPI handle Structure definition
mbed_official 330:c80ac197fa6a 148 */
mbed_official 330:c80ac197fa6a 149 typedef struct __SPI_HandleTypeDef
mbed_official 330:c80ac197fa6a 150 {
mbed_official 330:c80ac197fa6a 151 SPI_TypeDef *Instance; /* SPI registers base address */
mbed_official 330:c80ac197fa6a 152
mbed_official 330:c80ac197fa6a 153 SPI_InitTypeDef Init; /* SPI communication parameters */
mbed_official 330:c80ac197fa6a 154
mbed_official 330:c80ac197fa6a 155 uint8_t *pTxBuffPtr; /* Pointer to SPI Tx transfer Buffer */
mbed_official 330:c80ac197fa6a 156
mbed_official 330:c80ac197fa6a 157 uint16_t TxXferSize; /* SPI Tx Transfer size */
mbed_official 330:c80ac197fa6a 158
mbed_official 330:c80ac197fa6a 159 uint16_t TxXferCount; /* SPI Tx Transfer Counter */
mbed_official 330:c80ac197fa6a 160
mbed_official 330:c80ac197fa6a 161 uint8_t *pRxBuffPtr; /* Pointer to SPI Rx transfer Buffer */
mbed_official 330:c80ac197fa6a 162
mbed_official 330:c80ac197fa6a 163 uint16_t RxXferSize; /* SPI Rx Transfer size */
mbed_official 330:c80ac197fa6a 164
mbed_official 330:c80ac197fa6a 165 uint16_t RxXferCount; /* SPI Rx Transfer Counter */
mbed_official 330:c80ac197fa6a 166
mbed_official 330:c80ac197fa6a 167 uint32_t CRCSize; /* SPI CRC size used for the transfer */
mbed_official 330:c80ac197fa6a 168
mbed_official 330:c80ac197fa6a 169 void (*RxISR)(struct __SPI_HandleTypeDef *hspi); /* function pointer on Rx IRQ handler */
mbed_official 330:c80ac197fa6a 170
mbed_official 330:c80ac197fa6a 171 void (*TxISR)(struct __SPI_HandleTypeDef *hspi); /* function pointer on Tx IRQ handler */
mbed_official 330:c80ac197fa6a 172
mbed_official 330:c80ac197fa6a 173 DMA_HandleTypeDef *hdmatx; /* SPI Tx DMA Handle parameters */
mbed_official 330:c80ac197fa6a 174
mbed_official 330:c80ac197fa6a 175 DMA_HandleTypeDef *hdmarx; /* SPI Rx DMA Handle parameters */
mbed_official 330:c80ac197fa6a 176
mbed_official 330:c80ac197fa6a 177 HAL_LockTypeDef Lock; /* Locking object */
mbed_official 330:c80ac197fa6a 178
mbed_official 330:c80ac197fa6a 179 HAL_SPI_StateTypeDef State; /* SPI communication state */
mbed_official 330:c80ac197fa6a 180
mbed_official 330:c80ac197fa6a 181 HAL_SPI_ErrorTypeDef ErrorCode; /* SPI Error code */
mbed_official 330:c80ac197fa6a 182
mbed_official 330:c80ac197fa6a 183 }SPI_HandleTypeDef;
mbed_official 330:c80ac197fa6a 184
mbed_official 330:c80ac197fa6a 185 /**
mbed_official 330:c80ac197fa6a 186 * @}
mbed_official 330:c80ac197fa6a 187 */
mbed_official 330:c80ac197fa6a 188
mbed_official 330:c80ac197fa6a 189 /* Exported constants --------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 190
mbed_official 330:c80ac197fa6a 191 /** @defgroup SPI_Exported_Constants SPI Exported Constants
mbed_official 330:c80ac197fa6a 192 * @{
mbed_official 330:c80ac197fa6a 193 */
mbed_official 330:c80ac197fa6a 194
mbed_official 330:c80ac197fa6a 195 /** @defgroup SPI_mode SPI mode
mbed_official 330:c80ac197fa6a 196 * @{
mbed_official 330:c80ac197fa6a 197 */
mbed_official 330:c80ac197fa6a 198
mbed_official 330:c80ac197fa6a 199 #define SPI_MODE_SLAVE ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 200 #define SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI)
mbed_official 330:c80ac197fa6a 201 #define IS_SPI_MODE(MODE) (((MODE) == SPI_MODE_SLAVE) || \
mbed_official 330:c80ac197fa6a 202 ((MODE) == SPI_MODE_MASTER))
mbed_official 330:c80ac197fa6a 203 /**
mbed_official 330:c80ac197fa6a 204 * @}
mbed_official 330:c80ac197fa6a 205 */
mbed_official 330:c80ac197fa6a 206
mbed_official 330:c80ac197fa6a 207 /** @defgroup SPI_Direction SPI Direction
mbed_official 330:c80ac197fa6a 208 * @{
mbed_official 330:c80ac197fa6a 209 */
mbed_official 330:c80ac197fa6a 210 #define SPI_DIRECTION_2LINES ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 211 #define SPI_DIRECTION_2LINES_RXONLY SPI_CR1_RXONLY
mbed_official 330:c80ac197fa6a 212 #define SPI_DIRECTION_1LINE SPI_CR1_BIDIMODE
mbed_official 330:c80ac197fa6a 213
mbed_official 330:c80ac197fa6a 214 #define IS_SPI_DIRECTION(MODE) (((MODE) == SPI_DIRECTION_2LINES) || \
mbed_official 330:c80ac197fa6a 215 ((MODE) == SPI_DIRECTION_2LINES_RXONLY) ||\
mbed_official 330:c80ac197fa6a 216 ((MODE) == SPI_DIRECTION_1LINE))
mbed_official 330:c80ac197fa6a 217
mbed_official 330:c80ac197fa6a 218 #define IS_SPI_DIRECTION_2LINES(MODE) ((MODE) == SPI_DIRECTION_2LINES)
mbed_official 330:c80ac197fa6a 219
mbed_official 330:c80ac197fa6a 220 #define IS_SPI_DIRECTION_2LINES_OR_1LINE(MODE) (((MODE) == SPI_DIRECTION_2LINES)|| \
mbed_official 330:c80ac197fa6a 221 ((MODE) == SPI_DIRECTION_1LINE))
mbed_official 330:c80ac197fa6a 222 /**
mbed_official 330:c80ac197fa6a 223 * @}
mbed_official 330:c80ac197fa6a 224 */
mbed_official 330:c80ac197fa6a 225
mbed_official 330:c80ac197fa6a 226 /** @defgroup SPI_data_size SPI data size
mbed_official 330:c80ac197fa6a 227 * @{
mbed_official 330:c80ac197fa6a 228 */
mbed_official 330:c80ac197fa6a 229
mbed_official 330:c80ac197fa6a 230 #define SPI_DATASIZE_4BIT ((uint16_t)0x0300)
mbed_official 330:c80ac197fa6a 231 #define SPI_DATASIZE_5BIT ((uint16_t)0x0400)
mbed_official 330:c80ac197fa6a 232 #define SPI_DATASIZE_6BIT ((uint16_t)0x0500)
mbed_official 330:c80ac197fa6a 233 #define SPI_DATASIZE_7BIT ((uint16_t)0x0600)
mbed_official 330:c80ac197fa6a 234 #define SPI_DATASIZE_8BIT ((uint16_t)0x0700)
mbed_official 330:c80ac197fa6a 235 #define SPI_DATASIZE_9BIT ((uint16_t)0x0800)
mbed_official 330:c80ac197fa6a 236 #define SPI_DATASIZE_10BIT ((uint16_t)0x0900)
mbed_official 330:c80ac197fa6a 237 #define SPI_DATASIZE_11BIT ((uint16_t)0x0A00)
mbed_official 330:c80ac197fa6a 238 #define SPI_DATASIZE_12BIT ((uint16_t)0x0B00)
mbed_official 330:c80ac197fa6a 239 #define SPI_DATASIZE_13BIT ((uint16_t)0x0C00)
mbed_official 330:c80ac197fa6a 240 #define SPI_DATASIZE_14BIT ((uint16_t)0x0D00)
mbed_official 330:c80ac197fa6a 241 #define SPI_DATASIZE_15BIT ((uint16_t)0x0E00)
mbed_official 330:c80ac197fa6a 242 #define SPI_DATASIZE_16BIT ((uint16_t)0x0F00)
mbed_official 330:c80ac197fa6a 243 #define IS_SPI_DATASIZE(DATASIZE) (((DATASIZE) == SPI_DATASIZE_16BIT) || \
mbed_official 330:c80ac197fa6a 244 ((DATASIZE) == SPI_DATASIZE_15BIT) || \
mbed_official 330:c80ac197fa6a 245 ((DATASIZE) == SPI_DATASIZE_14BIT) || \
mbed_official 330:c80ac197fa6a 246 ((DATASIZE) == SPI_DATASIZE_13BIT) || \
mbed_official 330:c80ac197fa6a 247 ((DATASIZE) == SPI_DATASIZE_12BIT) || \
mbed_official 330:c80ac197fa6a 248 ((DATASIZE) == SPI_DATASIZE_11BIT) || \
mbed_official 330:c80ac197fa6a 249 ((DATASIZE) == SPI_DATASIZE_10BIT) || \
mbed_official 330:c80ac197fa6a 250 ((DATASIZE) == SPI_DATASIZE_9BIT) || \
mbed_official 330:c80ac197fa6a 251 ((DATASIZE) == SPI_DATASIZE_8BIT) || \
mbed_official 330:c80ac197fa6a 252 ((DATASIZE) == SPI_DATASIZE_7BIT) || \
mbed_official 330:c80ac197fa6a 253 ((DATASIZE) == SPI_DATASIZE_6BIT) || \
mbed_official 330:c80ac197fa6a 254 ((DATASIZE) == SPI_DATASIZE_5BIT) || \
mbed_official 330:c80ac197fa6a 255 ((DATASIZE) == SPI_DATASIZE_4BIT))
mbed_official 330:c80ac197fa6a 256
mbed_official 330:c80ac197fa6a 257 /**
mbed_official 330:c80ac197fa6a 258 * @}
mbed_official 330:c80ac197fa6a 259 */
mbed_official 330:c80ac197fa6a 260
mbed_official 330:c80ac197fa6a 261 /** @defgroup SPI_Clock_Polarity SPI Clock Polarity
mbed_official 330:c80ac197fa6a 262 * @{
mbed_official 330:c80ac197fa6a 263 */
mbed_official 330:c80ac197fa6a 264
mbed_official 330:c80ac197fa6a 265 #define SPI_POLARITY_LOW ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 266 #define SPI_POLARITY_HIGH SPI_CR1_CPOL
mbed_official 330:c80ac197fa6a 267 #define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_POLARITY_LOW) || \
mbed_official 330:c80ac197fa6a 268 ((CPOL) == SPI_POLARITY_HIGH))
mbed_official 330:c80ac197fa6a 269 /**
mbed_official 330:c80ac197fa6a 270 * @}
mbed_official 330:c80ac197fa6a 271 */
mbed_official 330:c80ac197fa6a 272
mbed_official 330:c80ac197fa6a 273 /** @defgroup SPI_Clock_Phase SPI Clock Phase
mbed_official 330:c80ac197fa6a 274 * @{
mbed_official 330:c80ac197fa6a 275 */
mbed_official 330:c80ac197fa6a 276
mbed_official 330:c80ac197fa6a 277 #define SPI_PHASE_1EDGE ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 278 #define SPI_PHASE_2EDGE SPI_CR1_CPHA
mbed_official 330:c80ac197fa6a 279 #define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_PHASE_1EDGE) || \
mbed_official 330:c80ac197fa6a 280 ((CPHA) == SPI_PHASE_2EDGE))
mbed_official 330:c80ac197fa6a 281 /**
mbed_official 330:c80ac197fa6a 282 * @}
mbed_official 330:c80ac197fa6a 283 */
mbed_official 330:c80ac197fa6a 284
mbed_official 330:c80ac197fa6a 285 /** @defgroup SPI_Slave_Select_management SPI Slave Select management
mbed_official 330:c80ac197fa6a 286 * @{
mbed_official 330:c80ac197fa6a 287 */
mbed_official 330:c80ac197fa6a 288
mbed_official 330:c80ac197fa6a 289 #define SPI_NSS_SOFT SPI_CR1_SSM
mbed_official 330:c80ac197fa6a 290 #define SPI_NSS_HARD_INPUT ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 291 #define SPI_NSS_HARD_OUTPUT ((uint32_t)0x00040000)
mbed_official 330:c80ac197fa6a 292 #define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_SOFT) || \
mbed_official 330:c80ac197fa6a 293 ((NSS) == SPI_NSS_HARD_INPUT) || \
mbed_official 330:c80ac197fa6a 294 ((NSS) == SPI_NSS_HARD_OUTPUT))
mbed_official 330:c80ac197fa6a 295
mbed_official 330:c80ac197fa6a 296 /**
mbed_official 330:c80ac197fa6a 297 * @}
mbed_official 330:c80ac197fa6a 298 */
mbed_official 330:c80ac197fa6a 299
mbed_official 330:c80ac197fa6a 300
mbed_official 330:c80ac197fa6a 301 /** @defgroup SPI_NSS SPI NSS pulse management
mbed_official 330:c80ac197fa6a 302 * @{
mbed_official 330:c80ac197fa6a 303 */
mbed_official 330:c80ac197fa6a 304 #define SPI_NSS_PULSE_ENABLED SPI_CR2_NSSP
mbed_official 330:c80ac197fa6a 305 #define SPI_NSS_PULSE_DISABLED ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 306
mbed_official 330:c80ac197fa6a 307 #define IS_SPI_NSSP(NSSP) (((NSSP) == SPI_NSS_PULSE_ENABLED) || \
mbed_official 330:c80ac197fa6a 308 ((NSSP) == SPI_NSS_PULSE_DISABLED))
mbed_official 330:c80ac197fa6a 309
mbed_official 330:c80ac197fa6a 310 /**
mbed_official 330:c80ac197fa6a 311 * @}
mbed_official 330:c80ac197fa6a 312 */
mbed_official 330:c80ac197fa6a 313
mbed_official 330:c80ac197fa6a 314
mbed_official 330:c80ac197fa6a 315 /** @defgroup SPI_BaudRate_Prescaler SPI BaudRate Prescaler
mbed_official 330:c80ac197fa6a 316 * @{
mbed_official 330:c80ac197fa6a 317 */
mbed_official 330:c80ac197fa6a 318
mbed_official 330:c80ac197fa6a 319 #define SPI_BAUDRATEPRESCALER_2 ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 320 #define SPI_BAUDRATEPRESCALER_4 ((uint32_t)0x00000008)
mbed_official 330:c80ac197fa6a 321 #define SPI_BAUDRATEPRESCALER_8 ((uint32_t)0x00000010)
mbed_official 330:c80ac197fa6a 322 #define SPI_BAUDRATEPRESCALER_16 ((uint32_t)0x00000018)
mbed_official 330:c80ac197fa6a 323 #define SPI_BAUDRATEPRESCALER_32 ((uint32_t)0x00000020)
mbed_official 330:c80ac197fa6a 324 #define SPI_BAUDRATEPRESCALER_64 ((uint32_t)0x00000028)
mbed_official 330:c80ac197fa6a 325 #define SPI_BAUDRATEPRESCALER_128 ((uint32_t)0x00000030)
mbed_official 330:c80ac197fa6a 326 #define SPI_BAUDRATEPRESCALER_256 ((uint32_t)0x00000038)
mbed_official 330:c80ac197fa6a 327 #define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BAUDRATEPRESCALER_2) || \
mbed_official 330:c80ac197fa6a 328 ((PRESCALER) == SPI_BAUDRATEPRESCALER_4) || \
mbed_official 330:c80ac197fa6a 329 ((PRESCALER) == SPI_BAUDRATEPRESCALER_8) || \
mbed_official 330:c80ac197fa6a 330 ((PRESCALER) == SPI_BAUDRATEPRESCALER_16) || \
mbed_official 330:c80ac197fa6a 331 ((PRESCALER) == SPI_BAUDRATEPRESCALER_32) || \
mbed_official 330:c80ac197fa6a 332 ((PRESCALER) == SPI_BAUDRATEPRESCALER_64) || \
mbed_official 330:c80ac197fa6a 333 ((PRESCALER) == SPI_BAUDRATEPRESCALER_128) || \
mbed_official 330:c80ac197fa6a 334 ((PRESCALER) == SPI_BAUDRATEPRESCALER_256))
mbed_official 330:c80ac197fa6a 335 /**
mbed_official 330:c80ac197fa6a 336 * @}
mbed_official 330:c80ac197fa6a 337 */
mbed_official 330:c80ac197fa6a 338
mbed_official 330:c80ac197fa6a 339 /** @defgroup SPI_MSB_LSB_transmission SPI MSB LSB transmission
mbed_official 330:c80ac197fa6a 340 * @{
mbed_official 330:c80ac197fa6a 341 */
mbed_official 330:c80ac197fa6a 342
mbed_official 330:c80ac197fa6a 343 #define SPI_FIRSTBIT_MSB ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 344 #define SPI_FIRSTBIT_LSB SPI_CR1_LSBFIRST
mbed_official 330:c80ac197fa6a 345 #define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FIRSTBIT_MSB) || \
mbed_official 330:c80ac197fa6a 346 ((BIT) == SPI_FIRSTBIT_LSB))
mbed_official 330:c80ac197fa6a 347 /**
mbed_official 330:c80ac197fa6a 348 * @}
mbed_official 330:c80ac197fa6a 349 */
mbed_official 330:c80ac197fa6a 350
mbed_official 330:c80ac197fa6a 351 /** @defgroup SPI_TI_mode SPI TI mode
mbed_official 330:c80ac197fa6a 352 * @{
mbed_official 330:c80ac197fa6a 353 */
mbed_official 330:c80ac197fa6a 354
mbed_official 330:c80ac197fa6a 355 #define SPI_TIMODE_DISABLED ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 356 #define SPI_TIMODE_ENABLED SPI_CR2_FRF
mbed_official 330:c80ac197fa6a 357 #define IS_SPI_TIMODE(MODE) (((MODE) == SPI_TIMODE_DISABLED) || \
mbed_official 330:c80ac197fa6a 358 ((MODE) == SPI_TIMODE_ENABLED))
mbed_official 330:c80ac197fa6a 359 /**
mbed_official 330:c80ac197fa6a 360 * @}
mbed_official 330:c80ac197fa6a 361 */
mbed_official 330:c80ac197fa6a 362
mbed_official 330:c80ac197fa6a 363 /** @defgroup SPI_CRC_Calculation SPI CRC Calculation
mbed_official 330:c80ac197fa6a 364 * @{
mbed_official 330:c80ac197fa6a 365 */
mbed_official 330:c80ac197fa6a 366
mbed_official 330:c80ac197fa6a 367 #define SPI_CRCCALCULATION_DISABLED ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 368 #define SPI_CRCCALCULATION_ENABLED SPI_CR1_CRCEN
mbed_official 330:c80ac197fa6a 369 #define IS_SPI_CRC_CALCULATION(CALCULATION) (((CALCULATION) == SPI_CRCCALCULATION_DISABLED) || \
mbed_official 330:c80ac197fa6a 370 ((CALCULATION) == SPI_CRCCALCULATION_ENABLED))
mbed_official 330:c80ac197fa6a 371 /**
mbed_official 330:c80ac197fa6a 372 * @}
mbed_official 330:c80ac197fa6a 373 */
mbed_official 330:c80ac197fa6a 374
mbed_official 330:c80ac197fa6a 375 /** @defgroup SPI_CRC_length SPI CRC length
mbed_official 330:c80ac197fa6a 376 * @{
mbed_official 330:c80ac197fa6a 377 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 378 * SPI_CRC_LENGTH_DATASIZE: aligned with the data size
mbed_official 330:c80ac197fa6a 379 * SPI_CRC_LENGTH_8BIT : CRC 8bit
mbed_official 330:c80ac197fa6a 380 * SPI_CRC_LENGTH_16BIT : CRC 16bit
mbed_official 330:c80ac197fa6a 381 */
mbed_official 330:c80ac197fa6a 382 #define SPI_CRC_LENGTH_DATASIZE 0
mbed_official 330:c80ac197fa6a 383 #define SPI_CRC_LENGTH_8BIT 1
mbed_official 330:c80ac197fa6a 384 #define SPI_CRC_LENGTH_16BIT 2
mbed_official 330:c80ac197fa6a 385 #define IS_SPI_CRC_LENGTH(LENGTH) (((LENGTH) == SPI_CRC_LENGTH_DATASIZE) ||\
mbed_official 330:c80ac197fa6a 386 ((LENGTH) == SPI_CRC_LENGTH_8BIT) || \
mbed_official 330:c80ac197fa6a 387 ((LENGTH) == SPI_CRC_LENGTH_16BIT))
mbed_official 330:c80ac197fa6a 388 /**
mbed_official 330:c80ac197fa6a 389 * @}
mbed_official 330:c80ac197fa6a 390 */
mbed_official 330:c80ac197fa6a 391
mbed_official 330:c80ac197fa6a 392 /** @defgroup SPI_FIFO_reception_threshold SPI FIFO reception threshold
mbed_official 330:c80ac197fa6a 393 * @{
mbed_official 330:c80ac197fa6a 394 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 395 * SPI_RxFIFOThreshold_HF: RXNE event is generated if the FIFO
mbed_official 330:c80ac197fa6a 396 * level is greater or equal to 1/2(16-bits).
mbed_official 330:c80ac197fa6a 397 * SPI_RxFIFOThreshold_QF: RXNE event is generated if the FIFO
mbed_official 330:c80ac197fa6a 398 * level is greater or equal to 1/4(8 bits).
mbed_official 330:c80ac197fa6a 399 */
mbed_official 330:c80ac197fa6a 400 #define SPI_RXFIFO_THRESHOLD SPI_CR2_FRXTH
mbed_official 330:c80ac197fa6a 401 #define SPI_RXFIFO_THRESHOLD_QF SPI_CR2_FRXTH
mbed_official 330:c80ac197fa6a 402 #define SPI_RXFIFO_THRESHOLD_HF ((uint32_t)0x0)
mbed_official 330:c80ac197fa6a 403
mbed_official 330:c80ac197fa6a 404 /**
mbed_official 330:c80ac197fa6a 405 * @}
mbed_official 330:c80ac197fa6a 406 */
mbed_official 330:c80ac197fa6a 407
mbed_official 330:c80ac197fa6a 408 /** @defgroup SPI_Interrupt_configuration_definition SPI Interrupt configuration definition
mbed_official 330:c80ac197fa6a 409 * @brief SPI Interrupt definition
mbed_official 330:c80ac197fa6a 410 * Elements values convention: 0xXXXXXXXX
mbed_official 330:c80ac197fa6a 411 * - XXXXXXXX : Interrupt control mask
mbed_official 330:c80ac197fa6a 412 * @{
mbed_official 330:c80ac197fa6a 413 */
mbed_official 330:c80ac197fa6a 414 #define SPI_IT_TXE SPI_CR2_TXEIE
mbed_official 330:c80ac197fa6a 415 #define SPI_IT_RXNE SPI_CR2_RXNEIE
mbed_official 330:c80ac197fa6a 416 #define SPI_IT_ERR SPI_CR2_ERRIE
mbed_official 330:c80ac197fa6a 417 #define IS_SPI_IT(IT) (((IT) == SPI_IT_TXE) || \
mbed_official 330:c80ac197fa6a 418 ((IT) == SPI_IT_RXNE) || \
mbed_official 330:c80ac197fa6a 419 ((IT) == SPI_IT_ERR))
mbed_official 330:c80ac197fa6a 420 /**
mbed_official 330:c80ac197fa6a 421 * @}
mbed_official 330:c80ac197fa6a 422 */
mbed_official 330:c80ac197fa6a 423
mbed_official 330:c80ac197fa6a 424
mbed_official 330:c80ac197fa6a 425 /** @defgroup SPI_Flag_definition SPI Flag definition
mbed_official 330:c80ac197fa6a 426 * @brief Flag definition
mbed_official 330:c80ac197fa6a 427 * Elements values convention: 0xXXXXYYYY
mbed_official 330:c80ac197fa6a 428 * - XXXX : Flag register Index
mbed_official 330:c80ac197fa6a 429 * - YYYY : Flag mask
mbed_official 330:c80ac197fa6a 430 * @{
mbed_official 330:c80ac197fa6a 431 */
mbed_official 330:c80ac197fa6a 432 #define SPI_FLAG_RXNE SPI_SR_RXNE /* SPI status flag: Rx buffer not empty flag */
mbed_official 330:c80ac197fa6a 433 #define SPI_FLAG_TXE SPI_SR_TXE /* SPI status flag: Tx buffer empty flag */
mbed_official 330:c80ac197fa6a 434 #define SPI_FLAG_BSY SPI_SR_BSY /* SPI status flag: Busy flag */
mbed_official 330:c80ac197fa6a 435 #define SPI_FLAG_CRCERR SPI_SR_CRCERR /* SPI Error flag: CRC error flag */
mbed_official 330:c80ac197fa6a 436 #define SPI_FLAG_MODF SPI_SR_MODF /* SPI Error flag: Mode fault flag */
mbed_official 330:c80ac197fa6a 437 #define SPI_FLAG_OVR SPI_SR_OVR /* SPI Error flag: Overrun flag */
mbed_official 330:c80ac197fa6a 438 #define SPI_FLAG_FRE SPI_SR_FRE /* SPI Error flag: TI mode frame format error flag */
mbed_official 330:c80ac197fa6a 439 #define SPI_FLAG_FTLVL SPI_SR_FTLVL /* SPI fifo transmission level */
mbed_official 330:c80ac197fa6a 440 #define SPI_FLAG_FRLVL SPI_SR_FRLVL /* SPI fifo reception level */
mbed_official 330:c80ac197fa6a 441 #define IS_SPI_FLAG(FLAG) (((FLAG) == SPI_FLAG_RXNE) || \
mbed_official 330:c80ac197fa6a 442 ((FLAG) == SPI_FLAG_TXE) || \
mbed_official 330:c80ac197fa6a 443 ((FLAG) == SPI_FLAG_BSY) || \
mbed_official 330:c80ac197fa6a 444 ((FLAG) == SPI_FLAG_CRCERR)|| \
mbed_official 330:c80ac197fa6a 445 ((FLAG) == SPI_FLAG_MODF) || \
mbed_official 330:c80ac197fa6a 446 ((FLAG) == SPI_FLAG_OVR) || \
mbed_official 330:c80ac197fa6a 447 ((FLAG) == SPI_FLAG_FTLVL) || \
mbed_official 330:c80ac197fa6a 448 ((FLAG) == SPI_FLAG_FRLVL) || \
mbed_official 330:c80ac197fa6a 449 ((FLAG) == SPI_IT_FRE))
mbed_official 330:c80ac197fa6a 450 /**
mbed_official 330:c80ac197fa6a 451 * @}
mbed_official 330:c80ac197fa6a 452 */
mbed_official 330:c80ac197fa6a 453
mbed_official 330:c80ac197fa6a 454
mbed_official 330:c80ac197fa6a 455 /** @defgroup SPI_transmission_fifo_status_level SPI transmission fifo status level
mbed_official 330:c80ac197fa6a 456 * @{
mbed_official 330:c80ac197fa6a 457 */
mbed_official 330:c80ac197fa6a 458
mbed_official 330:c80ac197fa6a 459 #define SPI_FTLVL_EMPTY ((uint16_t)0x0000)
mbed_official 330:c80ac197fa6a 460 #define SPI_FTLVL_QUARTER_FULL ((uint16_t)0x0800)
mbed_official 330:c80ac197fa6a 461 #define SPI_FTLVL_HALF_FULL ((uint16_t)0x1000)
mbed_official 330:c80ac197fa6a 462 #define SPI_FTLVL_FULL ((uint16_t)0x1800)
mbed_official 330:c80ac197fa6a 463
mbed_official 330:c80ac197fa6a 464
mbed_official 330:c80ac197fa6a 465 /**
mbed_official 330:c80ac197fa6a 466 * @}
mbed_official 330:c80ac197fa6a 467 */
mbed_official 330:c80ac197fa6a 468
mbed_official 330:c80ac197fa6a 469 /** @defgroup SPI_reception_fifo_status_level SPI reception fifo status level
mbed_official 330:c80ac197fa6a 470 * @{
mbed_official 330:c80ac197fa6a 471 */
mbed_official 330:c80ac197fa6a 472 #define SPI_FRLVL_EMPTY ((uint16_t)0x0000)
mbed_official 330:c80ac197fa6a 473 #define SPI_FRLVL_QUARTER_FULL ((uint16_t)0x0200)
mbed_official 330:c80ac197fa6a 474 #define SPI_FRLVL_HALF_FULL ((uint16_t)0x0400)
mbed_official 330:c80ac197fa6a 475 #define SPI_FRLVL_FULL ((uint16_t)0x0600)
mbed_official 330:c80ac197fa6a 476
mbed_official 330:c80ac197fa6a 477 /**
mbed_official 330:c80ac197fa6a 478 * @}
mbed_official 330:c80ac197fa6a 479 */
mbed_official 330:c80ac197fa6a 480
mbed_official 330:c80ac197fa6a 481 /**
mbed_official 330:c80ac197fa6a 482 * @}
mbed_official 330:c80ac197fa6a 483 */
mbed_official 330:c80ac197fa6a 484
mbed_official 330:c80ac197fa6a 485
mbed_official 330:c80ac197fa6a 486 /* Exported macros ------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 487 /** @defgroup SPI_Exported_Macros SPI Exported Macros
mbed_official 330:c80ac197fa6a 488 * @{
mbed_official 330:c80ac197fa6a 489 */
mbed_official 330:c80ac197fa6a 490
mbed_official 330:c80ac197fa6a 491 /** @brief Reset SPI handle state
mbed_official 330:c80ac197fa6a 492 * @param __HANDLE__: SPI handle.
mbed_official 330:c80ac197fa6a 493 * @retval None
mbed_official 330:c80ac197fa6a 494 */
mbed_official 330:c80ac197fa6a 495 #define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPI_STATE_RESET)
mbed_official 330:c80ac197fa6a 496
mbed_official 330:c80ac197fa6a 497 /** @brief Enables or disables the specified SPI interrupts.
mbed_official 330:c80ac197fa6a 498 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 499 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 500 * @param __INTERRUPT__: specifies the interrupt source to enable or disable.
mbed_official 330:c80ac197fa6a 501 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 502 * @arg SPI_IT_TXE: Tx buffer empty interrupt enable
mbed_official 330:c80ac197fa6a 503 * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 330:c80ac197fa6a 504 * @arg SPI_IT_ERR: Error interrupt enable
mbed_official 330:c80ac197fa6a 505 * @retval None
mbed_official 330:c80ac197fa6a 506 */
mbed_official 330:c80ac197fa6a 507
mbed_official 330:c80ac197fa6a 508 #define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 |= (__INTERRUPT__))
mbed_official 330:c80ac197fa6a 509 #define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR2 &= (~(__INTERRUPT__)))
mbed_official 330:c80ac197fa6a 510
mbed_official 330:c80ac197fa6a 511 /** @brief Checks if the specified SPI interrupt source is enabled or disabled.
mbed_official 330:c80ac197fa6a 512 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 513 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 514 * @param __INTERRUPT__: specifies the SPI interrupt source to check.
mbed_official 330:c80ac197fa6a 515 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 516 * @arg SPI_IT_TXE: Tx buffer empty interrupt enable
mbed_official 330:c80ac197fa6a 517 * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
mbed_official 330:c80ac197fa6a 518 * @arg SPI_IT_ERR: Error interrupt enable
mbed_official 330:c80ac197fa6a 519 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 330:c80ac197fa6a 520 */
mbed_official 330:c80ac197fa6a 521 #define __HAL_SPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
mbed_official 330:c80ac197fa6a 522
mbed_official 330:c80ac197fa6a 523 /** @brief Checks whether the specified SPI flag is set or not.
mbed_official 330:c80ac197fa6a 524 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 525 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 526 * @param __FLAG__: specifies the flag to check.
mbed_official 330:c80ac197fa6a 527 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 528 * @arg SPI_FLAG_RXNE: Receive buffer not empty flag
mbed_official 330:c80ac197fa6a 529 * @arg SPI_FLAG_TXE: Transmit buffer empty flag
mbed_official 330:c80ac197fa6a 530 * @arg SPI_FLAG_CRCERR: CRC error flag
mbed_official 330:c80ac197fa6a 531 * @arg SPI_FLAG_MODF: Mode fault flag
mbed_official 330:c80ac197fa6a 532 * @arg SPI_FLAG_OVR: Overrun flag
mbed_official 330:c80ac197fa6a 533 * @arg SPI_FLAG_BSY: Busy flag
mbed_official 330:c80ac197fa6a 534 * @arg SPI_FLAG_FRE: Frame format error flag
mbed_official 330:c80ac197fa6a 535 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 330:c80ac197fa6a 536 */
mbed_official 330:c80ac197fa6a 537 #define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
mbed_official 330:c80ac197fa6a 538
mbed_official 330:c80ac197fa6a 539 /** @brief Clears the SPI CRCERR pending flag.
mbed_official 330:c80ac197fa6a 540 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 541 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 542 * @retval None
mbed_official 330:c80ac197fa6a 543 */
mbed_official 330:c80ac197fa6a 544 #define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR = ~(SPI_FLAG_CRCERR))
mbed_official 330:c80ac197fa6a 545
mbed_official 330:c80ac197fa6a 546 /** @brief Clears the SPI MODF pending flag.
mbed_official 330:c80ac197fa6a 547 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 548 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 549 *
mbed_official 330:c80ac197fa6a 550 * @retval None
mbed_official 330:c80ac197fa6a 551 */
mbed_official 330:c80ac197fa6a 552 #define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__) do{(__HANDLE__)->Instance->SR;\
mbed_official 330:c80ac197fa6a 553 (__HANDLE__)->Instance->CR1 &= (~SPI_CR1_SPE);}while(0)
mbed_official 330:c80ac197fa6a 554
mbed_official 330:c80ac197fa6a 555 /** @brief Clears the SPI OVR pending flag.
mbed_official 330:c80ac197fa6a 556 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 557 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 558 *
mbed_official 330:c80ac197fa6a 559 * @retval None
mbed_official 330:c80ac197fa6a 560 */
mbed_official 330:c80ac197fa6a 561 #define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__) do{(__HANDLE__)->Instance->DR;\
mbed_official 330:c80ac197fa6a 562 (__HANDLE__)->Instance->SR;}while(0)
mbed_official 330:c80ac197fa6a 563
mbed_official 330:c80ac197fa6a 564 /** @brief Clears the SPI FRE pending flag.
mbed_official 330:c80ac197fa6a 565 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 566 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 567 *
mbed_official 330:c80ac197fa6a 568 * @retval None
mbed_official 330:c80ac197fa6a 569 */
mbed_official 330:c80ac197fa6a 570 #define __HAL_SPI_CLEAR_FREFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR)
mbed_official 330:c80ac197fa6a 571
mbed_official 330:c80ac197fa6a 572 /** @brief Enables the SPI.
mbed_official 330:c80ac197fa6a 573 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 574 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 575 * @retval None
mbed_official 330:c80ac197fa6a 576 */
mbed_official 330:c80ac197fa6a 577 #define __HAL_SPI_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= SPI_CR1_SPE)
mbed_official 330:c80ac197fa6a 578
mbed_official 330:c80ac197fa6a 579 /** @brief Disables the SPI.
mbed_official 330:c80ac197fa6a 580 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 581 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 582 * @retval None
mbed_official 330:c80ac197fa6a 583 */
mbed_official 330:c80ac197fa6a 584 #define __HAL_SPI_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~SPI_CR1_SPE)
mbed_official 330:c80ac197fa6a 585
mbed_official 330:c80ac197fa6a 586 /** @brief Sets the SPI transmit-only mode.
mbed_official 330:c80ac197fa6a 587 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 588 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 589 * @retval None
mbed_official 330:c80ac197fa6a 590 */
mbed_official 330:c80ac197fa6a 591 #define __HAL_SPI_1LINE_TX(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= SPI_CR1_BIDIOE)
mbed_official 330:c80ac197fa6a 592
mbed_official 330:c80ac197fa6a 593 /** @brief Sets the SPI receive-only mode.
mbed_official 330:c80ac197fa6a 594 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 595 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 596 * @retval None
mbed_official 330:c80ac197fa6a 597 */
mbed_official 330:c80ac197fa6a 598 #define __HAL_SPI_1LINE_RX(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~SPI_CR1_BIDIOE)
mbed_official 330:c80ac197fa6a 599
mbed_official 330:c80ac197fa6a 600 /** @brief Resets the CRC calculation of the SPI.
mbed_official 330:c80ac197fa6a 601 * @param __HANDLE__: specifies the SPI Handle.
mbed_official 330:c80ac197fa6a 602 * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
mbed_official 330:c80ac197fa6a 603 * @retval None
mbed_official 330:c80ac197fa6a 604 */
mbed_official 330:c80ac197fa6a 605 #define __HAL_SPI_RESET_CRC(__HANDLE__) do{(__HANDLE__)->Instance->CR1 &= (~SPI_CR1_CRCEN);\
mbed_official 330:c80ac197fa6a 606 (__HANDLE__)->Instance->CR1 |= SPI_CR1_CRCEN;}while(0)
mbed_official 330:c80ac197fa6a 607
mbed_official 330:c80ac197fa6a 608
mbed_official 330:c80ac197fa6a 609 #define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) (((POLYNOMIAL) >= 0x1) && ((POLYNOMIAL) <= 0xFFFF))
mbed_official 330:c80ac197fa6a 610 /**
mbed_official 330:c80ac197fa6a 611 * @}
mbed_official 330:c80ac197fa6a 612 */
mbed_official 330:c80ac197fa6a 613
mbed_official 330:c80ac197fa6a 614 /* Exported functions --------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 615 /** @addtogroup SPI_Exported_Functions SPI Exported Functions
mbed_official 330:c80ac197fa6a 616 * @{
mbed_official 330:c80ac197fa6a 617 */
mbed_official 330:c80ac197fa6a 618
mbed_official 330:c80ac197fa6a 619 /** @addtogroup SPI_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 330:c80ac197fa6a 620 * @{
mbed_official 330:c80ac197fa6a 621 */
mbed_official 330:c80ac197fa6a 622
mbed_official 330:c80ac197fa6a 623 /* Initialization and de-initialization functions ****************************/
mbed_official 330:c80ac197fa6a 624 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 625 HAL_StatusTypeDef HAL_SPI_InitExtended(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 626 HAL_StatusTypeDef HAL_SPI_DeInit (SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 627 void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 628 void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 629 /**
mbed_official 330:c80ac197fa6a 630 * @}
mbed_official 330:c80ac197fa6a 631 */
mbed_official 330:c80ac197fa6a 632
mbed_official 330:c80ac197fa6a 633 /** @addtogroup SPI_Exported_Functions_Group2 Input and Output operation functions
mbed_official 330:c80ac197fa6a 634 * @{
mbed_official 330:c80ac197fa6a 635 */
mbed_official 330:c80ac197fa6a 636
mbed_official 330:c80ac197fa6a 637 /* IO operation functions *****************************************************/
mbed_official 330:c80ac197fa6a 638 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 639 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 640 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 641 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 642 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 643 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
mbed_official 330:c80ac197fa6a 644 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 645 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 646 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
mbed_official 330:c80ac197fa6a 647 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 648 void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 649 void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 650 void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 651 void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 652 /**
mbed_official 330:c80ac197fa6a 653 * @}
mbed_official 330:c80ac197fa6a 654 */
mbed_official 330:c80ac197fa6a 655
mbed_official 330:c80ac197fa6a 656 /** @addtogroup SPI_Exported_Functions_Group3 Peripheral Control functions
mbed_official 330:c80ac197fa6a 657 * @{
mbed_official 330:c80ac197fa6a 658 */
mbed_official 330:c80ac197fa6a 659
mbed_official 330:c80ac197fa6a 660 /* Peripheral State and Error functions ***************************************/
mbed_official 330:c80ac197fa6a 661 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi);
mbed_official 330:c80ac197fa6a 662 /**
mbed_official 330:c80ac197fa6a 663 * @}
mbed_official 330:c80ac197fa6a 664 */
mbed_official 330:c80ac197fa6a 665
mbed_official 330:c80ac197fa6a 666 /**
mbed_official 330:c80ac197fa6a 667 * @}
mbed_official 330:c80ac197fa6a 668 */
mbed_official 330:c80ac197fa6a 669
mbed_official 330:c80ac197fa6a 670 /**
mbed_official 330:c80ac197fa6a 671 * @}
mbed_official 330:c80ac197fa6a 672 */
mbed_official 330:c80ac197fa6a 673
mbed_official 330:c80ac197fa6a 674 /**
mbed_official 330:c80ac197fa6a 675 * @}
mbed_official 330:c80ac197fa6a 676 */
mbed_official 330:c80ac197fa6a 677
mbed_official 330:c80ac197fa6a 678 #ifdef __cplusplus
mbed_official 330:c80ac197fa6a 679 }
mbed_official 330:c80ac197fa6a 680 #endif
mbed_official 330:c80ac197fa6a 681
mbed_official 330:c80ac197fa6a 682 #endif /* __STM32F3xx_HAL_SPI_H */
mbed_official 330:c80ac197fa6a 683
mbed_official 330:c80ac197fa6a 684 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/