TUKS MCU Introductory course / TUKS-COURSE-THERMOMETER

Fork of TUKS-COURSE-TIMER by TUKS MCU Introductory course

Committer:
elmot
Date:
Sat Feb 25 09:03:15 2017 +0000
Revision:
3:b69e098b4613
Parent:
1:d0dfbce63a89
Ready

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elmot 1:d0dfbce63a89 1 /**
elmot 1:d0dfbce63a89 2 ******************************************************************************
elmot 1:d0dfbce63a89 3 * @file stm32l4xx_hal_smartcard.h
elmot 1:d0dfbce63a89 4 * @author MCD Application Team
elmot 1:d0dfbce63a89 5 * @version V1.5.1
elmot 1:d0dfbce63a89 6 * @date 31-May-2016
elmot 1:d0dfbce63a89 7 * @brief Header file of SMARTCARD HAL module.
elmot 1:d0dfbce63a89 8 ******************************************************************************
elmot 1:d0dfbce63a89 9 * @attention
elmot 1:d0dfbce63a89 10 *
elmot 1:d0dfbce63a89 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
elmot 1:d0dfbce63a89 12 *
elmot 1:d0dfbce63a89 13 * Redistribution and use in source and binary forms, with or without modification,
elmot 1:d0dfbce63a89 14 * are permitted provided that the following conditions are met:
elmot 1:d0dfbce63a89 15 * 1. Redistributions of source code must retain the above copyright notice,
elmot 1:d0dfbce63a89 16 * this list of conditions and the following disclaimer.
elmot 1:d0dfbce63a89 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
elmot 1:d0dfbce63a89 18 * this list of conditions and the following disclaimer in the documentation
elmot 1:d0dfbce63a89 19 * and/or other materials provided with the distribution.
elmot 1:d0dfbce63a89 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
elmot 1:d0dfbce63a89 21 * may be used to endorse or promote products derived from this software
elmot 1:d0dfbce63a89 22 * without specific prior written permission.
elmot 1:d0dfbce63a89 23 *
elmot 1:d0dfbce63a89 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
elmot 1:d0dfbce63a89 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
elmot 1:d0dfbce63a89 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
elmot 1:d0dfbce63a89 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
elmot 1:d0dfbce63a89 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
elmot 1:d0dfbce63a89 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
elmot 1:d0dfbce63a89 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
elmot 1:d0dfbce63a89 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
elmot 1:d0dfbce63a89 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
elmot 1:d0dfbce63a89 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
elmot 1:d0dfbce63a89 34 *
elmot 1:d0dfbce63a89 35 ******************************************************************************
elmot 1:d0dfbce63a89 36 */
elmot 1:d0dfbce63a89 37
elmot 1:d0dfbce63a89 38 /* Define to prevent recursive inclusion -------------------------------------*/
elmot 1:d0dfbce63a89 39 #ifndef __STM32L4xx_HAL_SMARTCARD_H
elmot 1:d0dfbce63a89 40 #define __STM32L4xx_HAL_SMARTCARD_H
elmot 1:d0dfbce63a89 41
elmot 1:d0dfbce63a89 42 #ifdef __cplusplus
elmot 1:d0dfbce63a89 43 extern "C" {
elmot 1:d0dfbce63a89 44 #endif
elmot 1:d0dfbce63a89 45
elmot 1:d0dfbce63a89 46 /* Includes ------------------------------------------------------------------*/
elmot 1:d0dfbce63a89 47 #include "stm32l4xx_hal_def.h"
elmot 1:d0dfbce63a89 48
elmot 1:d0dfbce63a89 49 /** @addtogroup STM32L4xx_HAL_Driver
elmot 1:d0dfbce63a89 50 * @{
elmot 1:d0dfbce63a89 51 */
elmot 1:d0dfbce63a89 52
elmot 1:d0dfbce63a89 53 /** @addtogroup SMARTCARD
elmot 1:d0dfbce63a89 54 * @{
elmot 1:d0dfbce63a89 55 */
elmot 1:d0dfbce63a89 56
elmot 1:d0dfbce63a89 57 /* Exported types ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 58 /** @defgroup SMARTCARD_Exported_Types SMARTCARD Exported Types
elmot 1:d0dfbce63a89 59 * @{
elmot 1:d0dfbce63a89 60 */
elmot 1:d0dfbce63a89 61
elmot 1:d0dfbce63a89 62 /**
elmot 1:d0dfbce63a89 63 * @brief SMARTCARD Init Structure definition
elmot 1:d0dfbce63a89 64 */
elmot 1:d0dfbce63a89 65 typedef struct
elmot 1:d0dfbce63a89 66 {
elmot 1:d0dfbce63a89 67 uint32_t BaudRate; /*!< Configures the SmartCard communication baud rate.
elmot 1:d0dfbce63a89 68 The baud rate register is computed using the following formula:
elmot 1:d0dfbce63a89 69 Baud Rate Register = ((PCLKx) / ((hsmartcard->Init.BaudRate))) */
elmot 1:d0dfbce63a89 70
elmot 1:d0dfbce63a89 71 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.
elmot 1:d0dfbce63a89 72 This parameter @ref SMARTCARD_Word_Length can only be set to 9 (8 data + 1 parity bits). */
elmot 1:d0dfbce63a89 73
elmot 1:d0dfbce63a89 74 uint32_t StopBits; /*!< Specifies the number of stop bits.
elmot 1:d0dfbce63a89 75 This parameter can be a value of @ref SMARTCARD_Stop_Bits. */
elmot 1:d0dfbce63a89 76
elmot 1:d0dfbce63a89 77 uint16_t Parity; /*!< Specifies the parity mode.
elmot 1:d0dfbce63a89 78 This parameter can be a value of @ref SMARTCARD_Parity
elmot 1:d0dfbce63a89 79 @note The parity is enabled by default (PCE is forced to 1).
elmot 1:d0dfbce63a89 80 Since the WordLength is forced to 8 bits + parity, M is
elmot 1:d0dfbce63a89 81 forced to 1 and the parity bit is the 9th bit. */
elmot 1:d0dfbce63a89 82
elmot 1:d0dfbce63a89 83 uint16_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.
elmot 1:d0dfbce63a89 84 This parameter can be a value of @ref SMARTCARD_Mode */
elmot 1:d0dfbce63a89 85
elmot 1:d0dfbce63a89 86 uint16_t CLKPolarity; /*!< Specifies the steady state of the serial clock.
elmot 1:d0dfbce63a89 87 This parameter can be a value of @ref SMARTCARD_Clock_Polarity */
elmot 1:d0dfbce63a89 88
elmot 1:d0dfbce63a89 89 uint16_t CLKPhase; /*!< Specifies the clock transition on which the bit capture is made.
elmot 1:d0dfbce63a89 90 This parameter can be a value of @ref SMARTCARD_Clock_Phase */
elmot 1:d0dfbce63a89 91
elmot 1:d0dfbce63a89 92 uint16_t CLKLastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted
elmot 1:d0dfbce63a89 93 data bit (MSB) has to be output on the SCLK pin in synchronous mode.
elmot 1:d0dfbce63a89 94 This parameter can be a value of @ref SMARTCARD_Last_Bit */
elmot 1:d0dfbce63a89 95
elmot 1:d0dfbce63a89 96 uint16_t OneBitSampling; /*!< Specifies whether a single sample or three samples' majority vote is selected.
elmot 1:d0dfbce63a89 97 Selecting the single sample method increases the receiver tolerance to clock
elmot 1:d0dfbce63a89 98 deviations. This parameter can be a value of @ref SMARTCARD_OneBit_Sampling. */
elmot 1:d0dfbce63a89 99
elmot 1:d0dfbce63a89 100 uint8_t Prescaler; /*!< Specifies the SmartCard Prescaler. */
elmot 1:d0dfbce63a89 101
elmot 1:d0dfbce63a89 102 uint8_t GuardTime; /*!< Specifies the SmartCard Guard Time applied after stop bits. */
elmot 1:d0dfbce63a89 103
elmot 1:d0dfbce63a89 104 uint16_t NACKEnable; /*!< Specifies whether the SmartCard NACK transmission is enabled
elmot 1:d0dfbce63a89 105 in case of parity error.
elmot 1:d0dfbce63a89 106 This parameter can be a value of @ref SMARTCARD_NACK_Enable */
elmot 1:d0dfbce63a89 107
elmot 1:d0dfbce63a89 108 uint32_t TimeOutEnable; /*!< Specifies whether the receiver timeout is enabled.
elmot 1:d0dfbce63a89 109 This parameter can be a value of @ref SMARTCARD_Timeout_Enable*/
elmot 1:d0dfbce63a89 110
elmot 1:d0dfbce63a89 111 uint32_t TimeOutValue; /*!< Specifies the receiver time out value in number of baud blocks:
elmot 1:d0dfbce63a89 112 it is used to implement the Character Wait Time (CWT) and
elmot 1:d0dfbce63a89 113 Block Wait Time (BWT). It is coded over 24 bits. */
elmot 1:d0dfbce63a89 114
elmot 1:d0dfbce63a89 115 uint8_t BlockLength; /*!< Specifies the SmartCard Block Length in T=1 Reception mode.
elmot 1:d0dfbce63a89 116 This parameter can be any value from 0x0 to 0xFF */
elmot 1:d0dfbce63a89 117
elmot 1:d0dfbce63a89 118 uint8_t AutoRetryCount; /*!< Specifies the SmartCard auto-retry count (number of retries in
elmot 1:d0dfbce63a89 119 receive and transmit mode). When set to 0, retransmission is
elmot 1:d0dfbce63a89 120 disabled. Otherwise, its maximum value is 7 (before signalling
elmot 1:d0dfbce63a89 121 an error) */
elmot 1:d0dfbce63a89 122
elmot 1:d0dfbce63a89 123 }SMARTCARD_InitTypeDef;
elmot 1:d0dfbce63a89 124
elmot 1:d0dfbce63a89 125 /**
elmot 1:d0dfbce63a89 126 * @brief SMARTCARD advanced features initalization structure definition
elmot 1:d0dfbce63a89 127 */
elmot 1:d0dfbce63a89 128 typedef struct
elmot 1:d0dfbce63a89 129 {
elmot 1:d0dfbce63a89 130 uint32_t AdvFeatureInit; /*!< Specifies which advanced SMARTCARD features is initialized. Several
elmot 1:d0dfbce63a89 131 advanced features may be initialized at the same time. This parameter
elmot 1:d0dfbce63a89 132 can be a value of @ref SMARTCARDEx_Advanced_Features_Initialization_Type */
elmot 1:d0dfbce63a89 133
elmot 1:d0dfbce63a89 134 uint32_t TxPinLevelInvert; /*!< Specifies whether the TX pin active level is inverted.
elmot 1:d0dfbce63a89 135 This parameter can be a value of @ref SMARTCARD_Tx_Inv */
elmot 1:d0dfbce63a89 136
elmot 1:d0dfbce63a89 137 uint32_t RxPinLevelInvert; /*!< Specifies whether the RX pin active level is inverted.
elmot 1:d0dfbce63a89 138 This parameter can be a value of @ref SMARTCARD_Rx_Inv */
elmot 1:d0dfbce63a89 139
elmot 1:d0dfbce63a89 140 uint32_t DataInvert; /*!< Specifies whether data are inverted (positive/direct logic
elmot 1:d0dfbce63a89 141 vs negative/inverted logic).
elmot 1:d0dfbce63a89 142 This parameter can be a value of @ref SMARTCARD_Data_Inv */
elmot 1:d0dfbce63a89 143
elmot 1:d0dfbce63a89 144 uint32_t Swap; /*!< Specifies whether TX and RX pins are swapped.
elmot 1:d0dfbce63a89 145 This parameter can be a value of @ref SMARTCARD_Rx_Tx_Swap */
elmot 1:d0dfbce63a89 146
elmot 1:d0dfbce63a89 147 uint32_t OverrunDisable; /*!< Specifies whether the reception overrun detection is disabled.
elmot 1:d0dfbce63a89 148 This parameter can be a value of @ref SMARTCARD_Overrun_Disable */
elmot 1:d0dfbce63a89 149
elmot 1:d0dfbce63a89 150 uint32_t DMADisableonRxError; /*!< Specifies whether the DMA is disabled in case of reception error.
elmot 1:d0dfbce63a89 151 This parameter can be a value of @ref SMARTCARD_DMA_Disable_on_Rx_Error */
elmot 1:d0dfbce63a89 152
elmot 1:d0dfbce63a89 153 uint32_t MSBFirst; /*!< Specifies whether MSB is sent first on UART line.
elmot 1:d0dfbce63a89 154 This parameter can be a value of @ref SMARTCARD_MSB_First */
elmot 1:d0dfbce63a89 155
elmot 1:d0dfbce63a89 156 uint16_t TxCompletionIndication; /*!< Specifies which transmission completion indication is used: before (when
elmot 1:d0dfbce63a89 157 relevant flag is available) or once guard time period has elapsed.
elmot 1:d0dfbce63a89 158 This parameter can be a value of @ref SMARTCARDEx_Transmission_Completion_Indication. */
elmot 1:d0dfbce63a89 159 }SMARTCARD_AdvFeatureInitTypeDef;
elmot 1:d0dfbce63a89 160
elmot 1:d0dfbce63a89 161 /**
elmot 1:d0dfbce63a89 162 * @brief HAL SMARTCARD State structures definition
elmot 1:d0dfbce63a89 163 * @note HAL SMARTCARD State value is a combination of 2 different substates: gState and RxState.
elmot 1:d0dfbce63a89 164 * - gState contains SMARTCARD state information related to global Handle management
elmot 1:d0dfbce63a89 165 * and also information related to Tx operations.
elmot 1:d0dfbce63a89 166 * gState value coding follow below described bitmap :
elmot 1:d0dfbce63a89 167 * b7-b6 Error information
elmot 1:d0dfbce63a89 168 * 00 : No Error
elmot 1:d0dfbce63a89 169 * 01 : (Not Used)
elmot 1:d0dfbce63a89 170 * 10 : Timeout
elmot 1:d0dfbce63a89 171 * 11 : Error
elmot 1:d0dfbce63a89 172 * b5 IP initilisation status
elmot 1:d0dfbce63a89 173 * 0 : Reset (IP not initialized)
elmot 1:d0dfbce63a89 174 * 1 : Init done (IP not initialized. HAL SMARTCARD Init function already called)
elmot 1:d0dfbce63a89 175 * b4-b3 (not used)
elmot 1:d0dfbce63a89 176 * xx : Should be set to 00
elmot 1:d0dfbce63a89 177 * b2 Intrinsic process state
elmot 1:d0dfbce63a89 178 * 0 : Ready
elmot 1:d0dfbce63a89 179 * 1 : Busy (IP busy with some configuration or internal operations)
elmot 1:d0dfbce63a89 180 * b1 (not used)
elmot 1:d0dfbce63a89 181 * x : Should be set to 0
elmot 1:d0dfbce63a89 182 * b0 Tx state
elmot 1:d0dfbce63a89 183 * 0 : Ready (no Tx operation ongoing)
elmot 1:d0dfbce63a89 184 * 1 : Busy (Tx operation ongoing)
elmot 1:d0dfbce63a89 185 * - RxState contains information related to Rx operations.
elmot 1:d0dfbce63a89 186 * RxState value coding follow below described bitmap :
elmot 1:d0dfbce63a89 187 * b7-b6 (not used)
elmot 1:d0dfbce63a89 188 * xx : Should be set to 00
elmot 1:d0dfbce63a89 189 * b5 IP initilisation status
elmot 1:d0dfbce63a89 190 * 0 : Reset (IP not initialized)
elmot 1:d0dfbce63a89 191 * 1 : Init done (IP not initialized)
elmot 1:d0dfbce63a89 192 * b4-b2 (not used)
elmot 1:d0dfbce63a89 193 * xxx : Should be set to 000
elmot 1:d0dfbce63a89 194 * b1 Rx state
elmot 1:d0dfbce63a89 195 * 0 : Ready (no Rx operation ongoing)
elmot 1:d0dfbce63a89 196 * 1 : Busy (Rx operation ongoing)
elmot 1:d0dfbce63a89 197 * b0 (not used)
elmot 1:d0dfbce63a89 198 * x : Should be set to 0.
elmot 1:d0dfbce63a89 199 */
elmot 1:d0dfbce63a89 200 typedef enum
elmot 1:d0dfbce63a89 201 {
elmot 1:d0dfbce63a89 202 HAL_SMARTCARD_STATE_RESET = 0x00U, /*!< Peripheral is not initialized
elmot 1:d0dfbce63a89 203 Value is allowed for gState and RxState */
elmot 1:d0dfbce63a89 204 HAL_SMARTCARD_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use
elmot 1:d0dfbce63a89 205 Value is allowed for gState and RxState */
elmot 1:d0dfbce63a89 206 HAL_SMARTCARD_STATE_BUSY = 0x24U, /*!< an internal process is ongoing
elmot 1:d0dfbce63a89 207 Value is allowed for gState only */
elmot 1:d0dfbce63a89 208 HAL_SMARTCARD_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing
elmot 1:d0dfbce63a89 209 Value is allowed for gState only */
elmot 1:d0dfbce63a89 210 HAL_SMARTCARD_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing
elmot 1:d0dfbce63a89 211 Value is allowed for RxState only */
elmot 1:d0dfbce63a89 212 HAL_SMARTCARD_STATE_BUSY_TX_RX = 0x23U, /*!< Data Transmission and Reception process is ongoing
elmot 1:d0dfbce63a89 213 Not to be used for neither gState nor RxState.
elmot 1:d0dfbce63a89 214 Value is result of combination (Or) between gState and RxState values */
elmot 1:d0dfbce63a89 215 HAL_SMARTCARD_STATE_TIMEOUT = 0xA0U, /*!< Timeout state
elmot 1:d0dfbce63a89 216 Value is allowed for gState only */
elmot 1:d0dfbce63a89 217 HAL_SMARTCARD_STATE_ERROR = 0xE0U /*!< Error
elmot 1:d0dfbce63a89 218 Value is allowed for gState only */
elmot 1:d0dfbce63a89 219 }HAL_SMARTCARD_StateTypeDef;
elmot 1:d0dfbce63a89 220
elmot 1:d0dfbce63a89 221 /**
elmot 1:d0dfbce63a89 222 * @brief HAL SMARTCARD Error Code structure definition
elmot 1:d0dfbce63a89 223 */
elmot 1:d0dfbce63a89 224 typedef enum
elmot 1:d0dfbce63a89 225 {
elmot 1:d0dfbce63a89 226 HAL_SMARTCARD_ERROR_NONE = 0x00, /*!< No error */
elmot 1:d0dfbce63a89 227 HAL_SMARTCARD_ERROR_PE = 0x01, /*!< Parity error */
elmot 1:d0dfbce63a89 228 HAL_SMARTCARD_ERROR_NE = 0x02, /*!< Noise error */
elmot 1:d0dfbce63a89 229 HAL_SMARTCARD_ERROR_FE = 0x04, /*!< frame error */
elmot 1:d0dfbce63a89 230 HAL_SMARTCARD_ERROR_ORE = 0x08, /*!< Overrun error */
elmot 1:d0dfbce63a89 231 HAL_SMARTCARD_ERROR_DMA = 0x10, /*!< DMA transfer error */
elmot 1:d0dfbce63a89 232 HAL_SMARTCARD_ERROR_RTO = 0x20 /*!< Receiver TimeOut error */
elmot 1:d0dfbce63a89 233 }HAL_SMARTCARD_ErrorTypeDef;
elmot 1:d0dfbce63a89 234
elmot 1:d0dfbce63a89 235 /**
elmot 1:d0dfbce63a89 236 * @brief SMARTCARD handle Structure definition
elmot 1:d0dfbce63a89 237 */
elmot 1:d0dfbce63a89 238 typedef struct
elmot 1:d0dfbce63a89 239 {
elmot 1:d0dfbce63a89 240 USART_TypeDef *Instance; /*!< USART registers base address */
elmot 1:d0dfbce63a89 241
elmot 1:d0dfbce63a89 242 SMARTCARD_InitTypeDef Init; /*!< SmartCard communication parameters */
elmot 1:d0dfbce63a89 243
elmot 1:d0dfbce63a89 244 SMARTCARD_AdvFeatureInitTypeDef AdvancedInit; /*!< SmartCard advanced features initialization parameters */
elmot 1:d0dfbce63a89 245
elmot 1:d0dfbce63a89 246 uint8_t *pTxBuffPtr; /*!< Pointer to SmartCard Tx transfer Buffer */
elmot 1:d0dfbce63a89 247
elmot 1:d0dfbce63a89 248 uint16_t TxXferSize; /*!< SmartCard Tx Transfer size */
elmot 1:d0dfbce63a89 249
elmot 1:d0dfbce63a89 250 uint16_t TxXferCount; /*!< SmartCard Tx Transfer Counter */
elmot 1:d0dfbce63a89 251
elmot 1:d0dfbce63a89 252 uint8_t *pRxBuffPtr; /*!< Pointer to SmartCard Rx transfer Buffer */
elmot 1:d0dfbce63a89 253
elmot 1:d0dfbce63a89 254 uint16_t RxXferSize; /*!< SmartCard Rx Transfer size */
elmot 1:d0dfbce63a89 255
elmot 1:d0dfbce63a89 256 uint16_t RxXferCount; /*!< SmartCard Rx Transfer Counter */
elmot 1:d0dfbce63a89 257
elmot 1:d0dfbce63a89 258 DMA_HandleTypeDef *hdmatx; /*!< SmartCard Tx DMA Handle parameters */
elmot 1:d0dfbce63a89 259
elmot 1:d0dfbce63a89 260 DMA_HandleTypeDef *hdmarx; /*!< SmartCard Rx DMA Handle parameters */
elmot 1:d0dfbce63a89 261
elmot 1:d0dfbce63a89 262 HAL_LockTypeDef Lock; /*!< Locking object */
elmot 1:d0dfbce63a89 263
elmot 1:d0dfbce63a89 264 __IO HAL_SMARTCARD_StateTypeDef gState; /*!< SmartCard state information related to global Handle management
elmot 1:d0dfbce63a89 265 and also related to Tx operations.
elmot 1:d0dfbce63a89 266 This parameter can be a value of @ref HAL_SMARTCARD_StateTypeDef */
elmot 1:d0dfbce63a89 267
elmot 1:d0dfbce63a89 268 __IO HAL_SMARTCARD_StateTypeDef RxState; /*!< SmartCard state information related to Rx operations.
elmot 1:d0dfbce63a89 269 This parameter can be a value of @ref HAL_SMARTCARD_StateTypeDef */
elmot 1:d0dfbce63a89 270
elmot 1:d0dfbce63a89 271 uint32_t ErrorCode; /*!< SmartCard Error code */
elmot 1:d0dfbce63a89 272
elmot 1:d0dfbce63a89 273 }SMARTCARD_HandleTypeDef;
elmot 1:d0dfbce63a89 274
elmot 1:d0dfbce63a89 275 /**
elmot 1:d0dfbce63a89 276 * @brief SMARTCARD clock sources
elmot 1:d0dfbce63a89 277 */
elmot 1:d0dfbce63a89 278 typedef enum
elmot 1:d0dfbce63a89 279 {
elmot 1:d0dfbce63a89 280 SMARTCARD_CLOCKSOURCE_PCLK1 = 0x00, /*!< PCLK1 clock source */
elmot 1:d0dfbce63a89 281 SMARTCARD_CLOCKSOURCE_PCLK2 = 0x01, /*!< PCLK2 clock source */
elmot 1:d0dfbce63a89 282 SMARTCARD_CLOCKSOURCE_HSI = 0x02, /*!< HSI clock source */
elmot 1:d0dfbce63a89 283 SMARTCARD_CLOCKSOURCE_SYSCLK = 0x04, /*!< SYSCLK clock source */
elmot 1:d0dfbce63a89 284 SMARTCARD_CLOCKSOURCE_LSE = 0x08, /*!< LSE clock source */
elmot 1:d0dfbce63a89 285 SMARTCARD_CLOCKSOURCE_UNDEFINED = 0x10 /*!< undefined clock source */
elmot 1:d0dfbce63a89 286 }SMARTCARD_ClockSourceTypeDef;
elmot 1:d0dfbce63a89 287
elmot 1:d0dfbce63a89 288 /**
elmot 1:d0dfbce63a89 289 * @}
elmot 1:d0dfbce63a89 290 */
elmot 1:d0dfbce63a89 291
elmot 1:d0dfbce63a89 292 /* Exported constants --------------------------------------------------------*/
elmot 1:d0dfbce63a89 293 /** @defgroup SMARTCARD_Exported_Constants SMARTCARD Exported Constants
elmot 1:d0dfbce63a89 294 * @{
elmot 1:d0dfbce63a89 295 */
elmot 1:d0dfbce63a89 296
elmot 1:d0dfbce63a89 297 /** @defgroup SMARTCARD_Word_Length SMARTCARD Word Length
elmot 1:d0dfbce63a89 298 * @{
elmot 1:d0dfbce63a89 299 */
elmot 1:d0dfbce63a89 300 #define SMARTCARD_WORDLENGTH_9B ((uint32_t)USART_CR1_M0) /*!< SMARTCARD frame length */
elmot 1:d0dfbce63a89 301 /**
elmot 1:d0dfbce63a89 302 * @}
elmot 1:d0dfbce63a89 303 */
elmot 1:d0dfbce63a89 304
elmot 1:d0dfbce63a89 305 /** @defgroup SMARTCARD_Stop_Bits SMARTCARD Number of Stop Bits
elmot 1:d0dfbce63a89 306 * @{
elmot 1:d0dfbce63a89 307 */
elmot 1:d0dfbce63a89 308 #define SMARTCARD_STOPBITS_0_5 ((uint32_t)USART_CR2_STOP_0) /*!< SMARTCARD frame with 0.5 stop bit */
elmot 1:d0dfbce63a89 309 #define SMARTCARD_STOPBITS_1_5 ((uint32_t)(USART_CR2_STOP_0 | USART_CR2_STOP_1)) /*!< SMARTCARD frame with 1.5 stop bits */
elmot 1:d0dfbce63a89 310 /**
elmot 1:d0dfbce63a89 311 * @}
elmot 1:d0dfbce63a89 312 */
elmot 1:d0dfbce63a89 313
elmot 1:d0dfbce63a89 314 /** @defgroup SMARTCARD_Parity SMARTCARD Parity
elmot 1:d0dfbce63a89 315 * @{
elmot 1:d0dfbce63a89 316 */
elmot 1:d0dfbce63a89 317 #define SMARTCARD_PARITY_EVEN ((uint32_t)USART_CR1_PCE) /*!< SMARTCARD frame even parity */
elmot 1:d0dfbce63a89 318 #define SMARTCARD_PARITY_ODD ((uint32_t)(USART_CR1_PCE | USART_CR1_PS)) /*!< SMARTCARD frame odd parity */
elmot 1:d0dfbce63a89 319 /**
elmot 1:d0dfbce63a89 320 * @}
elmot 1:d0dfbce63a89 321 */
elmot 1:d0dfbce63a89 322
elmot 1:d0dfbce63a89 323 /** @defgroup SMARTCARD_Mode SMARTCARD Transfer Mode
elmot 1:d0dfbce63a89 324 * @{
elmot 1:d0dfbce63a89 325 */
elmot 1:d0dfbce63a89 326 #define SMARTCARD_MODE_RX ((uint32_t)USART_CR1_RE) /*!< SMARTCARD RX mode */
elmot 1:d0dfbce63a89 327 #define SMARTCARD_MODE_TX ((uint32_t)USART_CR1_TE) /*!< SMARTCARD TX mode */
elmot 1:d0dfbce63a89 328 #define SMARTCARD_MODE_TX_RX ((uint32_t)(USART_CR1_TE |USART_CR1_RE)) /*!< SMARTCARD RX and TX mode */
elmot 1:d0dfbce63a89 329 /**
elmot 1:d0dfbce63a89 330 * @}
elmot 1:d0dfbce63a89 331 */
elmot 1:d0dfbce63a89 332
elmot 1:d0dfbce63a89 333 /** @defgroup SMARTCARD_Clock_Polarity SMARTCARD Clock Polarity
elmot 1:d0dfbce63a89 334 * @{
elmot 1:d0dfbce63a89 335 */
elmot 1:d0dfbce63a89 336 #define SMARTCARD_POLARITY_LOW ((uint32_t)0x00000000) /*!< SMARTCARD frame low polarity */
elmot 1:d0dfbce63a89 337 #define SMARTCARD_POLARITY_HIGH ((uint32_t)USART_CR2_CPOL) /*!< SMARTCARD frame high polarity */
elmot 1:d0dfbce63a89 338 /**
elmot 1:d0dfbce63a89 339 * @}
elmot 1:d0dfbce63a89 340 */
elmot 1:d0dfbce63a89 341
elmot 1:d0dfbce63a89 342 /** @defgroup SMARTCARD_Clock_Phase SMARTCARD Clock Phase
elmot 1:d0dfbce63a89 343 * @{
elmot 1:d0dfbce63a89 344 */
elmot 1:d0dfbce63a89 345 #define SMARTCARD_PHASE_1EDGE ((uint32_t)0x00000000) /*!< SMARTCARD frame phase on first clock transition */
elmot 1:d0dfbce63a89 346 #define SMARTCARD_PHASE_2EDGE ((uint32_t)USART_CR2_CPHA) /*!< SMARTCARD frame phase on second clock transition */
elmot 1:d0dfbce63a89 347 /**
elmot 1:d0dfbce63a89 348 * @}
elmot 1:d0dfbce63a89 349 */
elmot 1:d0dfbce63a89 350
elmot 1:d0dfbce63a89 351 /** @defgroup SMARTCARD_Last_Bit SMARTCARD Last Bit
elmot 1:d0dfbce63a89 352 * @{
elmot 1:d0dfbce63a89 353 */
elmot 1:d0dfbce63a89 354 #define SMARTCARD_LASTBIT_DISABLE ((uint32_t)0x00000000) /*!< SMARTCARD frame last data bit clock pulse not output to SCLK pin */
elmot 1:d0dfbce63a89 355 #define SMARTCARD_LASTBIT_ENABLE ((uint32_t)USART_CR2_LBCL) /*!< SMARTCARD frame last data bit clock pulse output to SCLK pin */
elmot 1:d0dfbce63a89 356 /**
elmot 1:d0dfbce63a89 357 * @}
elmot 1:d0dfbce63a89 358 */
elmot 1:d0dfbce63a89 359
elmot 1:d0dfbce63a89 360 /** @defgroup SMARTCARD_OneBit_Sampling SMARTCARD One Bit Sampling Method
elmot 1:d0dfbce63a89 361 * @{
elmot 1:d0dfbce63a89 362 */
elmot 1:d0dfbce63a89 363 #define SMARTCARD_ONE_BIT_SAMPLE_DISABLE ((uint32_t)0x00000000) /*!< SMARTCARD frame one-bit sample disabled */
elmot 1:d0dfbce63a89 364 #define SMARTCARD_ONE_BIT_SAMPLE_ENABLE ((uint32_t)USART_CR3_ONEBIT) /*!< SMARTCARD frame one-bit sample enabled */
elmot 1:d0dfbce63a89 365 /**
elmot 1:d0dfbce63a89 366 * @}
elmot 1:d0dfbce63a89 367 */
elmot 1:d0dfbce63a89 368
elmot 1:d0dfbce63a89 369
elmot 1:d0dfbce63a89 370 /** @defgroup SMARTCARD_NACK_Enable SMARTCARD NACK Enable
elmot 1:d0dfbce63a89 371 * @{
elmot 1:d0dfbce63a89 372 */
elmot 1:d0dfbce63a89 373 #define SMARTCARD_NACK_ENABLE ((uint32_t)USART_CR3_NACK) /*!< SMARTCARD NACK transmission disabled */
elmot 1:d0dfbce63a89 374 #define SMARTCARD_NACK_DISABLE ((uint32_t)0x00000000) /*!< SMARTCARD NACK transmission enabled */
elmot 1:d0dfbce63a89 375 /**
elmot 1:d0dfbce63a89 376 * @}
elmot 1:d0dfbce63a89 377 */
elmot 1:d0dfbce63a89 378
elmot 1:d0dfbce63a89 379 /** @defgroup SMARTCARD_Timeout_Enable SMARTCARD Timeout Enable
elmot 1:d0dfbce63a89 380 * @{
elmot 1:d0dfbce63a89 381 */
elmot 1:d0dfbce63a89 382 #define SMARTCARD_TIMEOUT_DISABLE ((uint32_t)0x00000000) /*!< SMARTCARD receiver timeout disabled */
elmot 1:d0dfbce63a89 383 #define SMARTCARD_TIMEOUT_ENABLE ((uint32_t)USART_CR2_RTOEN) /*!< SMARTCARD receiver timeout enabled */
elmot 1:d0dfbce63a89 384 /**
elmot 1:d0dfbce63a89 385 * @}
elmot 1:d0dfbce63a89 386 */
elmot 1:d0dfbce63a89 387
elmot 1:d0dfbce63a89 388 /** @defgroup SMARTCARD_Tx_Inv SMARTCARD advanced feature TX pin active level inversion
elmot 1:d0dfbce63a89 389 * @{
elmot 1:d0dfbce63a89 390 */
elmot 1:d0dfbce63a89 391 #define SMARTCARD_ADVFEATURE_TXINV_DISABLE ((uint32_t)0x00000000) /*!< TX pin active level inversion disable */
elmot 1:d0dfbce63a89 392 #define SMARTCARD_ADVFEATURE_TXINV_ENABLE ((uint32_t)USART_CR2_TXINV) /*!< TX pin active level inversion enable */
elmot 1:d0dfbce63a89 393 /**
elmot 1:d0dfbce63a89 394 * @}
elmot 1:d0dfbce63a89 395 */
elmot 1:d0dfbce63a89 396
elmot 1:d0dfbce63a89 397 /** @defgroup SMARTCARD_Rx_Inv SMARTCARD advanced feature RX pin active level inversion
elmot 1:d0dfbce63a89 398 * @{
elmot 1:d0dfbce63a89 399 */
elmot 1:d0dfbce63a89 400 #define SMARTCARD_ADVFEATURE_RXINV_DISABLE ((uint32_t)0x00000000) /*!< RX pin active level inversion disable */
elmot 1:d0dfbce63a89 401 #define SMARTCARD_ADVFEATURE_RXINV_ENABLE ((uint32_t)USART_CR2_RXINV) /*!< RX pin active level inversion enable */
elmot 1:d0dfbce63a89 402 /**
elmot 1:d0dfbce63a89 403 * @}
elmot 1:d0dfbce63a89 404 */
elmot 1:d0dfbce63a89 405
elmot 1:d0dfbce63a89 406 /** @defgroup SMARTCARD_Data_Inv SMARTCARD advanced feature Binary Data inversion
elmot 1:d0dfbce63a89 407 * @{
elmot 1:d0dfbce63a89 408 */
elmot 1:d0dfbce63a89 409 #define SMARTCARD_ADVFEATURE_DATAINV_DISABLE ((uint32_t)0x00000000) /*!< Binary data inversion disable */
elmot 1:d0dfbce63a89 410 #define SMARTCARD_ADVFEATURE_DATAINV_ENABLE ((uint32_t)USART_CR2_DATAINV) /*!< Binary data inversion enable */
elmot 1:d0dfbce63a89 411 /**
elmot 1:d0dfbce63a89 412 * @}
elmot 1:d0dfbce63a89 413 */
elmot 1:d0dfbce63a89 414
elmot 1:d0dfbce63a89 415 /** @defgroup SMARTCARD_Rx_Tx_Swap SMARTCARD advanced feature RX TX pins swap
elmot 1:d0dfbce63a89 416 * @{
elmot 1:d0dfbce63a89 417 */
elmot 1:d0dfbce63a89 418 #define SMARTCARD_ADVFEATURE_SWAP_DISABLE ((uint32_t)0x00000000) /*!< TX/RX pins swap disable */
elmot 1:d0dfbce63a89 419 #define SMARTCARD_ADVFEATURE_SWAP_ENABLE ((uint32_t)USART_CR2_SWAP) /*!< TX/RX pins swap enable */
elmot 1:d0dfbce63a89 420 /**
elmot 1:d0dfbce63a89 421 * @}
elmot 1:d0dfbce63a89 422 */
elmot 1:d0dfbce63a89 423
elmot 1:d0dfbce63a89 424 /** @defgroup SMARTCARD_Overrun_Disable SMARTCARD advanced feature Overrun Disable
elmot 1:d0dfbce63a89 425 * @{
elmot 1:d0dfbce63a89 426 */
elmot 1:d0dfbce63a89 427 #define SMARTCARD_ADVFEATURE_OVERRUN_ENABLE ((uint32_t)0x00000000) /*!< RX overrun enable */
elmot 1:d0dfbce63a89 428 #define SMARTCARD_ADVFEATURE_OVERRUN_DISABLE ((uint32_t)USART_CR3_OVRDIS) /*!< RX overrun disable */
elmot 1:d0dfbce63a89 429 /**
elmot 1:d0dfbce63a89 430 * @}
elmot 1:d0dfbce63a89 431 */
elmot 1:d0dfbce63a89 432
elmot 1:d0dfbce63a89 433 /** @defgroup SMARTCARD_DMA_Disable_on_Rx_Error SMARTCARD advanced feature DMA Disable on Rx Error
elmot 1:d0dfbce63a89 434 * @{
elmot 1:d0dfbce63a89 435 */
elmot 1:d0dfbce63a89 436 #define SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR ((uint32_t)0x00000000) /*!< DMA enable on Reception Error */
elmot 1:d0dfbce63a89 437 #define SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR ((uint32_t)USART_CR3_DDRE) /*!< DMA disable on Reception Error */
elmot 1:d0dfbce63a89 438 /**
elmot 1:d0dfbce63a89 439 * @}
elmot 1:d0dfbce63a89 440 */
elmot 1:d0dfbce63a89 441
elmot 1:d0dfbce63a89 442 /** @defgroup SMARTCARD_MSB_First SMARTCARD advanced feature MSB first
elmot 1:d0dfbce63a89 443 * @{
elmot 1:d0dfbce63a89 444 */
elmot 1:d0dfbce63a89 445 #define SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE ((uint32_t)0x00000000) /*!< Most significant bit sent/received first disable */
elmot 1:d0dfbce63a89 446 #define SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE ((uint32_t)USART_CR2_MSBFIRST) /*!< Most significant bit sent/received first enable */
elmot 1:d0dfbce63a89 447 /**
elmot 1:d0dfbce63a89 448 * @}
elmot 1:d0dfbce63a89 449 */
elmot 1:d0dfbce63a89 450
elmot 1:d0dfbce63a89 451 /** @defgroup SMARTCARD_Request_Parameters SMARTCARD Request Parameters
elmot 1:d0dfbce63a89 452 * @{
elmot 1:d0dfbce63a89 453 */
elmot 1:d0dfbce63a89 454 #define SMARTCARD_RXDATA_FLUSH_REQUEST ((uint16_t)USART_RQR_RXFRQ) /*!< Receive data flush request */
elmot 1:d0dfbce63a89 455 #define SMARTCARD_TXDATA_FLUSH_REQUEST ((uint16_t)USART_RQR_TXFRQ) /*!< Transmit data flush request */
elmot 1:d0dfbce63a89 456 /**
elmot 1:d0dfbce63a89 457 * @}
elmot 1:d0dfbce63a89 458 */
elmot 1:d0dfbce63a89 459
elmot 1:d0dfbce63a89 460 /** @defgroup SMARTCARD_CR3_SCARCNT_LSB_POS SMARTCARD auto retry counter LSB position in CR3 register
elmot 1:d0dfbce63a89 461 * @{
elmot 1:d0dfbce63a89 462 */
elmot 1:d0dfbce63a89 463 #define SMARTCARD_CR3_SCARCNT_LSB_POS ((uint32_t) 17) /*!< SMARTCARD auto retry counter LSB position in CR3 register */
elmot 1:d0dfbce63a89 464 /**
elmot 1:d0dfbce63a89 465 * @}
elmot 1:d0dfbce63a89 466 */
elmot 1:d0dfbce63a89 467
elmot 1:d0dfbce63a89 468 /** @defgroup SMARTCARD_GTPR_GT_LSB_POS SMARTCARD guard time value LSB position in GTPR register
elmot 1:d0dfbce63a89 469 * @{
elmot 1:d0dfbce63a89 470 */
elmot 1:d0dfbce63a89 471 #define SMARTCARD_GTPR_GT_LSB_POS ((uint32_t) 8) /*!< SMARTCARD guard time value LSB position in GTPR register */
elmot 1:d0dfbce63a89 472 /**
elmot 1:d0dfbce63a89 473 * @}
elmot 1:d0dfbce63a89 474 */
elmot 1:d0dfbce63a89 475
elmot 1:d0dfbce63a89 476 /** @defgroup SMARTCARD_RTOR_BLEN_LSB_POS SMARTCARD block length LSB position in RTOR register
elmot 1:d0dfbce63a89 477 * @{
elmot 1:d0dfbce63a89 478 */
elmot 1:d0dfbce63a89 479 #define SMARTCARD_RTOR_BLEN_LSB_POS ((uint32_t) 24) /*!< SMARTCARD block length LSB position in RTOR register */
elmot 1:d0dfbce63a89 480 /**
elmot 1:d0dfbce63a89 481 * @}
elmot 1:d0dfbce63a89 482 */
elmot 1:d0dfbce63a89 483
elmot 1:d0dfbce63a89 484 /** @defgroup SMARTCARD_Interruption_Mask SMARTCARD interruptions flags mask
elmot 1:d0dfbce63a89 485 * @{
elmot 1:d0dfbce63a89 486 */
elmot 1:d0dfbce63a89 487 #define SMARTCARD_IT_MASK ((uint16_t)0x001F) /*!< SMARTCARD interruptions flags mask */
elmot 1:d0dfbce63a89 488 /**
elmot 1:d0dfbce63a89 489 * @}
elmot 1:d0dfbce63a89 490 */
elmot 1:d0dfbce63a89 491
elmot 1:d0dfbce63a89 492 /**
elmot 1:d0dfbce63a89 493 * @}
elmot 1:d0dfbce63a89 494 */
elmot 1:d0dfbce63a89 495
elmot 1:d0dfbce63a89 496 /* Exported macros -----------------------------------------------------------*/
elmot 1:d0dfbce63a89 497 /** @defgroup SMARTCARD_Exported_Macros SMARTCARD Exported Macros
elmot 1:d0dfbce63a89 498 * @{
elmot 1:d0dfbce63a89 499 */
elmot 1:d0dfbce63a89 500
elmot 1:d0dfbce63a89 501 /** @brief Reset SMARTCARD handle states.
elmot 1:d0dfbce63a89 502 * @param __HANDLE__: SMARTCARD handle.
elmot 1:d0dfbce63a89 503 * @retval None
elmot 1:d0dfbce63a89 504 */
elmot 1:d0dfbce63a89 505 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \
elmot 1:d0dfbce63a89 506 (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \
elmot 1:d0dfbce63a89 507 (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \
elmot 1:d0dfbce63a89 508 } while(0)
elmot 1:d0dfbce63a89 509
elmot 1:d0dfbce63a89 510 /** @brief Flush the Smartcard Data registers.
elmot 1:d0dfbce63a89 511 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 512 * @retval None
elmot 1:d0dfbce63a89 513 */
elmot 1:d0dfbce63a89 514 #define __HAL_SMARTCARD_FLUSH_DRREGISTER(__HANDLE__) \
elmot 1:d0dfbce63a89 515 do{ \
elmot 1:d0dfbce63a89 516 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_RXDATA_FLUSH_REQUEST); \
elmot 1:d0dfbce63a89 517 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_TXDATA_FLUSH_REQUEST); \
elmot 1:d0dfbce63a89 518 } while(0)
elmot 1:d0dfbce63a89 519
elmot 1:d0dfbce63a89 520 /** @brief Clear the specified SMARTCARD pending flag.
elmot 1:d0dfbce63a89 521 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 522 * @param __FLAG__: specifies the flag to check.
elmot 1:d0dfbce63a89 523 * This parameter can be any combination of the following values:
elmot 1:d0dfbce63a89 524 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag
elmot 1:d0dfbce63a89 525 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag
elmot 1:d0dfbce63a89 526 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag
elmot 1:d0dfbce63a89 527 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag
elmot 1:d0dfbce63a89 528 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detected clear flag
elmot 1:d0dfbce63a89 529 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag
elmot 1:d0dfbce63a89 530 @if STM32L443xx
elmot 1:d0dfbce63a89 531 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag (when flag available)
elmot 1:d0dfbce63a89 532 @endif
elmot 1:d0dfbce63a89 533 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag
elmot 1:d0dfbce63a89 534 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag
elmot 1:d0dfbce63a89 535 * @retval None
elmot 1:d0dfbce63a89 536 */
elmot 1:d0dfbce63a89 537 #define __HAL_SMARTCARD_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
elmot 1:d0dfbce63a89 538
elmot 1:d0dfbce63a89 539 /** @brief Clear the SMARTCARD PE pending flag.
elmot 1:d0dfbce63a89 540 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 541 * @retval None
elmot 1:d0dfbce63a89 542 */
elmot 1:d0dfbce63a89 543 #define __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_PEF)
elmot 1:d0dfbce63a89 544
elmot 1:d0dfbce63a89 545
elmot 1:d0dfbce63a89 546 /** @brief Clear the SMARTCARD FE pending flag.
elmot 1:d0dfbce63a89 547 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 548 * @retval None
elmot 1:d0dfbce63a89 549 */
elmot 1:d0dfbce63a89 550 #define __HAL_SMARTCARD_CLEAR_FEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_FEF)
elmot 1:d0dfbce63a89 551
elmot 1:d0dfbce63a89 552 /** @brief Clear the SMARTCARD NE pending flag.
elmot 1:d0dfbce63a89 553 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 554 * @retval None
elmot 1:d0dfbce63a89 555 */
elmot 1:d0dfbce63a89 556 #define __HAL_SMARTCARD_CLEAR_NEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_NEF)
elmot 1:d0dfbce63a89 557
elmot 1:d0dfbce63a89 558 /** @brief Clear the SMARTCARD ORE pending flag.
elmot 1:d0dfbce63a89 559 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 560 * @retval None
elmot 1:d0dfbce63a89 561 */
elmot 1:d0dfbce63a89 562 #define __HAL_SMARTCARD_CLEAR_OREFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_OREF)
elmot 1:d0dfbce63a89 563
elmot 1:d0dfbce63a89 564 /** @brief Clear the SMARTCARD IDLE pending flag.
elmot 1:d0dfbce63a89 565 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 566 * @retval None
elmot 1:d0dfbce63a89 567 */
elmot 1:d0dfbce63a89 568 #define __HAL_SMARTCARD_CLEAR_IDLEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_IDLEF)
elmot 1:d0dfbce63a89 569
elmot 1:d0dfbce63a89 570 /** @brief Check whether the specified Smartcard flag is set or not.
elmot 1:d0dfbce63a89 571 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 572 * @param __FLAG__: specifies the flag to check.
elmot 1:d0dfbce63a89 573 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 574 @if STM32L443xx
elmot 1:d0dfbce63a89 575 * @arg @ref SMARTCARD_FLAG_TCBGT Transmission complete before guard time flag (when flag available)
elmot 1:d0dfbce63a89 576 @endif
elmot 1:d0dfbce63a89 577 * @arg @ref SMARTCARD_FLAG_REACK Receive enable acknowledge flag
elmot 1:d0dfbce63a89 578 * @arg @ref SMARTCARD_FLAG_TEACK Transmit enable acknowledge flag
elmot 1:d0dfbce63a89 579 * @arg @ref SMARTCARD_FLAG_BUSY Busy flag
elmot 1:d0dfbce63a89 580 * @arg @ref SMARTCARD_FLAG_EOBF End of block flag
elmot 1:d0dfbce63a89 581 * @arg @ref SMARTCARD_FLAG_RTOF Receiver timeout flag
elmot 1:d0dfbce63a89 582 * @arg @ref SMARTCARD_FLAG_TXE Transmit data register empty flag
elmot 1:d0dfbce63a89 583 * @arg @ref SMARTCARD_FLAG_TC Transmission complete flag
elmot 1:d0dfbce63a89 584 * @arg @ref SMARTCARD_FLAG_RXNE Receive data register not empty flag
elmot 1:d0dfbce63a89 585 * @arg @ref SMARTCARD_FLAG_IDLE Idle line detection flag
elmot 1:d0dfbce63a89 586 * @arg @ref SMARTCARD_FLAG_ORE Overrun error flag
elmot 1:d0dfbce63a89 587 * @arg @ref SMARTCARD_FLAG_NE Noise error flag
elmot 1:d0dfbce63a89 588 * @arg @ref SMARTCARD_FLAG_FE Framing error flag
elmot 1:d0dfbce63a89 589 * @arg @ref SMARTCARD_FLAG_PE Parity error flag
elmot 1:d0dfbce63a89 590 * @retval The new state of __FLAG__ (TRUE or FALSE).
elmot 1:d0dfbce63a89 591 */
elmot 1:d0dfbce63a89 592 #define __HAL_SMARTCARD_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
elmot 1:d0dfbce63a89 593
elmot 1:d0dfbce63a89 594
elmot 1:d0dfbce63a89 595 /** @brief Enable the specified SmartCard interrupt.
elmot 1:d0dfbce63a89 596 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 597 * @param __INTERRUPT__: specifies the SMARTCARD interrupt to enable.
elmot 1:d0dfbce63a89 598 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 599 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
elmot 1:d0dfbce63a89 600 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
elmot 1:d0dfbce63a89 601 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
elmot 1:d0dfbce63a89 602 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
elmot 1:d0dfbce63a89 603 @if STM32L443xx
elmot 1:d0dfbce63a89 604 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
elmot 1:d0dfbce63a89 605 @endif
elmot 1:d0dfbce63a89 606 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
elmot 1:d0dfbce63a89 607 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
elmot 1:d0dfbce63a89 608 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
elmot 1:d0dfbce63a89 609 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error)
elmot 1:d0dfbce63a89 610 * @retval None
elmot 1:d0dfbce63a89 611 */
elmot 1:d0dfbce63a89 612 #define __HAL_SMARTCARD_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
elmot 1:d0dfbce63a89 613 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
elmot 1:d0dfbce63a89 614 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))))
elmot 1:d0dfbce63a89 615
elmot 1:d0dfbce63a89 616 /** @brief Disable the specified SmartCard interrupt.
elmot 1:d0dfbce63a89 617 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 618 * @param __INTERRUPT__: specifies the SMARTCARD interrupt to disable.
elmot 1:d0dfbce63a89 619 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 620 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
elmot 1:d0dfbce63a89 621 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
elmot 1:d0dfbce63a89 622 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
elmot 1:d0dfbce63a89 623 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
elmot 1:d0dfbce63a89 624 @if STM32L443xx
elmot 1:d0dfbce63a89 625 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
elmot 1:d0dfbce63a89 626 @endif
elmot 1:d0dfbce63a89 627 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
elmot 1:d0dfbce63a89 628 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
elmot 1:d0dfbce63a89 629 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
elmot 1:d0dfbce63a89 630 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error)
elmot 1:d0dfbce63a89 631 * @retval None
elmot 1:d0dfbce63a89 632 */
elmot 1:d0dfbce63a89 633 #define __HAL_SMARTCARD_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
elmot 1:d0dfbce63a89 634 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
elmot 1:d0dfbce63a89 635 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))))
elmot 1:d0dfbce63a89 636
elmot 1:d0dfbce63a89 637
elmot 1:d0dfbce63a89 638 /** @brief Check whether the specified SmartCard interrupt has occurred or not.
elmot 1:d0dfbce63a89 639 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 640 * @param __IT__: specifies the SMARTCARD interrupt to check.
elmot 1:d0dfbce63a89 641 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 642 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
elmot 1:d0dfbce63a89 643 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
elmot 1:d0dfbce63a89 644 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
elmot 1:d0dfbce63a89 645 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
elmot 1:d0dfbce63a89 646 @if STM32L443xx
elmot 1:d0dfbce63a89 647 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
elmot 1:d0dfbce63a89 648 @endif
elmot 1:d0dfbce63a89 649 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
elmot 1:d0dfbce63a89 650 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
elmot 1:d0dfbce63a89 651 * @arg @ref SMARTCARD_IT_ORE Overrun error interrupt
elmot 1:d0dfbce63a89 652 * @arg @ref SMARTCARD_IT_NE Noise error interrupt
elmot 1:d0dfbce63a89 653 * @arg @ref SMARTCARD_IT_FE Framing error interrupt
elmot 1:d0dfbce63a89 654 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
elmot 1:d0dfbce63a89 655 * @retval The new state of __IT__ (TRUE or FALSE).
elmot 1:d0dfbce63a89 656 */
elmot 1:d0dfbce63a89 657 #define __HAL_SMARTCARD_GET_IT(__HANDLE__, __IT__) ((__HANDLE__)->Instance->ISR & ((uint32_t)1 << ((__IT__)>> 0x08)))
elmot 1:d0dfbce63a89 658
elmot 1:d0dfbce63a89 659 /** @brief Check whether the specified SmartCard interrupt source is enabled or not.
elmot 1:d0dfbce63a89 660 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 661 * @param __IT__: specifies the SMARTCARD interrupt source to check.
elmot 1:d0dfbce63a89 662 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 663 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
elmot 1:d0dfbce63a89 664 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
elmot 1:d0dfbce63a89 665 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
elmot 1:d0dfbce63a89 666 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
elmot 1:d0dfbce63a89 667 @if STM32L443xx
elmot 1:d0dfbce63a89 668 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
elmot 1:d0dfbce63a89 669 @endif
elmot 1:d0dfbce63a89 670 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
elmot 1:d0dfbce63a89 671 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
elmot 1:d0dfbce63a89 672 * @arg @ref SMARTCARD_IT_ERR Framing, overrun or noise error interrupt
elmot 1:d0dfbce63a89 673 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
elmot 1:d0dfbce63a89 674 * @retval The new state of __IT__ (TRUE or FALSE).
elmot 1:d0dfbce63a89 675 */
elmot 1:d0dfbce63a89 676 #define __HAL_SMARTCARD_GET_IT_SOURCE(__HANDLE__, __IT__) ((((((uint8_t)(__IT__)) >> 5U) == 1)? (__HANDLE__)->Instance->CR1 : \
elmot 1:d0dfbce63a89 677 (((((uint8_t)(__IT__)) >> 5U) == 2)? (__HANDLE__)->Instance->CR2 : \
elmot 1:d0dfbce63a89 678 (__HANDLE__)->Instance->CR3)) & ((uint32_t)1 << (((uint16_t)(__IT__)) & SMARTCARD_IT_MASK)))
elmot 1:d0dfbce63a89 679
elmot 1:d0dfbce63a89 680
elmot 1:d0dfbce63a89 681 /** @brief Clear the specified SMARTCARD ISR flag, in setting the proper ICR register flag.
elmot 1:d0dfbce63a89 682 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 683 * @param __IT_CLEAR__: specifies the interrupt clear register flag that needs to be set
elmot 1:d0dfbce63a89 684 * to clear the corresponding interrupt.
elmot 1:d0dfbce63a89 685 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 686 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag
elmot 1:d0dfbce63a89 687 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag
elmot 1:d0dfbce63a89 688 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag
elmot 1:d0dfbce63a89 689 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag
elmot 1:d0dfbce63a89 690 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detection clear flag
elmot 1:d0dfbce63a89 691 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag
elmot 1:d0dfbce63a89 692 @if STM32L443xx
elmot 1:d0dfbce63a89 693 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag (when flag available)
elmot 1:d0dfbce63a89 694 @endif
elmot 1:d0dfbce63a89 695 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag
elmot 1:d0dfbce63a89 696 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag
elmot 1:d0dfbce63a89 697 * @retval None
elmot 1:d0dfbce63a89 698 */
elmot 1:d0dfbce63a89 699 #define __HAL_SMARTCARD_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR |= (uint32_t)(__IT_CLEAR__))
elmot 1:d0dfbce63a89 700
elmot 1:d0dfbce63a89 701 /** @brief Set a specific SMARTCARD request flag.
elmot 1:d0dfbce63a89 702 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 703 * @param __REQ__: specifies the request flag to set
elmot 1:d0dfbce63a89 704 * This parameter can be one of the following values:
elmot 1:d0dfbce63a89 705 * @arg @ref SMARTCARD_RXDATA_FLUSH_REQUEST Receive data flush Request
elmot 1:d0dfbce63a89 706 * @arg @ref SMARTCARD_TXDATA_FLUSH_REQUEST Transmit data flush Request
elmot 1:d0dfbce63a89 707 *
elmot 1:d0dfbce63a89 708 * @retval None
elmot 1:d0dfbce63a89 709 */
elmot 1:d0dfbce63a89 710 #define __HAL_SMARTCARD_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__))
elmot 1:d0dfbce63a89 711
elmot 1:d0dfbce63a89 712 /** @brief Enable the SMARTCARD one bit sample method.
elmot 1:d0dfbce63a89 713 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 714 * @retval None
elmot 1:d0dfbce63a89 715 */
elmot 1:d0dfbce63a89 716 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
elmot 1:d0dfbce63a89 717
elmot 1:d0dfbce63a89 718 /** @brief Disable the SMARTCARD one bit sample method.
elmot 1:d0dfbce63a89 719 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 720 * @retval None
elmot 1:d0dfbce63a89 721 */
elmot 1:d0dfbce63a89 722 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT))
elmot 1:d0dfbce63a89 723
elmot 1:d0dfbce63a89 724 /** @brief Enable the USART associated to the SMARTCARD Handle.
elmot 1:d0dfbce63a89 725 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 726 * @retval None
elmot 1:d0dfbce63a89 727 */
elmot 1:d0dfbce63a89 728 #define __HAL_SMARTCARD_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
elmot 1:d0dfbce63a89 729
elmot 1:d0dfbce63a89 730 /** @brief Disable the USART associated to the SMARTCARD Handle
elmot 1:d0dfbce63a89 731 * @param __HANDLE__: specifies the SMARTCARD Handle.
elmot 1:d0dfbce63a89 732 * @retval None
elmot 1:d0dfbce63a89 733 */
elmot 1:d0dfbce63a89 734 #define __HAL_SMARTCARD_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
elmot 1:d0dfbce63a89 735
elmot 1:d0dfbce63a89 736 /**
elmot 1:d0dfbce63a89 737 * @}
elmot 1:d0dfbce63a89 738 */
elmot 1:d0dfbce63a89 739
elmot 1:d0dfbce63a89 740 /* Private macros -------------------------------------------------------------*/
elmot 1:d0dfbce63a89 741 /** @defgroup SMARTCARD_Private_Macros SMARTCARD Private Macros
elmot 1:d0dfbce63a89 742 * @{
elmot 1:d0dfbce63a89 743 */
elmot 1:d0dfbce63a89 744
elmot 1:d0dfbce63a89 745 /** @brief Check the Baud rate range.
elmot 1:d0dfbce63a89 746 * @note The maximum Baud Rate is derived from the maximum clock on L4 (80 MHz)
elmot 1:d0dfbce63a89 747 * divided by the oversampling used on the SMARTCARD (i.e. 16).
elmot 1:d0dfbce63a89 748 * @param __BAUDRATE__: Baud rate set by the configuration function.
elmot 1:d0dfbce63a89 749 * @retval Test result (TRUE or FALSE)
elmot 1:d0dfbce63a89 750 */
elmot 1:d0dfbce63a89 751 #define IS_SMARTCARD_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 5000001)
elmot 1:d0dfbce63a89 752
elmot 1:d0dfbce63a89 753 /** @brief Check the block length range.
elmot 1:d0dfbce63a89 754 * @note The maximum SMARTCARD block length is 0xFF.
elmot 1:d0dfbce63a89 755 * @param __LENGTH__: block length.
elmot 1:d0dfbce63a89 756 * @retval Test result (TRUE or FALSE)
elmot 1:d0dfbce63a89 757 */
elmot 1:d0dfbce63a89 758 #define IS_SMARTCARD_BLOCKLENGTH(__LENGTH__) ((__LENGTH__) <= 0xFF)
elmot 1:d0dfbce63a89 759
elmot 1:d0dfbce63a89 760 /** @brief Check the receiver timeout value.
elmot 1:d0dfbce63a89 761 * @note The maximum SMARTCARD receiver timeout value is 0xFFFFFF.
elmot 1:d0dfbce63a89 762 * @param __TIMEOUTVALUE__: receiver timeout value.
elmot 1:d0dfbce63a89 763 * @retval Test result (TRUE or FALSE)
elmot 1:d0dfbce63a89 764 */
elmot 1:d0dfbce63a89 765 #define IS_SMARTCARD_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFF)
elmot 1:d0dfbce63a89 766
elmot 1:d0dfbce63a89 767 /** @brief Check the SMARTCARD autoretry counter value.
elmot 1:d0dfbce63a89 768 * @note The maximum number of retransmissions is 0x7.
elmot 1:d0dfbce63a89 769 * @param __COUNT__: number of retransmissions.
elmot 1:d0dfbce63a89 770 * @retval Test result (TRUE or FALSE)
elmot 1:d0dfbce63a89 771 */
elmot 1:d0dfbce63a89 772 #define IS_SMARTCARD_AUTORETRY_COUNT(__COUNT__) ((__COUNT__) <= 0x7)
elmot 1:d0dfbce63a89 773
elmot 1:d0dfbce63a89 774 /**
elmot 1:d0dfbce63a89 775 * @brief Ensure that SMARTCARD frame length is valid.
elmot 1:d0dfbce63a89 776 * @param __LENGTH__: SMARTCARD frame length.
elmot 1:d0dfbce63a89 777 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
elmot 1:d0dfbce63a89 778 */
elmot 1:d0dfbce63a89 779 #define IS_SMARTCARD_WORD_LENGTH(__LENGTH__) ((__LENGTH__) == SMARTCARD_WORDLENGTH_9B)
elmot 1:d0dfbce63a89 780
elmot 1:d0dfbce63a89 781 /**
elmot 1:d0dfbce63a89 782 * @brief Ensure that SMARTCARD frame number of stop bits is valid.
elmot 1:d0dfbce63a89 783 * @param __STOPBITS__: SMARTCARD frame number of stop bits.
elmot 1:d0dfbce63a89 784 * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid)
elmot 1:d0dfbce63a89 785 */
elmot 1:d0dfbce63a89 786 #define IS_SMARTCARD_STOPBITS(__STOPBITS__) (((__STOPBITS__) == SMARTCARD_STOPBITS_0_5) ||\
elmot 1:d0dfbce63a89 787 ((__STOPBITS__) == SMARTCARD_STOPBITS_1_5))
elmot 1:d0dfbce63a89 788
elmot 1:d0dfbce63a89 789 /**
elmot 1:d0dfbce63a89 790 * @brief Ensure that SMARTCARD frame parity is valid.
elmot 1:d0dfbce63a89 791 * @param __PARITY__: SMARTCARD frame parity.
elmot 1:d0dfbce63a89 792 * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid)
elmot 1:d0dfbce63a89 793 */
elmot 1:d0dfbce63a89 794 #define IS_SMARTCARD_PARITY(__PARITY__) (((__PARITY__) == SMARTCARD_PARITY_EVEN) || \
elmot 1:d0dfbce63a89 795 ((__PARITY__) == SMARTCARD_PARITY_ODD))
elmot 1:d0dfbce63a89 796
elmot 1:d0dfbce63a89 797 /**
elmot 1:d0dfbce63a89 798 * @brief Ensure that SMARTCARD communication mode is valid.
elmot 1:d0dfbce63a89 799 * @param __MODE__: SMARTCARD communication mode.
elmot 1:d0dfbce63a89 800 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
elmot 1:d0dfbce63a89 801 */
elmot 1:d0dfbce63a89 802 #define IS_SMARTCARD_MODE(__MODE__) ((((__MODE__) & (uint16_t)0xFFF3) == 0x00) && ((__MODE__) != (uint16_t)0x00))
elmot 1:d0dfbce63a89 803
elmot 1:d0dfbce63a89 804 /**
elmot 1:d0dfbce63a89 805 * @brief Ensure that SMARTCARD frame polarity is valid.
elmot 1:d0dfbce63a89 806 * @param __CPOL__: SMARTCARD frame polarity.
elmot 1:d0dfbce63a89 807 * @retval SET (__CPOL__ is valid) or RESET (__CPOL__ is invalid)
elmot 1:d0dfbce63a89 808 */
elmot 1:d0dfbce63a89 809 #define IS_SMARTCARD_POLARITY(__CPOL__) (((__CPOL__) == SMARTCARD_POLARITY_LOW) || ((__CPOL__) == SMARTCARD_POLARITY_HIGH))
elmot 1:d0dfbce63a89 810
elmot 1:d0dfbce63a89 811 /**
elmot 1:d0dfbce63a89 812 * @brief Ensure that SMARTCARD frame phase is valid.
elmot 1:d0dfbce63a89 813 * @param __CPHA__: SMARTCARD frame phase.
elmot 1:d0dfbce63a89 814 * @retval SET (__CPHA__ is valid) or RESET (__CPHA__ is invalid)
elmot 1:d0dfbce63a89 815 */
elmot 1:d0dfbce63a89 816 #define IS_SMARTCARD_PHASE(__CPHA__) (((__CPHA__) == SMARTCARD_PHASE_1EDGE) || ((__CPHA__) == SMARTCARD_PHASE_2EDGE))
elmot 1:d0dfbce63a89 817
elmot 1:d0dfbce63a89 818 /**
elmot 1:d0dfbce63a89 819 * @brief Ensure that SMARTCARD frame last bit clock pulse setting is valid.
elmot 1:d0dfbce63a89 820 * @param __LASTBIT__: SMARTCARD frame last bit clock pulse setting.
elmot 1:d0dfbce63a89 821 * @retval SET (__LASTBIT__ is valid) or RESET (__LASTBIT__ is invalid)
elmot 1:d0dfbce63a89 822 */
elmot 1:d0dfbce63a89 823 #define IS_SMARTCARD_LASTBIT(__LASTBIT__) (((__LASTBIT__) == SMARTCARD_LASTBIT_DISABLE) || \
elmot 1:d0dfbce63a89 824 ((__LASTBIT__) == SMARTCARD_LASTBIT_ENABLE))
elmot 1:d0dfbce63a89 825
elmot 1:d0dfbce63a89 826 /**
elmot 1:d0dfbce63a89 827 * @brief Ensure that SMARTCARD frame sampling is valid.
elmot 1:d0dfbce63a89 828 * @param __ONEBIT__: SMARTCARD frame sampling.
elmot 1:d0dfbce63a89 829 * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid)
elmot 1:d0dfbce63a89 830 */
elmot 1:d0dfbce63a89 831 #define IS_SMARTCARD_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_DISABLE) || \
elmot 1:d0dfbce63a89 832 ((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_ENABLE))
elmot 1:d0dfbce63a89 833
elmot 1:d0dfbce63a89 834 /**
elmot 1:d0dfbce63a89 835 * @brief Ensure that SMARTCARD NACK transmission setting is valid.
elmot 1:d0dfbce63a89 836 * @param __NACK__: SMARTCARD NACK transmission setting.
elmot 1:d0dfbce63a89 837 * @retval SET (__NACK__ is valid) or RESET (__NACK__ is invalid)
elmot 1:d0dfbce63a89 838 */
elmot 1:d0dfbce63a89 839 #define IS_SMARTCARD_NACK(__NACK__) (((__NACK__) == SMARTCARD_NACK_ENABLE) || \
elmot 1:d0dfbce63a89 840 ((__NACK__) == SMARTCARD_NACK_DISABLE))
elmot 1:d0dfbce63a89 841
elmot 1:d0dfbce63a89 842 /**
elmot 1:d0dfbce63a89 843 * @brief Ensure that SMARTCARD receiver timeout setting is valid.
elmot 1:d0dfbce63a89 844 * @param __TIMEOUT__: SMARTCARD receiver timeout setting.
elmot 1:d0dfbce63a89 845 * @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid)
elmot 1:d0dfbce63a89 846 */
elmot 1:d0dfbce63a89 847 #define IS_SMARTCARD_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == SMARTCARD_TIMEOUT_DISABLE) || \
elmot 1:d0dfbce63a89 848 ((__TIMEOUT__) == SMARTCARD_TIMEOUT_ENABLE))
elmot 1:d0dfbce63a89 849
elmot 1:d0dfbce63a89 850 /**
elmot 1:d0dfbce63a89 851 * @brief Ensure that SMARTCARD advanced features initialization is valid.
elmot 1:d0dfbce63a89 852 * @param __INIT__: SMARTCARD advanced features initialization.
elmot 1:d0dfbce63a89 853 * @retval SET (__INIT__ is valid) or RESET (__INIT__ is invalid)
elmot 1:d0dfbce63a89 854 */
elmot 1:d0dfbce63a89 855 #define IS_SMARTCARD_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (SMARTCARD_ADVFEATURE_NO_INIT | \
elmot 1:d0dfbce63a89 856 SMARTCARD_ADVFEATURE_TXINVERT_INIT | \
elmot 1:d0dfbce63a89 857 SMARTCARD_ADVFEATURE_RXINVERT_INIT | \
elmot 1:d0dfbce63a89 858 SMARTCARD_ADVFEATURE_DATAINVERT_INIT | \
elmot 1:d0dfbce63a89 859 SMARTCARD_ADVFEATURE_SWAP_INIT | \
elmot 1:d0dfbce63a89 860 SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT | \
elmot 1:d0dfbce63a89 861 SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT | \
elmot 1:d0dfbce63a89 862 SMARTCARD_ADVFEATURE_MSBFIRST_INIT))
elmot 1:d0dfbce63a89 863
elmot 1:d0dfbce63a89 864 /**
elmot 1:d0dfbce63a89 865 * @brief Ensure that SMARTCARD frame TX inversion setting is valid.
elmot 1:d0dfbce63a89 866 * @param __TXINV__: SMARTCARD frame TX inversion setting.
elmot 1:d0dfbce63a89 867 * @retval SET (__TXINV__ is valid) or RESET (__TXINV__ is invalid)
elmot 1:d0dfbce63a89 868 */
elmot 1:d0dfbce63a89 869 #define IS_SMARTCARD_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_DISABLE) || \
elmot 1:d0dfbce63a89 870 ((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_ENABLE))
elmot 1:d0dfbce63a89 871
elmot 1:d0dfbce63a89 872 /**
elmot 1:d0dfbce63a89 873 * @brief Ensure that SMARTCARD frame RX inversion setting is valid.
elmot 1:d0dfbce63a89 874 * @param __RXINV__: SMARTCARD frame RX inversion setting.
elmot 1:d0dfbce63a89 875 * @retval SET (__RXINV__ is valid) or RESET (__RXINV__ is invalid)
elmot 1:d0dfbce63a89 876 */
elmot 1:d0dfbce63a89 877 #define IS_SMARTCARD_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_DISABLE) || \
elmot 1:d0dfbce63a89 878 ((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_ENABLE))
elmot 1:d0dfbce63a89 879
elmot 1:d0dfbce63a89 880 /**
elmot 1:d0dfbce63a89 881 * @brief Ensure that SMARTCARD frame data inversion setting is valid.
elmot 1:d0dfbce63a89 882 * @param __DATAINV__: SMARTCARD frame data inversion setting.
elmot 1:d0dfbce63a89 883 * @retval SET (__DATAINV__ is valid) or RESET (__DATAINV__ is invalid)
elmot 1:d0dfbce63a89 884 */
elmot 1:d0dfbce63a89 885 #define IS_SMARTCARD_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_DISABLE) || \
elmot 1:d0dfbce63a89 886 ((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_ENABLE))
elmot 1:d0dfbce63a89 887
elmot 1:d0dfbce63a89 888 /**
elmot 1:d0dfbce63a89 889 * @brief Ensure that SMARTCARD frame RX/TX pins swap setting is valid.
elmot 1:d0dfbce63a89 890 * @param __SWAP__: SMARTCARD frame RX/TX pins swap setting.
elmot 1:d0dfbce63a89 891 * @retval SET (__SWAP__ is valid) or RESET (__SWAP__ is invalid)
elmot 1:d0dfbce63a89 892 */
elmot 1:d0dfbce63a89 893 #define IS_SMARTCARD_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_DISABLE) || \
elmot 1:d0dfbce63a89 894 ((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_ENABLE))
elmot 1:d0dfbce63a89 895
elmot 1:d0dfbce63a89 896 /**
elmot 1:d0dfbce63a89 897 * @brief Ensure that SMARTCARD frame overrun setting is valid.
elmot 1:d0dfbce63a89 898 * @param __OVERRUN__: SMARTCARD frame overrun setting.
elmot 1:d0dfbce63a89 899 * @retval SET (__OVERRUN__ is valid) or RESET (__OVERRUN__ is invalid)
elmot 1:d0dfbce63a89 900 */
elmot 1:d0dfbce63a89 901 #define IS_SMARTCARD_OVERRUN(__OVERRUN__) (((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_ENABLE) || \
elmot 1:d0dfbce63a89 902 ((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_DISABLE))
elmot 1:d0dfbce63a89 903
elmot 1:d0dfbce63a89 904 /**
elmot 1:d0dfbce63a89 905 * @brief Ensure that SMARTCARD DMA enabling or disabling on error setting is valid.
elmot 1:d0dfbce63a89 906 * @param __DMA__: SMARTCARD DMA enabling or disabling on error setting.
elmot 1:d0dfbce63a89 907 * @retval SET (__DMA__ is valid) or RESET (__DMA__ is invalid)
elmot 1:d0dfbce63a89 908 */
elmot 1:d0dfbce63a89 909 #define IS_SMARTCARD_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR) || \
elmot 1:d0dfbce63a89 910 ((__DMA__) == SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR))
elmot 1:d0dfbce63a89 911
elmot 1:d0dfbce63a89 912 /**
elmot 1:d0dfbce63a89 913 * @brief Ensure that SMARTCARD frame MSB first setting is valid.
elmot 1:d0dfbce63a89 914 * @param __MSBFIRST__: SMARTCARD frame MSB first setting.
elmot 1:d0dfbce63a89 915 * @retval SET (__MSBFIRST__ is valid) or RESET (__MSBFIRST__ is invalid)
elmot 1:d0dfbce63a89 916 */
elmot 1:d0dfbce63a89 917 #define IS_SMARTCARD_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE) || \
elmot 1:d0dfbce63a89 918 ((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE))
elmot 1:d0dfbce63a89 919
elmot 1:d0dfbce63a89 920 /**
elmot 1:d0dfbce63a89 921 * @brief Ensure that SMARTCARD request parameter is valid.
elmot 1:d0dfbce63a89 922 * @param __PARAM__: SMARTCARD request parameter.
elmot 1:d0dfbce63a89 923 * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid)
elmot 1:d0dfbce63a89 924 */
elmot 1:d0dfbce63a89 925 #define IS_SMARTCARD_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == SMARTCARD_RXDATA_FLUSH_REQUEST) || \
elmot 1:d0dfbce63a89 926 ((__PARAM__) == SMARTCARD_TXDATA_FLUSH_REQUEST))
elmot 1:d0dfbce63a89 927
elmot 1:d0dfbce63a89 928 /**
elmot 1:d0dfbce63a89 929 * @}
elmot 1:d0dfbce63a89 930 */
elmot 1:d0dfbce63a89 931
elmot 1:d0dfbce63a89 932 /* Include SMARTCARD HAL Extended module */
elmot 1:d0dfbce63a89 933 #include "stm32l4xx_hal_smartcard_ex.h"
elmot 1:d0dfbce63a89 934
elmot 1:d0dfbce63a89 935
elmot 1:d0dfbce63a89 936 /* Exported functions --------------------------------------------------------*/
elmot 1:d0dfbce63a89 937 /** @addtogroup SMARTCARD_Exported_Functions
elmot 1:d0dfbce63a89 938 * @{
elmot 1:d0dfbce63a89 939 */
elmot 1:d0dfbce63a89 940
elmot 1:d0dfbce63a89 941 /* Initialization and de-initialization functions ****************************/
elmot 1:d0dfbce63a89 942 /** @addtogroup SMARTCARD_Exported_Functions_Group1
elmot 1:d0dfbce63a89 943 * @{
elmot 1:d0dfbce63a89 944 */
elmot 1:d0dfbce63a89 945
elmot 1:d0dfbce63a89 946 HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 947 HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 948 void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 949 void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 950
elmot 1:d0dfbce63a89 951 /**
elmot 1:d0dfbce63a89 952 * @}
elmot 1:d0dfbce63a89 953 */
elmot 1:d0dfbce63a89 954
elmot 1:d0dfbce63a89 955 /* IO operation functions *****************************************************/
elmot 1:d0dfbce63a89 956 /** @addtogroup SMARTCARD_Exported_Functions_Group2
elmot 1:d0dfbce63a89 957 * @{
elmot 1:d0dfbce63a89 958 */
elmot 1:d0dfbce63a89 959
elmot 1:d0dfbce63a89 960 HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout);
elmot 1:d0dfbce63a89 961 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout);
elmot 1:d0dfbce63a89 962 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
elmot 1:d0dfbce63a89 963 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
elmot 1:d0dfbce63a89 964 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
elmot 1:d0dfbce63a89 965 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
elmot 1:d0dfbce63a89 966 void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 967 void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 968 void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 969 void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 970
elmot 1:d0dfbce63a89 971 /**
elmot 1:d0dfbce63a89 972 * @}
elmot 1:d0dfbce63a89 973 */
elmot 1:d0dfbce63a89 974
elmot 1:d0dfbce63a89 975 /* Peripheral Control functions ***********************************************/
elmot 1:d0dfbce63a89 976 /* Peripheral State and Error functions ***************************************/
elmot 1:d0dfbce63a89 977 /** @addtogroup SMARTCARD_Exported_Functions_Group4
elmot 1:d0dfbce63a89 978 * @{
elmot 1:d0dfbce63a89 979 */
elmot 1:d0dfbce63a89 980
elmot 1:d0dfbce63a89 981 HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 982 uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard);
elmot 1:d0dfbce63a89 983
elmot 1:d0dfbce63a89 984 /**
elmot 1:d0dfbce63a89 985 * @}
elmot 1:d0dfbce63a89 986 */
elmot 1:d0dfbce63a89 987
elmot 1:d0dfbce63a89 988 /**
elmot 1:d0dfbce63a89 989 * @}
elmot 1:d0dfbce63a89 990 */
elmot 1:d0dfbce63a89 991
elmot 1:d0dfbce63a89 992 /**
elmot 1:d0dfbce63a89 993 * @}
elmot 1:d0dfbce63a89 994 */
elmot 1:d0dfbce63a89 995
elmot 1:d0dfbce63a89 996 /**
elmot 1:d0dfbce63a89 997 * @}
elmot 1:d0dfbce63a89 998 */
elmot 1:d0dfbce63a89 999
elmot 1:d0dfbce63a89 1000 #ifdef __cplusplus
elmot 1:d0dfbce63a89 1001 }
elmot 1:d0dfbce63a89 1002 #endif
elmot 1:d0dfbce63a89 1003
elmot 1:d0dfbce63a89 1004 #endif /* __STM32L4xx_HAL_SMARTCARD_H */
elmot 1:d0dfbce63a89 1005
elmot 1:d0dfbce63a89 1006 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/