L4 HAL Drivers

Committer:
EricLew
Date:
Mon Nov 02 19:37:23 2015 +0000
Revision:
0:80ee8f3b695e
Errors are with definitions of LCD and QSPI functions. I believe all .h and .c files are  uploaded, but there may need to be certain functions called.

Who changed what in which revision?

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