added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
JojoS
Date:
Sat Sep 10 15:32:04 2016 +0000
Revision:
147:ba84b7dc41a7
Parent:
144:ef7eb2e8f9f7
added prescaler for 16 bit timers (solution as in LPC11xx), default prescaler 31 for max 28 ms period time

Who changed what in which revision?

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