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