The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
<>
Date:
Wed Apr 12 16:07:08 2017 +0100
Revision:
140:97feb9bacc10
Parent:
128:9bcdf88f62b0
Child:
145:64910690c574
Release 140 of the mbed library

Ports for Upcoming Targets

3841: Add nRf52840 target https://github.com/ARMmbed/mbed-os/pull/3841
3992: Introducing UBLOX_C030 platform. https://github.com/ARMmbed/mbed-os/pull/3992

Fixes and Changes

3951: [NUCLEO_F303ZE] Correct ARDUINO pin https://github.com/ARMmbed/mbed-os/pull/3951
4021: Fixing a macro to detect when RTOS was in use for the NRF52840_DK https://github.com/ARMmbed/mbed-os/pull/4021
3979: KW24D: Add missing SPI defines and Arduino connector definitions https://github.com/ARMmbed/mbed-os/pull/3979
3990: UBLOX_C027: construct a ticker-based wait, rather than calling wait_ms(), in the https://github.com/ARMmbed/mbed-os/pull/3990
4003: Fixed OBOE in async serial tx for NRF52 target, fixes #4002 https://github.com/ARMmbed/mbed-os/pull/4003
4012: STM32: Correct I2C master error handling https://github.com/ARMmbed/mbed-os/pull/4012
4020: NUCLEO_L011K4 remove unsupported tool chain files https://github.com/ARMmbed/mbed-os/pull/4020
4065: K66F: Move bss section to m_data_2 Section https://github.com/ARMmbed/mbed-os/pull/4065
4014: Issue 3763: Reduce heap allocation in the GCC linker file https://github.com/ARMmbed/mbed-os/pull/4014
4030: [STM32L0] reduce IAR heap and stack size for small targets https://github.com/ARMmbed/mbed-os/pull/4030
4109: NUCLEO_L476RG : minor serial pin update https://github.com/ARMmbed/mbed-os/pull/4109
3982: Ticker - kl25z bugfix for handling events in the past https://github.com/ARMmbed/mbed-os/pull/3982

Who changed what in which revision?

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