pro vyuku PSS v Jecne

Committer:
vladvana
Date:
Sun Sep 24 12:31:52 2017 +0000
Revision:
0:23d1f73bf130
podklady pro cviceni z PSS

Who changed what in which revision?

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