STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_smartcard.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_SMARTCARD_H
22 #define STM32L4xx_HAL_SMARTCARD_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
47 typedef struct
48 {
49  uint32_t BaudRate;
54  uint32_t WordLength;
57  uint32_t StopBits;
60  uint16_t Parity;
66  uint16_t Mode;
69  uint16_t CLKPolarity;
72  uint16_t CLKPhase;
75  uint16_t CLKLastBit;
79  uint16_t OneBitSampling;
83  uint8_t Prescaler;
87  uint8_t GuardTime;
89  uint16_t NACKEnable;
93  uint32_t TimeOutEnable;
96  uint32_t TimeOutValue;
100  uint8_t BlockLength;
103  uint8_t AutoRetryCount;
108 #if defined(USART_PRESC_PRESCALER)
109  uint32_t ClockPrescaler;
112 #endif /* USART_PRESC_PRESCALER */
114 
118 typedef struct
119 {
120  uint32_t AdvFeatureInit;
124  uint32_t TxPinLevelInvert;
127  uint32_t RxPinLevelInvert;
130  uint32_t DataInvert;
134  uint32_t Swap;
137  uint32_t OverrunDisable;
143  uint32_t MSBFirst;
150 
190 typedef uint32_t HAL_SMARTCARD_StateTypeDef;
191 
196 {
197  USART_TypeDef *Instance;
203  uint8_t *pTxBuffPtr;
205  uint16_t TxXferSize;
207  __IO uint16_t TxXferCount;
209  uint8_t *pRxBuffPtr;
211  uint16_t RxXferSize;
213  __IO uint16_t RxXferCount;
215 #if defined(USART_CR1_FIFOEN)
216  uint16_t NbRxDataToProcess;
218  uint16_t NbTxDataToProcess;
220  uint32_t FifoMode;
222 #endif /* USART_CR1_FIFOEN */
223 
224  void (*RxISR)(struct __SMARTCARD_HandleTypeDef *huart);
226  void (*TxISR)(struct __SMARTCARD_HandleTypeDef *huart);
234  __IO HAL_SMARTCARD_StateTypeDef gState;
238  __IO HAL_SMARTCARD_StateTypeDef RxState;
241  __IO uint32_t ErrorCode;
243 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
244  void (* TxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
246  void (* RxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
248  void (* ErrorCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
250  void (* AbortCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
256 #if defined(USART_CR1_FIFOEN)
257  void (* RxFifoFullCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
259  void (* TxFifoEmptyCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
261 #endif /* USART_CR1_FIFOEN */
262  void (* MspInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
264  void (* MspDeInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard);
265 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */
266 
268 
269 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
270 
273 typedef enum
274 {
281 #if defined(USART_CR1_FIFOEN)
284 #endif /* USART_CR1_FIFOEN */
285 
290 
296 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */
297 
301 typedef enum
302 {
310 
315 /* Exported constants --------------------------------------------------------*/
323 #define HAL_SMARTCARD_STATE_RESET 0x00000000U
325 #define HAL_SMARTCARD_STATE_READY 0x00000020U
327 #define HAL_SMARTCARD_STATE_BUSY 0x00000024U
329 #define HAL_SMARTCARD_STATE_BUSY_TX 0x00000021U
331 #define HAL_SMARTCARD_STATE_BUSY_RX 0x00000022U
333 #define HAL_SMARTCARD_STATE_BUSY_TX_RX 0x00000023U
336 #define HAL_SMARTCARD_STATE_TIMEOUT 0x000000A0U
338 #define HAL_SMARTCARD_STATE_ERROR 0x000000E0U
347 #define HAL_SMARTCARD_ERROR_NONE ((uint32_t)0x00000000U)
348 #define HAL_SMARTCARD_ERROR_PE ((uint32_t)0x00000001U)
349 #define HAL_SMARTCARD_ERROR_NE ((uint32_t)0x00000002U)
350 #define HAL_SMARTCARD_ERROR_FE ((uint32_t)0x00000004U)
351 #define HAL_SMARTCARD_ERROR_ORE ((uint32_t)0x00000008U)
352 #define HAL_SMARTCARD_ERROR_DMA ((uint32_t)0x00000010U)
353 #define HAL_SMARTCARD_ERROR_RTO ((uint32_t)0x00000020U)
354 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
355 #define HAL_SMARTCARD_ERROR_INVALID_CALLBACK ((uint32_t)0x00000040U)
356 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */
357 
364 #define SMARTCARD_WORDLENGTH_9B USART_CR1_M0
372 #define SMARTCARD_STOPBITS_0_5 USART_CR2_STOP_0
373 #define SMARTCARD_STOPBITS_1_5 USART_CR2_STOP
381 #define SMARTCARD_PARITY_EVEN USART_CR1_PCE
382 #define SMARTCARD_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS)
390 #define SMARTCARD_MODE_RX USART_CR1_RE
391 #define SMARTCARD_MODE_TX USART_CR1_TE
392 #define SMARTCARD_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE)
400 #define SMARTCARD_POLARITY_LOW 0x00000000U
401 #define SMARTCARD_POLARITY_HIGH USART_CR2_CPOL
409 #define SMARTCARD_PHASE_1EDGE 0x00000000U
410 #define SMARTCARD_PHASE_2EDGE USART_CR2_CPHA
418 #define SMARTCARD_LASTBIT_DISABLE 0x00000000U
419 #define SMARTCARD_LASTBIT_ENABLE USART_CR2_LBCL
427 #define SMARTCARD_ONE_BIT_SAMPLE_DISABLE 0x00000000U
428 #define SMARTCARD_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT
436 #define SMARTCARD_NACK_DISABLE 0x00000000U
437 #define SMARTCARD_NACK_ENABLE USART_CR3_NACK
445 #define SMARTCARD_TIMEOUT_DISABLE 0x00000000U
446 #define SMARTCARD_TIMEOUT_ENABLE USART_CR2_RTOEN
451 #if defined(USART_PRESC_PRESCALER)
452 
455 #define SMARTCARD_PRESCALER_DIV1 0x00000000U
456 #define SMARTCARD_PRESCALER_DIV2 0x00000001U
457 #define SMARTCARD_PRESCALER_DIV4 0x00000002U
458 #define SMARTCARD_PRESCALER_DIV6 0x00000003U
459 #define SMARTCARD_PRESCALER_DIV8 0x00000004U
460 #define SMARTCARD_PRESCALER_DIV10 0x00000005U
461 #define SMARTCARD_PRESCALER_DIV12 0x00000006U
462 #define SMARTCARD_PRESCALER_DIV16 0x00000007U
463 #define SMARTCARD_PRESCALER_DIV32 0x00000008U
464 #define SMARTCARD_PRESCALER_DIV64 0x00000009U
465 #define SMARTCARD_PRESCALER_DIV128 0x0000000AU
466 #define SMARTCARD_PRESCALER_DIV256 0x0000000BU
471 #endif /* USART_PRESC_PRESCALER */
472 
475 #define SMARTCARD_ADVFEATURE_TXINV_DISABLE 0x00000000U
476 #define SMARTCARD_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV
484 #define SMARTCARD_ADVFEATURE_RXINV_DISABLE 0x00000000U
485 #define SMARTCARD_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV
493 #define SMARTCARD_ADVFEATURE_DATAINV_DISABLE 0x00000000U
494 #define SMARTCARD_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV
502 #define SMARTCARD_ADVFEATURE_SWAP_DISABLE 0x00000000U
503 #define SMARTCARD_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP
511 #define SMARTCARD_ADVFEATURE_OVERRUN_ENABLE 0x00000000U
512 #define SMARTCARD_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS
520 #define SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U
521 #define SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE
529 #define SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U
530 #define SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST
538 #define SMARTCARD_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ
539 #define SMARTCARD_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ
547 #define SMARTCARD_IT_MASK 0x001FU
548 #define SMARTCARD_CR_MASK 0x00E0U
549 #define SMARTCARD_CR_POS 5U
550 #define SMARTCARD_ISR_MASK 0x1F00U
551 #define SMARTCARD_ISR_POS 8U
560 /* Exported macros -----------------------------------------------------------*/
561 
569 #if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1
570 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \
571  (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \
572  (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \
573  (__HANDLE__)->MspInitCallback = NULL; \
574  (__HANDLE__)->MspDeInitCallback = NULL; \
575  } while(0U)
576 #else
577 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \
578  (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \
579  (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \
580  } while(0U)
581 #endif /*USE_HAL_SMARTCARD_REGISTER_CALLBACKS */
582 
587 #define __HAL_SMARTCARD_FLUSH_DRREGISTER(__HANDLE__) \
588  do{ \
589  SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_RXDATA_FLUSH_REQUEST); \
590  SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_TXDATA_FLUSH_REQUEST); \
591  } while(0U)
592 
611 #define __HAL_SMARTCARD_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
612 
617 #define __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_PEF)
618 
623 #define __HAL_SMARTCARD_CLEAR_FEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_FEF)
624 
629 #define __HAL_SMARTCARD_CLEAR_NEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_NEF)
630 
635 #define __HAL_SMARTCARD_CLEAR_OREFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_OREF)
636 
641 #define __HAL_SMARTCARD_CLEAR_IDLEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_IDLEF)
642 
669 #define __HAL_SMARTCARD_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
670 
692 #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))): \
693  ((((__INTERRUPT__) & SMARTCARD_CR_MASK) >> SMARTCARD_CR_POS) == 2U)? ((__HANDLE__)->Instance->CR2 |= ((uint32_t)1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
694  ((__HANDLE__)->Instance->CR3 |= ((uint32_t)1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))))
695 
717 #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))): \
718  ((((__INTERRUPT__) & SMARTCARD_CR_MASK) >> SMARTCARD_CR_POS) == 2U)? ((__HANDLE__)->Instance->CR2 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
719  ((__HANDLE__)->Instance->CR3 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))))
720 
742 #define __HAL_SMARTCARD_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\
743  & ((uint32_t)0x01U << (((__INTERRUPT__) & SMARTCARD_ISR_MASK)>> SMARTCARD_ISR_POS))) != 0U) ? SET : RESET)
744 
766 #define __HAL_SMARTCARD_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((__INTERRUPT__) & SMARTCARD_CR_MASK) >> SMARTCARD_CR_POS) == 0x01U)? (__HANDLE__)->Instance->CR1 : \
767  (((((__INTERRUPT__) & SMARTCARD_CR_MASK) >> SMARTCARD_CR_POS) == 0x02U)? (__HANDLE__)->Instance->CR2 : \
768  (__HANDLE__)->Instance->CR3)) & ((uint32_t)0x01U << (((uint16_t)(__INTERRUPT__)) & SMARTCARD_IT_MASK))) != 0U) ? SET : RESET)
769 
787 #define __HAL_SMARTCARD_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR |= (uint32_t)(__IT_CLEAR__))
788 
797 #define __HAL_SMARTCARD_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__))
798 
803 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
804 
809 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3\
810  &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT))
811 
816 #define __HAL_SMARTCARD_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
817 
822 #define __HAL_SMARTCARD_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
823 
828 /* Private macros -------------------------------------------------------------*/
838 #if defined (STM32L432xx) || defined (STM32L442xx)
839 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
840  do { \
841  if((__HANDLE__)->Instance == USART1) \
842  { \
843  switch(__HAL_RCC_GET_USART1_SOURCE()) \
844  { \
845  case RCC_USART1CLKSOURCE_PCLK2: \
846  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK2; \
847  break; \
848  case RCC_USART1CLKSOURCE_HSI: \
849  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
850  break; \
851  case RCC_USART1CLKSOURCE_SYSCLK: \
852  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
853  break; \
854  case RCC_USART1CLKSOURCE_LSE: \
855  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
856  break; \
857  default: \
858  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
859  break; \
860  } \
861  } \
862  else if((__HANDLE__)->Instance == USART2) \
863  { \
864  switch(__HAL_RCC_GET_USART2_SOURCE()) \
865  { \
866  case RCC_USART2CLKSOURCE_PCLK1: \
867  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \
868  break; \
869  case RCC_USART2CLKSOURCE_HSI: \
870  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
871  break; \
872  case RCC_USART2CLKSOURCE_SYSCLK: \
873  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
874  break; \
875  case RCC_USART2CLKSOURCE_LSE: \
876  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
877  break; \
878  default: \
879  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
880  break; \
881  } \
882  } \
883  else \
884  { \
885  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
886  } \
887  } while(0)
888 #else
889 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
890  do { \
891  if((__HANDLE__)->Instance == USART1) \
892  { \
893  switch(__HAL_RCC_GET_USART1_SOURCE()) \
894  { \
895  case RCC_USART1CLKSOURCE_PCLK2: \
896  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK2; \
897  break; \
898  case RCC_USART1CLKSOURCE_HSI: \
899  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
900  break; \
901  case RCC_USART1CLKSOURCE_SYSCLK: \
902  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
903  break; \
904  case RCC_USART1CLKSOURCE_LSE: \
905  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
906  break; \
907  default: \
908  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
909  break; \
910  } \
911  } \
912  else if((__HANDLE__)->Instance == USART2) \
913  { \
914  switch(__HAL_RCC_GET_USART2_SOURCE()) \
915  { \
916  case RCC_USART2CLKSOURCE_PCLK1: \
917  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \
918  break; \
919  case RCC_USART2CLKSOURCE_HSI: \
920  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
921  break; \
922  case RCC_USART2CLKSOURCE_SYSCLK: \
923  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
924  break; \
925  case RCC_USART2CLKSOURCE_LSE: \
926  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
927  break; \
928  default: \
929  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
930  break; \
931  } \
932  } \
933  else if((__HANDLE__)->Instance == USART3) \
934  { \
935  switch(__HAL_RCC_GET_USART3_SOURCE()) \
936  { \
937  case RCC_USART3CLKSOURCE_PCLK1: \
938  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \
939  break; \
940  case RCC_USART3CLKSOURCE_HSI: \
941  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
942  break; \
943  case RCC_USART3CLKSOURCE_SYSCLK: \
944  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
945  break; \
946  case RCC_USART3CLKSOURCE_LSE: \
947  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
948  break; \
949  default: \
950  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
951  break; \
952  } \
953  } \
954  else \
955  { \
956  (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
957  } \
958  } while(0)
959 #endif /* STM32L432xx || STM32L442xx */
960 
967 #define IS_SMARTCARD_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 7500001U)
968 
974 #define IS_SMARTCARD_BLOCKLENGTH(__LENGTH__) ((__LENGTH__) <= 0xFFU)
975 
981 #define IS_SMARTCARD_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFFU)
982 
988 #define IS_SMARTCARD_AUTORETRY_COUNT(__COUNT__) ((__COUNT__) <= 0x7U)
989 
994 #define IS_SMARTCARD_WORD_LENGTH(__LENGTH__) ((__LENGTH__) == SMARTCARD_WORDLENGTH_9B)
995 
1000 #define IS_SMARTCARD_STOPBITS(__STOPBITS__) (((__STOPBITS__) == SMARTCARD_STOPBITS_0_5) ||\
1001  ((__STOPBITS__) == SMARTCARD_STOPBITS_1_5))
1002 
1007 #define IS_SMARTCARD_PARITY(__PARITY__) (((__PARITY__) == SMARTCARD_PARITY_EVEN) || \
1008  ((__PARITY__) == SMARTCARD_PARITY_ODD))
1009 
1014 #define IS_SMARTCARD_MODE(__MODE__) ((((__MODE__) & 0xFFF3U) == 0x00U) && ((__MODE__) != 0x00U))
1015 
1020 #define IS_SMARTCARD_POLARITY(__CPOL__) (((__CPOL__) == SMARTCARD_POLARITY_LOW)\
1021  || ((__CPOL__) == SMARTCARD_POLARITY_HIGH))
1022 
1027 #define IS_SMARTCARD_PHASE(__CPHA__) (((__CPHA__) == SMARTCARD_PHASE_1EDGE) || ((__CPHA__) == SMARTCARD_PHASE_2EDGE))
1028 
1033 #define IS_SMARTCARD_LASTBIT(__LASTBIT__) (((__LASTBIT__) == SMARTCARD_LASTBIT_DISABLE) || \
1034  ((__LASTBIT__) == SMARTCARD_LASTBIT_ENABLE))
1035 
1040 #define IS_SMARTCARD_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_DISABLE) || \
1041  ((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_ENABLE))
1042 
1047 #define IS_SMARTCARD_NACK(__NACK__) (((__NACK__) == SMARTCARD_NACK_ENABLE) || \
1048  ((__NACK__) == SMARTCARD_NACK_DISABLE))
1049 
1054 #define IS_SMARTCARD_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == SMARTCARD_TIMEOUT_DISABLE) || \
1055  ((__TIMEOUT__) == SMARTCARD_TIMEOUT_ENABLE))
1056 
1057 #if defined(USART_PRESC_PRESCALER)
1058 
1062 #define IS_SMARTCARD_CLOCKPRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV1) || \
1063  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV2) || \
1064  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV4) || \
1065  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV6) || \
1066  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV8) || \
1067  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV10) || \
1068  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV12) || \
1069  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV16) || \
1070  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV32) || \
1071  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV64) || \
1072  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV128) || \
1073  ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV256))
1074 
1075 #endif /* USART_PRESC_PRESCALER */
1076 
1080 #define IS_SMARTCARD_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (SMARTCARD_ADVFEATURE_NO_INIT | \
1081  SMARTCARD_ADVFEATURE_TXINVERT_INIT | \
1082  SMARTCARD_ADVFEATURE_RXINVERT_INIT | \
1083  SMARTCARD_ADVFEATURE_DATAINVERT_INIT | \
1084  SMARTCARD_ADVFEATURE_SWAP_INIT | \
1085  SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT | \
1086  SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT | \
1087  SMARTCARD_ADVFEATURE_MSBFIRST_INIT))
1088 
1093 #define IS_SMARTCARD_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_DISABLE) || \
1094  ((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_ENABLE))
1095 
1100 #define IS_SMARTCARD_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_DISABLE) || \
1101  ((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_ENABLE))
1102 
1107 #define IS_SMARTCARD_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_DISABLE) || \
1108  ((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_ENABLE))
1109 
1114 #define IS_SMARTCARD_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_DISABLE) || \
1115  ((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_ENABLE))
1116 
1121 #define IS_SMARTCARD_OVERRUN(__OVERRUN__) (((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_ENABLE) || \
1122  ((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_DISABLE))
1123 
1128 #define IS_SMARTCARD_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR) || \
1129  ((__DMA__) == SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR))
1130 
1135 #define IS_SMARTCARD_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE) || \
1136  ((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE))
1137 
1142 #define IS_SMARTCARD_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == SMARTCARD_RXDATA_FLUSH_REQUEST) || \
1143  ((__PARAM__) == SMARTCARD_TXDATA_FLUSH_REQUEST))
1144 
1149 /* Include SMARTCARD HAL Extended module */
1151 
1152 /* Exported functions --------------------------------------------------------*/
1157 /* Initialization and de-initialization functions ****************************/
1162 HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard);
1163 HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard);
1166 
1167 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1168 /* Callbacks Register/UnRegister functions ***********************************/
1169 HAL_StatusTypeDef HAL_SMARTCARD_RegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard,
1170  HAL_SMARTCARD_CallbackIDTypeDef CallbackID, pSMARTCARD_CallbackTypeDef pCallback);
1171 HAL_StatusTypeDef HAL_SMARTCARD_UnRegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard,
1172  HAL_SMARTCARD_CallbackIDTypeDef CallbackID);
1173 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */
1174 
1179 /* IO operation functions *****************************************************/
1184 HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size,
1185  uint32_t Timeout);
1186 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size,
1187  uint32_t Timeout);
1188 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
1189 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
1190 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
1191 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
1192 /* Transfer Abort functions */
1193 HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard);
1194 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard);
1195 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard);
1196 HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard);
1197 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard);
1198 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard);
1199 
1207 
1212 /* Peripheral State and Error functions ***************************************/
1217 HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard);
1218 uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard);
1219 
1236 #ifdef __cplusplus
1237 }
1238 #endif
1239 
1240 #endif /* STM32L4xx_HAL_SMARTCARD_H */
1241 
1242 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void(* TxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard)
DeInitialize the SMARTCARD MSP.
void(* RxISR)(struct __SMARTCARD_HandleTypeDef *huart)
void(* TxISR)(struct __SMARTCARD_HandleTypeDef *huart)
DMA handle Structure definition.
struct __SMARTCARD_HandleTypeDef SMARTCARD_HandleTypeDef
SMARTCARD handle Structure definition.
void(* AbortTransmitCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing transfers (blocking mode).
__IO HAL_SMARTCARD_StateTypeDef gState
void(* TxFifoEmptyCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard)
Return the SMARTCARD handle state.
HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Receive an amount of data in interrupt mode.
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Receive transfer (Interrupt mode).
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Transmit transfer (Interrupt mode).
HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard)
Initialize the SMARTCARD mode according to the specified parameters in the SMARTCARD_HandleTypeDef an...
uint32_t HAL_SMARTCARD_StateTypeDef
HAL SMARTCARD State definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
Rx Transfer completed callback.
uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard)
Return the SMARTCARD handle error code.
HAL_StatusTypeDef HAL_SMARTCARD_UnRegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, HAL_SMARTCARD_CallbackIDTypeDef CallbackID)
Unregister an SMARTCARD callback SMARTCARD callback is redirected to the weak predefined callback...
void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD error callback.
SMARTCARD Init Structure definition.
void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard)
Handle SMARTCARD interrupt requests.
void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard)
Initialize the SMARTCARD MSP.
void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD Abort Complete callback.
Header file of SMARTCARD HAL Extended module.
void(* AbortReceiveCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
void(* ErrorCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Send an amount of data in blocking mode.
void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD Abort Receive Complete callback.
HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Transmit transfer (blocking mode).
SMARTCARD_AdvFeatureInitTypeDef AdvancedInit
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Receive transfer (blocking mode).
SMARTCARD_ClockSourceTypeDef
SMARTCARD clock sources.
HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing transfers (Interrupt mode).
void(* pSMARTCARD_CallbackTypeDef)(SMARTCARD_HandleTypeDef *hsmartcard)
HAL SMARTCARD Callback pointer definition.
HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard)
DeInitialize the SMARTCARD peripheral.
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Send an amount of data in DMA mode.
void(* MspInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_LockTypeDef
HAL Lock structures definition.
HAL_SMARTCARD_CallbackIDTypeDef
HAL SMARTCARD Callback ID enumeration definition.
SMARTCARD advanced features initalization structure definition.
void(* MspDeInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
void(* RxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD Abort Complete callback.
void(* RxFifoFullCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_StatusTypeDef HAL_SMARTCARD_RegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, HAL_SMARTCARD_CallbackIDTypeDef CallbackID, pSMARTCARD_CallbackTypeDef pCallback)
Register a User SMARTCARD Callback To be used instead of the weak predefined callback.
__IO HAL_SMARTCARD_StateTypeDef RxState
HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Receive an amount of data in DMA mode.
void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
Tx Transfer completed callback.
void(* AbortCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Send an amount of data in interrupt mode.
SMARTCARD handle Structure definition.