![]() |
|
|||
File indexing completed on 2025-05-11 08:23:36
0001 /** 0002 ****************************************************************************** 0003 * @file stm32h7xx_hal_smartcard.h 0004 * @author MCD Application Team 0005 * @brief Header file of SMARTCARD HAL module. 0006 ****************************************************************************** 0007 * @attention 0008 * 0009 * Copyright (c) 2017 STMicroelectronics. 0010 * All rights reserved. 0011 * 0012 * This software is licensed under terms that can be found in the LICENSE file 0013 * in the root directory of this software component. 0014 * If no LICENSE file comes with this software, it is provided AS-IS. 0015 * 0016 ****************************************************************************** 0017 */ 0018 0019 /* Define to prevent recursive inclusion -------------------------------------*/ 0020 #ifndef STM32H7xx_HAL_SMARTCARD_H 0021 #define STM32H7xx_HAL_SMARTCARD_H 0022 0023 #ifdef __cplusplus 0024 extern "C" { 0025 #endif 0026 0027 /* Includes ------------------------------------------------------------------*/ 0028 #include "stm32h7xx_hal_def.h" 0029 0030 /** @addtogroup STM32H7xx_HAL_Driver 0031 * @{ 0032 */ 0033 0034 /** @addtogroup SMARTCARD 0035 * @{ 0036 */ 0037 0038 /* Exported types ------------------------------------------------------------*/ 0039 /** @defgroup SMARTCARD_Exported_Types SMARTCARD Exported Types 0040 * @ingroup RTEMSBSPsARMSTM32H7 0041 * @{ 0042 */ 0043 0044 /** 0045 * @brief SMARTCARD Init Structure definition 0046 */ 0047 typedef struct 0048 { 0049 uint32_t BaudRate; /*!< Configures the SmartCard communication baud rate. 0050 The baud rate register is computed using the following formula: 0051 Baud Rate Register = ((usart_ker_ckpres) / ((hsmartcard->Init.BaudRate))) 0052 where usart_ker_ckpres is the USART input clock divided by a prescaler */ 0053 0054 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame. 0055 This parameter @ref SMARTCARD_Word_Length can only be 0056 set to 9 (8 data + 1 parity bits). */ 0057 0058 uint32_t StopBits; /*!< Specifies the number of stop bits. 0059 This parameter can be a value of @ref SMARTCARD_Stop_Bits. */ 0060 0061 uint16_t Parity; /*!< Specifies the parity mode. 0062 This parameter can be a value of @ref SMARTCARD_Parity 0063 @note The parity is enabled by default (PCE is forced to 1). 0064 Since the WordLength is forced to 8 bits + parity, M is 0065 forced to 1 and the parity bit is the 9th bit. */ 0066 0067 uint16_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled. 0068 This parameter can be a value of @ref SMARTCARD_Mode */ 0069 0070 uint16_t CLKPolarity; /*!< Specifies the steady state of the serial clock. 0071 This parameter can be a value of @ref SMARTCARD_Clock_Polarity */ 0072 0073 uint16_t CLKPhase; /*!< Specifies the clock transition on which the bit capture is made. 0074 This parameter can be a value of @ref SMARTCARD_Clock_Phase */ 0075 0076 uint16_t CLKLastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted 0077 data bit (MSB) has to be output on the SCLK pin in synchronous mode. 0078 This parameter can be a value of @ref SMARTCARD_Last_Bit */ 0079 0080 uint16_t OneBitSampling; /*!< Specifies whether a single sample or three samples' majority vote 0081 is selected. Selecting the single sample method increases 0082 the receiver tolerance to clock deviations. This parameter can be a value 0083 of @ref SMARTCARD_OneBit_Sampling. */ 0084 0085 uint8_t Prescaler; /*!< Specifies the SmartCard Prescaler. 0086 This parameter can be any value from 0x01 to 0x1F. Prescaler value is 0087 multiplied by 2 to give the division factor of the source clock frequency */ 0088 0089 uint8_t GuardTime; /*!< Specifies the SmartCard Guard Time applied after stop bits. */ 0090 0091 uint16_t NACKEnable; /*!< Specifies whether the SmartCard NACK transmission is enabled 0092 in case of parity error. 0093 This parameter can be a value of @ref SMARTCARD_NACK_Enable */ 0094 0095 uint32_t TimeOutEnable; /*!< Specifies whether the receiver timeout is enabled. 0096 This parameter can be a value of @ref SMARTCARD_Timeout_Enable*/ 0097 0098 uint32_t TimeOutValue; /*!< Specifies the receiver time out value in number of baud blocks: 0099 it is used to implement the Character Wait Time (CWT) and 0100 Block Wait Time (BWT). It is coded over 24 bits. */ 0101 0102 uint8_t BlockLength; /*!< Specifies the SmartCard Block Length in T=1 Reception mode. 0103 This parameter can be any value from 0x0 to 0xFF */ 0104 0105 uint8_t AutoRetryCount; /*!< Specifies the SmartCard auto-retry count (number of retries in 0106 receive and transmit mode). When set to 0, retransmission is 0107 disabled. Otherwise, its maximum value is 7 (before signalling 0108 an error) */ 0109 0110 uint32_t ClockPrescaler; /*!< Specifies the prescaler value used to divide the USART clock source. 0111 This parameter can be a value of @ref SMARTCARD_ClockPrescaler. */ 0112 0113 } SMARTCARD_InitTypeDef; 0114 0115 /** 0116 * @brief SMARTCARD advanced features initialization structure definition 0117 */ 0118 typedef struct 0119 { 0120 uint32_t AdvFeatureInit; /*!< Specifies which advanced SMARTCARD features is initialized. Several 0121 advanced features may be initialized at the same time. This parameter 0122 can be a value of @ref SMARTCARDEx_Advanced_Features_Initialization_Type */ 0123 0124 uint32_t TxPinLevelInvert; /*!< Specifies whether the TX pin active level is inverted. 0125 This parameter can be a value of @ref SMARTCARD_Tx_Inv */ 0126 0127 uint32_t RxPinLevelInvert; /*!< Specifies whether the RX pin active level is inverted. 0128 This parameter can be a value of @ref SMARTCARD_Rx_Inv */ 0129 0130 uint32_t DataInvert; /*!< Specifies whether data are inverted (positive/direct logic 0131 vs negative/inverted logic). 0132 This parameter can be a value of @ref SMARTCARD_Data_Inv */ 0133 0134 uint32_t Swap; /*!< Specifies whether TX and RX pins are swapped. 0135 This parameter can be a value of @ref SMARTCARD_Rx_Tx_Swap */ 0136 0137 uint32_t OverrunDisable; /*!< Specifies whether the reception overrun detection is disabled. 0138 This parameter can be a value of @ref SMARTCARD_Overrun_Disable */ 0139 0140 uint32_t DMADisableonRxError; /*!< Specifies whether the DMA is disabled in case of reception error. 0141 This parameter can be a value of @ref SMARTCARD_DMA_Disable_on_Rx_Error */ 0142 0143 uint32_t MSBFirst; /*!< Specifies whether MSB is sent first on UART line. 0144 This parameter can be a value of @ref SMARTCARD_MSB_First */ 0145 0146 uint16_t TxCompletionIndication; /*!< Specifies which transmission completion indication is used: before (when 0147 relevant flag is available) or once guard time period has elapsed. 0148 This parameter can be a value 0149 of @ref SMARTCARDEx_Transmission_Completion_Indication. */ 0150 } SMARTCARD_AdvFeatureInitTypeDef; 0151 0152 /** 0153 * @brief HAL SMARTCARD State definition 0154 * @note HAL SMARTCARD State value is a combination of 2 different substates: 0155 * gState and RxState (see @ref SMARTCARD_State_Definition). 0156 * - gState contains SMARTCARD state information related to global Handle management 0157 * and also information related to Tx operations. 0158 * gState value coding follow below described bitmap : 0159 * b7-b6 Error information 0160 * 00 : No Error 0161 * 01 : (Not Used) 0162 * 10 : Timeout 0163 * 11 : Error 0164 * b5 Peripheral initialization status 0165 * 0 : Reset (Peripheral not initialized) 0166 * 1 : Init done (Peripheral initialized. HAL SMARTCARD Init function already called) 0167 * b4-b3 (not used) 0168 * xx : Should be set to 00 0169 * b2 Intrinsic process state 0170 * 0 : Ready 0171 * 1 : Busy (Peripheral busy with some configuration or internal operations) 0172 * b1 (not used) 0173 * x : Should be set to 0 0174 * b0 Tx state 0175 * 0 : Ready (no Tx operation ongoing) 0176 * 1 : Busy (Tx operation ongoing) 0177 * - RxState contains information related to Rx operations. 0178 * RxState value coding follow below described bitmap : 0179 * b7-b6 (not used) 0180 * xx : Should be set to 00 0181 * b5 Peripheral initialization status 0182 * 0 : Reset (Peripheral not initialized) 0183 * 1 : Init done (Peripheral initialized) 0184 * b4-b2 (not used) 0185 * xxx : Should be set to 000 0186 * b1 Rx state 0187 * 0 : Ready (no Rx operation ongoing) 0188 * 1 : Busy (Rx operation ongoing) 0189 * b0 (not used) 0190 * x : Should be set to 0. 0191 */ 0192 typedef uint32_t HAL_SMARTCARD_StateTypeDef; 0193 0194 /** 0195 * @brief SMARTCARD handle Structure definition 0196 */ 0197 typedef struct __SMARTCARD_HandleTypeDef 0198 { 0199 USART_TypeDef *Instance; /*!< USART registers base address */ 0200 0201 SMARTCARD_InitTypeDef Init; /*!< SmartCard communication parameters */ 0202 0203 SMARTCARD_AdvFeatureInitTypeDef AdvancedInit; /*!< SmartCard advanced features initialization parameters */ 0204 0205 const uint8_t *pTxBuffPtr; /*!< Pointer to SmartCard Tx transfer Buffer */ 0206 0207 uint16_t TxXferSize; /*!< SmartCard Tx Transfer size */ 0208 0209 __IO uint16_t TxXferCount; /*!< SmartCard Tx Transfer Counter */ 0210 0211 uint8_t *pRxBuffPtr; /*!< Pointer to SmartCard Rx transfer Buffer */ 0212 0213 uint16_t RxXferSize; /*!< SmartCard Rx Transfer size */ 0214 0215 __IO uint16_t RxXferCount; /*!< SmartCard Rx Transfer Counter */ 0216 0217 uint16_t NbRxDataToProcess; /*!< Number of data to process during RX ISR execution */ 0218 0219 uint16_t NbTxDataToProcess; /*!< Number of data to process during TX ISR execution */ 0220 0221 uint32_t FifoMode; /*!< Specifies if the FIFO mode will be used. 0222 This parameter can be a value of 0223 @ref SMARTCARDEx_FIFO_mode. */ 0224 0225 void (*RxISR)(struct __SMARTCARD_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */ 0226 0227 void (*TxISR)(struct __SMARTCARD_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */ 0228 0229 DMA_HandleTypeDef *hdmatx; /*!< SmartCard Tx DMA Handle parameters */ 0230 0231 DMA_HandleTypeDef *hdmarx; /*!< SmartCard Rx DMA Handle parameters */ 0232 0233 HAL_LockTypeDef Lock; /*!< Locking object */ 0234 0235 __IO HAL_SMARTCARD_StateTypeDef gState; /*!< SmartCard state information related to global 0236 Handle management and also related to Tx operations. 0237 This parameter can be a value 0238 of @ref HAL_SMARTCARD_StateTypeDef */ 0239 0240 __IO HAL_SMARTCARD_StateTypeDef RxState; /*!< SmartCard state information related to Rx operations. 0241 This parameter can be a value 0242 of @ref HAL_SMARTCARD_StateTypeDef */ 0243 0244 __IO uint32_t ErrorCode; /*!< SmartCard Error code */ 0245 0246 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 0247 void (* TxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Tx Complete Callback */ 0248 0249 void (* RxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Rx Complete Callback */ 0250 0251 void (* ErrorCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Error Callback */ 0252 0253 void (* AbortCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Abort Complete Callback */ 0254 0255 void (* AbortTransmitCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Abort Transmit Complete Callback */ 0256 0257 void (* AbortReceiveCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Abort Receive Complete Callback */ 0258 0259 void (* RxFifoFullCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Rx Fifo Full Callback */ 0260 0261 void (* TxFifoEmptyCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Tx Fifo Empty Callback */ 0262 0263 void (* MspInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Msp Init callback */ 0264 0265 void (* MspDeInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Msp DeInit callback */ 0266 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 0267 0268 } SMARTCARD_HandleTypeDef; 0269 0270 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 0271 /** 0272 * @brief HAL SMARTCARD Callback ID enumeration definition 0273 */ 0274 typedef enum 0275 { 0276 HAL_SMARTCARD_TX_COMPLETE_CB_ID = 0x00U, /*!< SMARTCARD Tx Complete Callback ID */ 0277 HAL_SMARTCARD_RX_COMPLETE_CB_ID = 0x01U, /*!< SMARTCARD Rx Complete Callback ID */ 0278 HAL_SMARTCARD_ERROR_CB_ID = 0x02U, /*!< SMARTCARD Error Callback ID */ 0279 HAL_SMARTCARD_ABORT_COMPLETE_CB_ID = 0x03U, /*!< SMARTCARD Abort Complete Callback ID */ 0280 HAL_SMARTCARD_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x04U, /*!< SMARTCARD Abort Transmit Complete Callback ID */ 0281 HAL_SMARTCARD_ABORT_RECEIVE_COMPLETE_CB_ID = 0x05U, /*!< SMARTCARD Abort Receive Complete Callback ID */ 0282 HAL_SMARTCARD_RX_FIFO_FULL_CB_ID = 0x06U, /*!< SMARTCARD Rx Fifo Full Callback ID */ 0283 HAL_SMARTCARD_TX_FIFO_EMPTY_CB_ID = 0x07U, /*!< SMARTCARD Tx Fifo Empty Callback ID */ 0284 0285 HAL_SMARTCARD_MSPINIT_CB_ID = 0x08U, /*!< SMARTCARD MspInit callback ID */ 0286 HAL_SMARTCARD_MSPDEINIT_CB_ID = 0x09U /*!< SMARTCARD MspDeInit callback ID */ 0287 0288 } HAL_SMARTCARD_CallbackIDTypeDef; 0289 0290 /** 0291 * @brief HAL SMARTCARD Callback pointer definition 0292 */ 0293 typedef void (*pSMARTCARD_CallbackTypeDef)(SMARTCARD_HandleTypeDef *hsmartcard); /*!< pointer to an SMARTCARD callback function */ 0294 0295 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 0296 0297 /** 0298 * @brief SMARTCARD clock sources 0299 */ 0300 typedef enum 0301 { 0302 SMARTCARD_CLOCKSOURCE_D2PCLK1 = 0x00U, /*!< Domain2 PCLK1 clock source */ 0303 SMARTCARD_CLOCKSOURCE_D2PCLK2 = 0x01U, /*!< Domain2 PCLK2 clock source */ 0304 SMARTCARD_CLOCKSOURCE_HSI = 0x04U, /*!< HSI clock source */ 0305 SMARTCARD_CLOCKSOURCE_CSI = 0x08U, /*!< CSI clock source */ 0306 SMARTCARD_CLOCKSOURCE_LSE = 0x20U, /*!< LSE clock source */ 0307 SMARTCARD_CLOCKSOURCE_PLL2Q = 0x40U, /*!< PLL2Q clock source */ 0308 SMARTCARD_CLOCKSOURCE_PLL3Q = 0x80U, /*!< PLL3Q clock source */ 0309 SMARTCARD_CLOCKSOURCE_UNDEFINED = 0x10U /*!< undefined clock source */ 0310 } SMARTCARD_ClockSourceTypeDef; 0311 0312 /** 0313 * @} 0314 */ 0315 0316 /* Exported constants --------------------------------------------------------*/ 0317 /** @defgroup SMARTCARD_Exported_Constants SMARTCARD Exported Constants 0318 * @ingroup RTEMSBSPsARMSTM32H7 0319 * @{ 0320 */ 0321 0322 /** @defgroup SMARTCARD_State_Definition SMARTCARD State Code Definition 0323 * @ingroup RTEMSBSPsARMSTM32H7 0324 * @{ 0325 */ 0326 #define HAL_SMARTCARD_STATE_RESET 0x00000000U /*!< Peripheral is not initialized. Value 0327 is allowed for gState and RxState */ 0328 #define HAL_SMARTCARD_STATE_READY 0x00000020U /*!< Peripheral Initialized and ready for 0329 use. Value is allowed for gState 0330 and RxState */ 0331 #define HAL_SMARTCARD_STATE_BUSY 0x00000024U /*!< an internal process is ongoing 0332 Value is allowed for gState only */ 0333 #define HAL_SMARTCARD_STATE_BUSY_TX 0x00000021U /*!< Data Transmission process is ongoing 0334 Value is allowed for gState only */ 0335 #define HAL_SMARTCARD_STATE_BUSY_RX 0x00000022U /*!< Data Reception process is ongoing 0336 Value is allowed for RxState only */ 0337 #define HAL_SMARTCARD_STATE_BUSY_TX_RX 0x00000023U /*!< Data Transmission and Reception 0338 process is ongoing Not to be used for 0339 neither gState nor RxState. 0340 Value is result of combination (Or) 0341 between gState and RxState values */ 0342 #define HAL_SMARTCARD_STATE_TIMEOUT 0x000000A0U /*!< Timeout state 0343 Value is allowed for gState only */ 0344 #define HAL_SMARTCARD_STATE_ERROR 0x000000E0U /*!< Error 0345 Value is allowed for gState only */ 0346 /** 0347 * @} 0348 */ 0349 0350 /** @defgroup SMARTCARD_Error_Definition SMARTCARD Error Code Definition 0351 * @ingroup RTEMSBSPsARMSTM32H7 0352 * @{ 0353 */ 0354 #define HAL_SMARTCARD_ERROR_NONE (0x00000000U) /*!< No error */ 0355 #define HAL_SMARTCARD_ERROR_PE (0x00000001U) /*!< Parity error */ 0356 #define HAL_SMARTCARD_ERROR_NE (0x00000002U) /*!< Noise error */ 0357 #define HAL_SMARTCARD_ERROR_FE (0x00000004U) /*!< frame error */ 0358 #define HAL_SMARTCARD_ERROR_ORE (0x00000008U) /*!< Overrun error */ 0359 #define HAL_SMARTCARD_ERROR_DMA (0x00000010U) /*!< DMA transfer error */ 0360 #define HAL_SMARTCARD_ERROR_RTO (0x00000020U) /*!< Receiver TimeOut error */ 0361 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 0362 #define HAL_SMARTCARD_ERROR_INVALID_CALLBACK (0x00000040U) /*!< Invalid Callback error */ 0363 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 0364 /** 0365 * @} 0366 */ 0367 0368 /** @defgroup SMARTCARD_Word_Length SMARTCARD Word Length 0369 * @ingroup RTEMSBSPsARMSTM32H7 0370 * @{ 0371 */ 0372 #define SMARTCARD_WORDLENGTH_9B USART_CR1_M0 /*!< SMARTCARD frame length */ 0373 /** 0374 * @} 0375 */ 0376 0377 /** @defgroup SMARTCARD_Stop_Bits SMARTCARD Number of Stop Bits 0378 * @ingroup RTEMSBSPsARMSTM32H7 0379 * @{ 0380 */ 0381 #define SMARTCARD_STOPBITS_0_5 USART_CR2_STOP_0 /*!< SMARTCARD frame with 0.5 stop bit */ 0382 #define SMARTCARD_STOPBITS_1_5 USART_CR2_STOP /*!< SMARTCARD frame with 1.5 stop bits */ 0383 /** 0384 * @} 0385 */ 0386 0387 /** @defgroup SMARTCARD_Parity SMARTCARD Parity 0388 * @ingroup RTEMSBSPsARMSTM32H7 0389 * @{ 0390 */ 0391 #define SMARTCARD_PARITY_EVEN USART_CR1_PCE /*!< SMARTCARD frame even parity */ 0392 #define SMARTCARD_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< SMARTCARD frame odd parity */ 0393 /** 0394 * @} 0395 */ 0396 0397 /** @defgroup SMARTCARD_Mode SMARTCARD Transfer Mode 0398 * @ingroup RTEMSBSPsARMSTM32H7 0399 * @{ 0400 */ 0401 #define SMARTCARD_MODE_RX USART_CR1_RE /*!< SMARTCARD RX mode */ 0402 #define SMARTCARD_MODE_TX USART_CR1_TE /*!< SMARTCARD TX mode */ 0403 #define SMARTCARD_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< SMARTCARD RX and TX mode */ 0404 /** 0405 * @} 0406 */ 0407 0408 /** @defgroup SMARTCARD_Clock_Polarity SMARTCARD Clock Polarity 0409 * @ingroup RTEMSBSPsARMSTM32H7 0410 * @{ 0411 */ 0412 #define SMARTCARD_POLARITY_LOW 0x00000000U /*!< SMARTCARD frame low polarity */ 0413 #define SMARTCARD_POLARITY_HIGH USART_CR2_CPOL /*!< SMARTCARD frame high polarity */ 0414 /** 0415 * @} 0416 */ 0417 0418 /** @defgroup SMARTCARD_Clock_Phase SMARTCARD Clock Phase 0419 * @ingroup RTEMSBSPsARMSTM32H7 0420 * @{ 0421 */ 0422 #define SMARTCARD_PHASE_1EDGE 0x00000000U /*!< SMARTCARD frame phase on first clock transition */ 0423 #define SMARTCARD_PHASE_2EDGE USART_CR2_CPHA /*!< SMARTCARD frame phase on second clock transition */ 0424 /** 0425 * @} 0426 */ 0427 0428 /** @defgroup SMARTCARD_Last_Bit SMARTCARD Last Bit 0429 * @ingroup RTEMSBSPsARMSTM32H7 0430 * @{ 0431 */ 0432 #define SMARTCARD_LASTBIT_DISABLE 0x00000000U /*!< SMARTCARD frame last data bit clock pulse not output to SCLK pin */ 0433 #define SMARTCARD_LASTBIT_ENABLE USART_CR2_LBCL /*!< SMARTCARD frame last data bit clock pulse output to SCLK pin */ 0434 /** 0435 * @} 0436 */ 0437 0438 /** @defgroup SMARTCARD_OneBit_Sampling SMARTCARD One Bit Sampling Method 0439 * @ingroup RTEMSBSPsARMSTM32H7 0440 * @{ 0441 */ 0442 #define SMARTCARD_ONE_BIT_SAMPLE_DISABLE 0x00000000U /*!< SMARTCARD frame one-bit sample disabled */ 0443 #define SMARTCARD_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT /*!< SMARTCARD frame one-bit sample enabled */ 0444 /** 0445 * @} 0446 */ 0447 0448 /** @defgroup SMARTCARD_NACK_Enable SMARTCARD NACK Enable 0449 * @ingroup RTEMSBSPsARMSTM32H7 0450 * @{ 0451 */ 0452 #define SMARTCARD_NACK_DISABLE 0x00000000U /*!< SMARTCARD NACK transmission disabled */ 0453 #define SMARTCARD_NACK_ENABLE USART_CR3_NACK /*!< SMARTCARD NACK transmission enabled */ 0454 /** 0455 * @} 0456 */ 0457 0458 /** @defgroup SMARTCARD_Timeout_Enable SMARTCARD Timeout Enable 0459 * @ingroup RTEMSBSPsARMSTM32H7 0460 * @{ 0461 */ 0462 #define SMARTCARD_TIMEOUT_DISABLE 0x00000000U /*!< SMARTCARD receiver timeout disabled */ 0463 #define SMARTCARD_TIMEOUT_ENABLE USART_CR2_RTOEN /*!< SMARTCARD receiver timeout enabled */ 0464 /** 0465 * @} 0466 */ 0467 0468 /** @defgroup SMARTCARD_ClockPrescaler SMARTCARD Clock Prescaler 0469 * @ingroup RTEMSBSPsARMSTM32H7 0470 * @{ 0471 */ 0472 #define SMARTCARD_PRESCALER_DIV1 0x00000000U /*!< fclk_pres = fclk */ 0473 #define SMARTCARD_PRESCALER_DIV2 0x00000001U /*!< fclk_pres = fclk/2 */ 0474 #define SMARTCARD_PRESCALER_DIV4 0x00000002U /*!< fclk_pres = fclk/4 */ 0475 #define SMARTCARD_PRESCALER_DIV6 0x00000003U /*!< fclk_pres = fclk/6 */ 0476 #define SMARTCARD_PRESCALER_DIV8 0x00000004U /*!< fclk_pres = fclk/8 */ 0477 #define SMARTCARD_PRESCALER_DIV10 0x00000005U /*!< fclk_pres = fclk/10 */ 0478 #define SMARTCARD_PRESCALER_DIV12 0x00000006U /*!< fclk_pres = fclk/12 */ 0479 #define SMARTCARD_PRESCALER_DIV16 0x00000007U /*!< fclk_pres = fclk/16 */ 0480 #define SMARTCARD_PRESCALER_DIV32 0x00000008U /*!< fclk_pres = fclk/32 */ 0481 #define SMARTCARD_PRESCALER_DIV64 0x00000009U /*!< fclk_pres = fclk/64 */ 0482 #define SMARTCARD_PRESCALER_DIV128 0x0000000AU /*!< fclk_pres = fclk/128 */ 0483 #define SMARTCARD_PRESCALER_DIV256 0x0000000BU /*!< fclk_pres = fclk/256 */ 0484 /** 0485 * @} 0486 */ 0487 0488 /** @defgroup SMARTCARD_Tx_Inv SMARTCARD advanced feature TX pin active level inversion 0489 * @ingroup RTEMSBSPsARMSTM32H7 0490 * @{ 0491 */ 0492 #define SMARTCARD_ADVFEATURE_TXINV_DISABLE 0x00000000U /*!< TX pin active level inversion disable */ 0493 #define SMARTCARD_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV /*!< TX pin active level inversion enable */ 0494 /** 0495 * @} 0496 */ 0497 0498 /** @defgroup SMARTCARD_Rx_Inv SMARTCARD advanced feature RX pin active level inversion 0499 * @ingroup RTEMSBSPsARMSTM32H7 0500 * @{ 0501 */ 0502 #define SMARTCARD_ADVFEATURE_RXINV_DISABLE 0x00000000U /*!< RX pin active level inversion disable */ 0503 #define SMARTCARD_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV /*!< RX pin active level inversion enable */ 0504 /** 0505 * @} 0506 */ 0507 0508 /** @defgroup SMARTCARD_Data_Inv SMARTCARD advanced feature Binary Data inversion 0509 * @ingroup RTEMSBSPsARMSTM32H7 0510 * @{ 0511 */ 0512 #define SMARTCARD_ADVFEATURE_DATAINV_DISABLE 0x00000000U /*!< Binary data inversion disable */ 0513 #define SMARTCARD_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV /*!< Binary data inversion enable */ 0514 /** 0515 * @} 0516 */ 0517 0518 /** @defgroup SMARTCARD_Rx_Tx_Swap SMARTCARD advanced feature RX TX pins swap 0519 * @ingroup RTEMSBSPsARMSTM32H7 0520 * @{ 0521 */ 0522 #define SMARTCARD_ADVFEATURE_SWAP_DISABLE 0x00000000U /*!< TX/RX pins swap disable */ 0523 #define SMARTCARD_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP /*!< TX/RX pins swap enable */ 0524 /** 0525 * @} 0526 */ 0527 0528 /** @defgroup SMARTCARD_Overrun_Disable SMARTCARD advanced feature Overrun Disable 0529 * @ingroup RTEMSBSPsARMSTM32H7 0530 * @{ 0531 */ 0532 #define SMARTCARD_ADVFEATURE_OVERRUN_ENABLE 0x00000000U /*!< RX overrun enable */ 0533 #define SMARTCARD_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS /*!< RX overrun disable */ 0534 /** 0535 * @} 0536 */ 0537 0538 /** @defgroup SMARTCARD_DMA_Disable_on_Rx_Error SMARTCARD advanced feature DMA Disable on Rx Error 0539 * @ingroup RTEMSBSPsARMSTM32H7 0540 * @{ 0541 */ 0542 #define SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U /*!< DMA enable on Reception Error */ 0543 #define SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE /*!< DMA disable on Reception Error */ 0544 /** 0545 * @} 0546 */ 0547 0548 /** @defgroup SMARTCARD_MSB_First SMARTCARD advanced feature MSB first 0549 * @ingroup RTEMSBSPsARMSTM32H7 0550 * @{ 0551 */ 0552 #define SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U /*!< Most significant bit sent/received first disable */ 0553 #define SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST /*!< Most significant bit sent/received first enable */ 0554 /** 0555 * @} 0556 */ 0557 0558 /** @defgroup SMARTCARD_Request_Parameters SMARTCARD Request Parameters 0559 * @ingroup RTEMSBSPsARMSTM32H7 0560 * @{ 0561 */ 0562 #define SMARTCARD_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ /*!< Receive data flush request */ 0563 #define SMARTCARD_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ /*!< Transmit data flush request */ 0564 /** 0565 * @} 0566 */ 0567 0568 /** @defgroup SMARTCARD_Interruption_Mask SMARTCARD interruptions flags mask 0569 * @ingroup RTEMSBSPsARMSTM32H7 0570 * @{ 0571 */ 0572 #define SMARTCARD_IT_MASK 0x001FU /*!< SMARTCARD interruptions flags mask */ 0573 #define SMARTCARD_CR_MASK 0x00E0U /*!< SMARTCARD control register mask */ 0574 #define SMARTCARD_CR_POS 5U /*!< SMARTCARD control register position */ 0575 #define SMARTCARD_ISR_MASK 0x1F00U /*!< SMARTCARD ISR register mask */ 0576 #define SMARTCARD_ISR_POS 8U /*!< SMARTCARD ISR register position */ 0577 /** 0578 * @} 0579 */ 0580 0581 /** 0582 * @} 0583 */ 0584 0585 /* Exported macros -----------------------------------------------------------*/ 0586 /** @defgroup SMARTCARD_Exported_Macros SMARTCARD Exported Macros 0587 * @ingroup RTEMSBSPsARMSTM32H7 0588 * @{ 0589 */ 0590 0591 /** @brief Reset SMARTCARD handle states. 0592 * @param __HANDLE__ SMARTCARD handle. 0593 * @retval None 0594 */ 0595 #if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1 0596 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \ 0597 (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \ 0598 (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \ 0599 (__HANDLE__)->MspInitCallback = NULL; \ 0600 (__HANDLE__)->MspDeInitCallback = NULL; \ 0601 } while(0U) 0602 #else 0603 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \ 0604 (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \ 0605 (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \ 0606 } while(0U) 0607 #endif /*USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 0608 0609 /** @brief Flush the Smartcard Data registers. 0610 * @param __HANDLE__ specifies the SMARTCARD Handle. 0611 * @retval None 0612 */ 0613 #define __HAL_SMARTCARD_FLUSH_DRREGISTER(__HANDLE__) \ 0614 do{ \ 0615 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_RXDATA_FLUSH_REQUEST); \ 0616 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_TXDATA_FLUSH_REQUEST); \ 0617 } while(0U) 0618 0619 /** @brief Clear the specified SMARTCARD pending flag. 0620 * @param __HANDLE__ specifies the SMARTCARD Handle. 0621 * @param __FLAG__ specifies the flag to check. 0622 * This parameter can be any combination of the following values: 0623 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag 0624 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag 0625 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag 0626 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag 0627 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detected clear flag 0628 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag 0629 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag 0630 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag 0631 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag 0632 * @arg @ref SMARTCARD_CLEAR_TXFECF TXFIFO empty Clear flag 0633 * @retval None 0634 */ 0635 #define __HAL_SMARTCARD_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__)) 0636 0637 /** @brief Clear the SMARTCARD PE pending flag. 0638 * @param __HANDLE__ specifies the SMARTCARD Handle. 0639 * @retval None 0640 */ 0641 #define __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_PEF) 0642 0643 /** @brief Clear the SMARTCARD FE pending flag. 0644 * @param __HANDLE__ specifies the SMARTCARD Handle. 0645 * @retval None 0646 */ 0647 #define __HAL_SMARTCARD_CLEAR_FEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_FEF) 0648 0649 /** @brief Clear the SMARTCARD NE pending flag. 0650 * @param __HANDLE__ specifies the SMARTCARD Handle. 0651 * @retval None 0652 */ 0653 #define __HAL_SMARTCARD_CLEAR_NEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_NEF) 0654 0655 /** @brief Clear the SMARTCARD ORE pending flag. 0656 * @param __HANDLE__ specifies the SMARTCARD Handle. 0657 * @retval None 0658 */ 0659 #define __HAL_SMARTCARD_CLEAR_OREFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_OREF) 0660 0661 /** @brief Clear the SMARTCARD IDLE pending flag. 0662 * @param __HANDLE__ specifies the SMARTCARD Handle. 0663 * @retval None 0664 */ 0665 #define __HAL_SMARTCARD_CLEAR_IDLEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_IDLEF) 0666 0667 /** @brief Check whether the specified Smartcard flag is set or not. 0668 * @param __HANDLE__ specifies the SMARTCARD Handle. 0669 * @param __FLAG__ specifies the flag to check. 0670 * This parameter can be one of the following values: 0671 * @arg @ref SMARTCARD_FLAG_TCBGT Transmission complete before guard time flag (when flag available) 0672 * @arg @ref SMARTCARD_FLAG_REACK Receive enable acknowledge flag 0673 * @arg @ref SMARTCARD_FLAG_TEACK Transmit enable acknowledge flag 0674 * @arg @ref SMARTCARD_FLAG_BUSY Busy flag 0675 * @arg @ref SMARTCARD_FLAG_EOBF End of block flag 0676 * @arg @ref SMARTCARD_FLAG_RTOF Receiver timeout flag 0677 * @arg @ref SMARTCARD_FLAG_TXE Transmit data register empty flag 0678 * @arg @ref SMARTCARD_FLAG_TC Transmission complete flag 0679 * @arg @ref SMARTCARD_FLAG_RXNE Receive data register not empty flag 0680 * @arg @ref SMARTCARD_FLAG_IDLE Idle line detection flag 0681 * @arg @ref SMARTCARD_FLAG_ORE Overrun error flag 0682 * @arg @ref SMARTCARD_FLAG_NE Noise error flag 0683 * @arg @ref SMARTCARD_FLAG_FE Framing error flag 0684 * @arg @ref SMARTCARD_FLAG_PE Parity error flag 0685 * @arg @ref SMARTCARD_FLAG_TXFNF TXFIFO not full flag 0686 * @arg @ref SMARTCARD_FLAG_RXFNE RXFIFO not empty flag 0687 * @arg @ref SMARTCARD_FLAG_TXFE TXFIFO Empty flag 0688 * @arg @ref SMARTCARD_FLAG_RXFF RXFIFO Full flag 0689 * @arg @ref SMARTCARD_FLAG_RXFT SMARTCARD RXFIFO threshold flag 0690 * @arg @ref SMARTCARD_FLAG_TXFT SMARTCARD TXFIFO threshold flag 0691 * @retval The new state of __FLAG__ (TRUE or FALSE). 0692 */ 0693 #define __HAL_SMARTCARD_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) 0694 0695 /** @brief Enable the specified SmartCard interrupt. 0696 * @param __HANDLE__ specifies the SMARTCARD Handle. 0697 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to enable. 0698 * This parameter can be one of the following values: 0699 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 0700 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 0701 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 0702 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 0703 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before 0704 * guard time interrupt (when interruption available) 0705 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 0706 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 0707 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 0708 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 0709 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 0710 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 0711 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 0712 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 0713 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 0714 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 0715 * @retval None 0716 */ 0717 #define __HAL_SMARTCARD_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((__INTERRUPT__) & SMARTCARD_CR_MASK) >>\ 0718 SMARTCARD_CR_POS) == 1U)?\ 0719 ((__HANDLE__)->Instance->CR1 |= (1UL <<\ 0720 ((__INTERRUPT__) & SMARTCARD_IT_MASK))):\ 0721 ((((__INTERRUPT__) & SMARTCARD_CR_MASK) >>\ 0722 SMARTCARD_CR_POS) == 2U)?\ 0723 ((__HANDLE__)->Instance->CR2 |= (1UL <<\ 0724 ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \ 0725 ((__HANDLE__)->Instance->CR3 |= (1UL <<\ 0726 ((__INTERRUPT__) & SMARTCARD_IT_MASK)))) 0727 0728 /** @brief Disable the specified SmartCard interrupt. 0729 * @param __HANDLE__ specifies the SMARTCARD Handle. 0730 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to disable. 0731 * This parameter can be one of the following values: 0732 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 0733 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 0734 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 0735 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 0736 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard 0737 * time interrupt (when interruption available) 0738 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 0739 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 0740 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 0741 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 0742 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 0743 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 0744 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 0745 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 0746 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 0747 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 0748 * @retval None 0749 */ 0750 #define __HAL_SMARTCARD_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((__INTERRUPT__) & SMARTCARD_CR_MASK) >>\ 0751 SMARTCARD_CR_POS) == 1U)?\ 0752 ((__HANDLE__)->Instance->CR1 &= ~ (1U <<\ 0753 ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \ 0754 ((((__INTERRUPT__) & SMARTCARD_CR_MASK) >>\ 0755 SMARTCARD_CR_POS) == 2U)?\ 0756 ((__HANDLE__)->Instance->CR2 &= ~ (1U <<\ 0757 ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \ 0758 ((__HANDLE__)->Instance->CR3 &= ~ (1U <<\ 0759 ((__INTERRUPT__) & SMARTCARD_IT_MASK)))) 0760 0761 /** @brief Check whether the specified SmartCard interrupt has occurred or not. 0762 * @param __HANDLE__ specifies the SMARTCARD Handle. 0763 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to check. 0764 * This parameter can be one of the following values: 0765 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 0766 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 0767 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 0768 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 0769 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time 0770 * interrupt (when interruption available) 0771 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 0772 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 0773 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 0774 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 0775 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 0776 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 0777 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 0778 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 0779 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 0780 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 0781 * @retval The new state of __INTERRUPT__ (SET or RESET). 0782 */ 0783 #define __HAL_SMARTCARD_GET_IT(__HANDLE__, __INTERRUPT__) (\ 0784 (((__HANDLE__)->Instance->ISR & (0x01UL << (((__INTERRUPT__)\ 0785 & SMARTCARD_ISR_MASK)>> SMARTCARD_ISR_POS)))!= 0U)\ 0786 ? SET : RESET) 0787 0788 /** @brief Check whether the specified SmartCard interrupt source is enabled or not. 0789 * @param __HANDLE__ specifies the SMARTCARD Handle. 0790 * @param __INTERRUPT__ specifies the SMARTCARD interrupt source to check. 0791 * This parameter can be one of the following values: 0792 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 0793 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 0794 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 0795 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 0796 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time 0797 * interrupt (when interruption available) 0798 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 0799 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 0800 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 0801 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 0802 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 0803 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 0804 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 0805 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 0806 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 0807 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 0808 * @retval The new state of __INTERRUPT__ (SET or RESET). 0809 */ 0810 #define __HAL_SMARTCARD_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((__INTERRUPT__) & SMARTCARD_CR_MASK) >>\ 0811 SMARTCARD_CR_POS) == 0x01U)?\ 0812 (__HANDLE__)->Instance->CR1 : \ 0813 (((((__INTERRUPT__) & SMARTCARD_CR_MASK) >>\ 0814 SMARTCARD_CR_POS) == 0x02U)?\ 0815 (__HANDLE__)->Instance->CR2 : \ 0816 (__HANDLE__)->Instance->CR3)) &\ 0817 (0x01UL << (((uint16_t)(__INTERRUPT__))\ 0818 & SMARTCARD_IT_MASK))) != 0U)\ 0819 ? SET : RESET) 0820 0821 /** @brief Clear the specified SMARTCARD ISR flag, in setting the proper ICR register flag. 0822 * @param __HANDLE__ specifies the SMARTCARD Handle. 0823 * @param __IT_CLEAR__ specifies the interrupt clear register flag that needs to be set 0824 * to clear the corresponding interrupt. 0825 * This parameter can be one of the following values: 0826 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag 0827 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag 0828 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag 0829 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag 0830 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detection clear flag 0831 * @arg @ref SMARTCARD_CLEAR_TXFECF TXFIFO empty Clear Flag 0832 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag 0833 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag (when flag available) 0834 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag 0835 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag 0836 * @retval None 0837 */ 0838 #define __HAL_SMARTCARD_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR |= (uint32_t)(__IT_CLEAR__)) 0839 0840 /** @brief Set a specific SMARTCARD request flag. 0841 * @param __HANDLE__ specifies the SMARTCARD Handle. 0842 * @param __REQ__ specifies the request flag to set 0843 * This parameter can be one of the following values: 0844 * @arg @ref SMARTCARD_RXDATA_FLUSH_REQUEST Receive data flush Request 0845 * @arg @ref SMARTCARD_TXDATA_FLUSH_REQUEST Transmit data flush Request 0846 * @retval None 0847 */ 0848 #define __HAL_SMARTCARD_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__)) 0849 0850 /** @brief Enable the SMARTCARD one bit sample method. 0851 * @param __HANDLE__ specifies the SMARTCARD Handle. 0852 * @retval None 0853 */ 0854 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT) 0855 0856 /** @brief Disable the SMARTCARD one bit sample method. 0857 * @param __HANDLE__ specifies the SMARTCARD Handle. 0858 * @retval None 0859 */ 0860 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3\ 0861 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT)) 0862 0863 /** @brief Enable the USART associated to the SMARTCARD Handle. 0864 * @param __HANDLE__ specifies the SMARTCARD Handle. 0865 * @retval None 0866 */ 0867 #define __HAL_SMARTCARD_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE) 0868 0869 /** @brief Disable the USART associated to the SMARTCARD Handle 0870 * @param __HANDLE__ specifies the SMARTCARD Handle. 0871 * @retval None 0872 */ 0873 #define __HAL_SMARTCARD_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE) 0874 0875 /** 0876 * @} 0877 */ 0878 0879 /* Private macros -------------------------------------------------------------*/ 0880 /** @defgroup SMARTCARD_Private_Macros SMARTCARD Private Macros 0881 * @ingroup RTEMSBSPsARMSTM32H7 0882 * @{ 0883 */ 0884 0885 /** @brief Report the SMARTCARD clock source. 0886 * @param __HANDLE__ specifies the SMARTCARD Handle. 0887 * @param __CLOCKSOURCE__ output variable. 0888 * @retval the SMARTCARD clocking source, written in __CLOCKSOURCE__. 0889 */ 0890 #if defined(UART9) && defined(USART10) 0891 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 0892 do { \ 0893 if ((__HANDLE__)->Instance == USART1) \ 0894 { \ 0895 switch (__HAL_RCC_GET_USART1_SOURCE()) \ 0896 { \ 0897 case RCC_USART1CLKSOURCE_D2PCLK2: \ 0898 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK2; \ 0899 break; \ 0900 case RCC_USART1CLKSOURCE_PLL2: \ 0901 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 0902 break; \ 0903 case RCC_USART1CLKSOURCE_PLL3: \ 0904 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 0905 break; \ 0906 case RCC_USART1CLKSOURCE_HSI: \ 0907 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 0908 break; \ 0909 case RCC_USART1CLKSOURCE_CSI: \ 0910 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 0911 break; \ 0912 case RCC_USART1CLKSOURCE_LSE: \ 0913 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 0914 break; \ 0915 default: \ 0916 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 0917 break; \ 0918 } \ 0919 } \ 0920 else if ((__HANDLE__)->Instance == USART2) \ 0921 { \ 0922 switch (__HAL_RCC_GET_USART2_SOURCE()) \ 0923 { \ 0924 case RCC_USART2CLKSOURCE_D2PCLK1: \ 0925 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK1; \ 0926 break; \ 0927 case RCC_USART2CLKSOURCE_PLL2: \ 0928 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 0929 break; \ 0930 case RCC_USART2CLKSOURCE_PLL3: \ 0931 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 0932 break; \ 0933 case RCC_USART2CLKSOURCE_HSI: \ 0934 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 0935 break; \ 0936 case RCC_USART2CLKSOURCE_CSI: \ 0937 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 0938 break; \ 0939 case RCC_USART2CLKSOURCE_LSE: \ 0940 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 0941 break; \ 0942 default: \ 0943 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 0944 break; \ 0945 } \ 0946 } \ 0947 else if ((__HANDLE__)->Instance == USART3) \ 0948 { \ 0949 switch (__HAL_RCC_GET_USART3_SOURCE()) \ 0950 { \ 0951 case RCC_USART3CLKSOURCE_D2PCLK1: \ 0952 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK1; \ 0953 break; \ 0954 case RCC_USART3CLKSOURCE_PLL2: \ 0955 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 0956 break; \ 0957 case RCC_USART3CLKSOURCE_PLL3: \ 0958 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 0959 break; \ 0960 case RCC_USART3CLKSOURCE_HSI: \ 0961 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 0962 break; \ 0963 case RCC_USART3CLKSOURCE_CSI: \ 0964 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 0965 break; \ 0966 case RCC_USART3CLKSOURCE_LSE: \ 0967 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 0968 break; \ 0969 default: \ 0970 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 0971 break; \ 0972 } \ 0973 } \ 0974 else if ((__HANDLE__)->Instance == USART6) \ 0975 { \ 0976 switch (__HAL_RCC_GET_USART6_SOURCE()) \ 0977 { \ 0978 case RCC_USART6CLKSOURCE_D2PCLK2: \ 0979 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK2; \ 0980 break; \ 0981 case RCC_USART6CLKSOURCE_PLL2: \ 0982 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 0983 break; \ 0984 case RCC_USART6CLKSOURCE_PLL3: \ 0985 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 0986 break; \ 0987 case RCC_USART6CLKSOURCE_HSI: \ 0988 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 0989 break; \ 0990 case RCC_USART6CLKSOURCE_CSI: \ 0991 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 0992 break; \ 0993 case RCC_USART6CLKSOURCE_LSE: \ 0994 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 0995 break; \ 0996 default: \ 0997 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 0998 break; \ 0999 } \ 1000 } \ 1001 else if ((__HANDLE__)->Instance == USART10) \ 1002 { \ 1003 switch (__HAL_RCC_GET_USART10_SOURCE()) \ 1004 { \ 1005 case RCC_USART10CLKSOURCE_D2PCLK2: \ 1006 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK2; \ 1007 break; \ 1008 case RCC_USART10CLKSOURCE_PLL2: \ 1009 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 1010 break; \ 1011 case RCC_USART10CLKSOURCE_PLL3: \ 1012 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 1013 break; \ 1014 case RCC_USART10CLKSOURCE_HSI: \ 1015 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 1016 break; \ 1017 case RCC_USART10CLKSOURCE_CSI: \ 1018 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 1019 break; \ 1020 case RCC_USART10CLKSOURCE_LSE: \ 1021 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 1022 break; \ 1023 default: \ 1024 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 1025 break; \ 1026 } \ 1027 } \ 1028 else \ 1029 { \ 1030 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 1031 } \ 1032 } while(0U) 1033 #else 1034 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 1035 do { \ 1036 if ((__HANDLE__)->Instance == USART1) \ 1037 { \ 1038 switch (__HAL_RCC_GET_USART1_SOURCE()) \ 1039 { \ 1040 case RCC_USART1CLKSOURCE_D2PCLK2: \ 1041 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK2; \ 1042 break; \ 1043 case RCC_USART1CLKSOURCE_PLL2: \ 1044 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 1045 break; \ 1046 case RCC_USART1CLKSOURCE_PLL3: \ 1047 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 1048 break; \ 1049 case RCC_USART1CLKSOURCE_HSI: \ 1050 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 1051 break; \ 1052 case RCC_USART1CLKSOURCE_CSI: \ 1053 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 1054 break; \ 1055 case RCC_USART1CLKSOURCE_LSE: \ 1056 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 1057 break; \ 1058 default: \ 1059 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 1060 break; \ 1061 } \ 1062 } \ 1063 else if ((__HANDLE__)->Instance == USART2) \ 1064 { \ 1065 switch (__HAL_RCC_GET_USART2_SOURCE()) \ 1066 { \ 1067 case RCC_USART2CLKSOURCE_D2PCLK1: \ 1068 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK1; \ 1069 break; \ 1070 case RCC_USART2CLKSOURCE_PLL2: \ 1071 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 1072 break; \ 1073 case RCC_USART2CLKSOURCE_PLL3: \ 1074 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 1075 break; \ 1076 case RCC_USART2CLKSOURCE_HSI: \ 1077 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 1078 break; \ 1079 case RCC_USART2CLKSOURCE_CSI: \ 1080 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 1081 break; \ 1082 case RCC_USART2CLKSOURCE_LSE: \ 1083 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 1084 break; \ 1085 default: \ 1086 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 1087 break; \ 1088 } \ 1089 } \ 1090 else if ((__HANDLE__)->Instance == USART3) \ 1091 { \ 1092 switch (__HAL_RCC_GET_USART3_SOURCE()) \ 1093 { \ 1094 case RCC_USART3CLKSOURCE_D2PCLK1: \ 1095 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK1; \ 1096 break; \ 1097 case RCC_USART3CLKSOURCE_PLL2: \ 1098 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 1099 break; \ 1100 case RCC_USART3CLKSOURCE_PLL3: \ 1101 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 1102 break; \ 1103 case RCC_USART3CLKSOURCE_HSI: \ 1104 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 1105 break; \ 1106 case RCC_USART3CLKSOURCE_CSI: \ 1107 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 1108 break; \ 1109 case RCC_USART3CLKSOURCE_LSE: \ 1110 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 1111 break; \ 1112 default: \ 1113 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 1114 break; \ 1115 } \ 1116 } \ 1117 else if ((__HANDLE__)->Instance == USART6) \ 1118 { \ 1119 switch (__HAL_RCC_GET_USART6_SOURCE()) \ 1120 { \ 1121 case RCC_USART6CLKSOURCE_D2PCLK2: \ 1122 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_D2PCLK2; \ 1123 break; \ 1124 case RCC_USART6CLKSOURCE_PLL2: \ 1125 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL2Q; \ 1126 break; \ 1127 case RCC_USART6CLKSOURCE_PLL3: \ 1128 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PLL3Q; \ 1129 break; \ 1130 case RCC_USART6CLKSOURCE_HSI: \ 1131 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 1132 break; \ 1133 case RCC_USART6CLKSOURCE_CSI: \ 1134 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_CSI; \ 1135 break; \ 1136 case RCC_USART6CLKSOURCE_LSE: \ 1137 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 1138 break; \ 1139 default: \ 1140 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 1141 break; \ 1142 } \ 1143 } \ 1144 else \ 1145 { \ 1146 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 1147 } \ 1148 } while(0U) 1149 #endif /* UART9 && USART10 */ 1150 1151 /** @brief Check the Baud rate range. 1152 * @note The maximum Baud Rate is derived from the maximum clock on H7 (100 MHz) 1153 * divided by the oversampling used on the SMARTCARD (i.e. 16). 1154 * @param __BAUDRATE__ Baud rate set by the configuration function. 1155 * @retval Test result (TRUE or FALSE) 1156 */ 1157 #define IS_SMARTCARD_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 6250001U) 1158 1159 /** @brief Check the block length range. 1160 * @note The maximum SMARTCARD block length is 0xFF. 1161 * @param __LENGTH__ block length. 1162 * @retval Test result (TRUE or FALSE) 1163 */ 1164 #define IS_SMARTCARD_BLOCKLENGTH(__LENGTH__) ((__LENGTH__) <= 0xFFU) 1165 1166 /** @brief Check the receiver timeout value. 1167 * @note The maximum SMARTCARD receiver timeout value is 0xFFFFFF. 1168 * @param __TIMEOUTVALUE__ receiver timeout value. 1169 * @retval Test result (TRUE or FALSE) 1170 */ 1171 #define IS_SMARTCARD_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFFU) 1172 1173 /** @brief Check the SMARTCARD autoretry counter value. 1174 * @note The maximum number of retransmissions is 0x7. 1175 * @param __COUNT__ number of retransmissions. 1176 * @retval Test result (TRUE or FALSE) 1177 */ 1178 #define IS_SMARTCARD_AUTORETRY_COUNT(__COUNT__) ((__COUNT__) <= 0x7U) 1179 1180 /** @brief Ensure that SMARTCARD frame length is valid. 1181 * @param __LENGTH__ SMARTCARD frame length. 1182 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid) 1183 */ 1184 #define IS_SMARTCARD_WORD_LENGTH(__LENGTH__) ((__LENGTH__) == SMARTCARD_WORDLENGTH_9B) 1185 1186 /** @brief Ensure that SMARTCARD frame number of stop bits is valid. 1187 * @param __STOPBITS__ SMARTCARD frame number of stop bits. 1188 * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid) 1189 */ 1190 #define IS_SMARTCARD_STOPBITS(__STOPBITS__) (((__STOPBITS__) == SMARTCARD_STOPBITS_0_5) ||\ 1191 ((__STOPBITS__) == SMARTCARD_STOPBITS_1_5)) 1192 1193 /** @brief Ensure that SMARTCARD frame parity is valid. 1194 * @param __PARITY__ SMARTCARD frame parity. 1195 * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid) 1196 */ 1197 #define IS_SMARTCARD_PARITY(__PARITY__) (((__PARITY__) == SMARTCARD_PARITY_EVEN) || \ 1198 ((__PARITY__) == SMARTCARD_PARITY_ODD)) 1199 1200 /** @brief Ensure that SMARTCARD communication mode is valid. 1201 * @param __MODE__ SMARTCARD communication mode. 1202 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) 1203 */ 1204 #define IS_SMARTCARD_MODE(__MODE__) ((((__MODE__) & 0xFFF3U) == 0x00U) && ((__MODE__) != 0x00U)) 1205 1206 /** @brief Ensure that SMARTCARD frame polarity is valid. 1207 * @param __CPOL__ SMARTCARD frame polarity. 1208 * @retval SET (__CPOL__ is valid) or RESET (__CPOL__ is invalid) 1209 */ 1210 #define IS_SMARTCARD_POLARITY(__CPOL__) (((__CPOL__) == SMARTCARD_POLARITY_LOW)\ 1211 || ((__CPOL__) == SMARTCARD_POLARITY_HIGH)) 1212 1213 /** @brief Ensure that SMARTCARD frame phase is valid. 1214 * @param __CPHA__ SMARTCARD frame phase. 1215 * @retval SET (__CPHA__ is valid) or RESET (__CPHA__ is invalid) 1216 */ 1217 #define IS_SMARTCARD_PHASE(__CPHA__) (((__CPHA__) == SMARTCARD_PHASE_1EDGE) || ((__CPHA__) == SMARTCARD_PHASE_2EDGE)) 1218 1219 /** @brief Ensure that SMARTCARD frame last bit clock pulse setting is valid. 1220 * @param __LASTBIT__ SMARTCARD frame last bit clock pulse setting. 1221 * @retval SET (__LASTBIT__ is valid) or RESET (__LASTBIT__ is invalid) 1222 */ 1223 #define IS_SMARTCARD_LASTBIT(__LASTBIT__) (((__LASTBIT__) == SMARTCARD_LASTBIT_DISABLE) || \ 1224 ((__LASTBIT__) == SMARTCARD_LASTBIT_ENABLE)) 1225 1226 /** @brief Ensure that SMARTCARD frame sampling is valid. 1227 * @param __ONEBIT__ SMARTCARD frame sampling. 1228 * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid) 1229 */ 1230 #define IS_SMARTCARD_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_DISABLE) || \ 1231 ((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_ENABLE)) 1232 1233 /** @brief Ensure that SMARTCARD NACK transmission setting is valid. 1234 * @param __NACK__ SMARTCARD NACK transmission setting. 1235 * @retval SET (__NACK__ is valid) or RESET (__NACK__ is invalid) 1236 */ 1237 #define IS_SMARTCARD_NACK(__NACK__) (((__NACK__) == SMARTCARD_NACK_ENABLE) || \ 1238 ((__NACK__) == SMARTCARD_NACK_DISABLE)) 1239 1240 /** @brief Ensure that SMARTCARD receiver timeout setting is valid. 1241 * @param __TIMEOUT__ SMARTCARD receiver timeout setting. 1242 * @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid) 1243 */ 1244 #define IS_SMARTCARD_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == SMARTCARD_TIMEOUT_DISABLE) || \ 1245 ((__TIMEOUT__) == SMARTCARD_TIMEOUT_ENABLE)) 1246 1247 /** @brief Ensure that SMARTCARD clock Prescaler is valid. 1248 * @param __CLOCKPRESCALER__ SMARTCARD clock Prescaler value. 1249 * @retval SET (__CLOCKPRESCALER__ is valid) or RESET (__CLOCKPRESCALER__ is invalid) 1250 */ 1251 #define IS_SMARTCARD_CLOCKPRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV1) || \ 1252 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV2) || \ 1253 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV4) || \ 1254 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV6) || \ 1255 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV8) || \ 1256 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV10) || \ 1257 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV12) || \ 1258 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV16) || \ 1259 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV32) || \ 1260 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV64) || \ 1261 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV128) || \ 1262 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV256)) 1263 1264 /** @brief Ensure that SMARTCARD advanced features initialization is valid. 1265 * @param __INIT__ SMARTCARD advanced features initialization. 1266 * @retval SET (__INIT__ is valid) or RESET (__INIT__ is invalid) 1267 */ 1268 #define IS_SMARTCARD_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (SMARTCARD_ADVFEATURE_NO_INIT | \ 1269 SMARTCARD_ADVFEATURE_TXINVERT_INIT | \ 1270 SMARTCARD_ADVFEATURE_RXINVERT_INIT | \ 1271 SMARTCARD_ADVFEATURE_DATAINVERT_INIT | \ 1272 SMARTCARD_ADVFEATURE_SWAP_INIT | \ 1273 SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT | \ 1274 SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT | \ 1275 SMARTCARD_ADVFEATURE_MSBFIRST_INIT)) 1276 1277 /** @brief Ensure that SMARTCARD frame TX inversion setting is valid. 1278 * @param __TXINV__ SMARTCARD frame TX inversion setting. 1279 * @retval SET (__TXINV__ is valid) or RESET (__TXINV__ is invalid) 1280 */ 1281 #define IS_SMARTCARD_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_DISABLE) || \ 1282 ((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_ENABLE)) 1283 1284 /** @brief Ensure that SMARTCARD frame RX inversion setting is valid. 1285 * @param __RXINV__ SMARTCARD frame RX inversion setting. 1286 * @retval SET (__RXINV__ is valid) or RESET (__RXINV__ is invalid) 1287 */ 1288 #define IS_SMARTCARD_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_DISABLE) || \ 1289 ((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_ENABLE)) 1290 1291 /** @brief Ensure that SMARTCARD frame data inversion setting is valid. 1292 * @param __DATAINV__ SMARTCARD frame data inversion setting. 1293 * @retval SET (__DATAINV__ is valid) or RESET (__DATAINV__ is invalid) 1294 */ 1295 #define IS_SMARTCARD_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_DISABLE) || \ 1296 ((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_ENABLE)) 1297 1298 /** @brief Ensure that SMARTCARD frame RX/TX pins swap setting is valid. 1299 * @param __SWAP__ SMARTCARD frame RX/TX pins swap setting. 1300 * @retval SET (__SWAP__ is valid) or RESET (__SWAP__ is invalid) 1301 */ 1302 #define IS_SMARTCARD_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_DISABLE) || \ 1303 ((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_ENABLE)) 1304 1305 /** @brief Ensure that SMARTCARD frame overrun setting is valid. 1306 * @param __OVERRUN__ SMARTCARD frame overrun setting. 1307 * @retval SET (__OVERRUN__ is valid) or RESET (__OVERRUN__ is invalid) 1308 */ 1309 #define IS_SMARTCARD_OVERRUN(__OVERRUN__) (((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_ENABLE) || \ 1310 ((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_DISABLE)) 1311 1312 /** @brief Ensure that SMARTCARD DMA enabling or disabling on error setting is valid. 1313 * @param __DMA__ SMARTCARD DMA enabling or disabling on error setting. 1314 * @retval SET (__DMA__ is valid) or RESET (__DMA__ is invalid) 1315 */ 1316 #define IS_SMARTCARD_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR) || \ 1317 ((__DMA__) == SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR)) 1318 1319 /** @brief Ensure that SMARTCARD frame MSB first setting is valid. 1320 * @param __MSBFIRST__ SMARTCARD frame MSB first setting. 1321 * @retval SET (__MSBFIRST__ is valid) or RESET (__MSBFIRST__ is invalid) 1322 */ 1323 #define IS_SMARTCARD_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE) || \ 1324 ((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE)) 1325 1326 /** @brief Ensure that SMARTCARD request parameter is valid. 1327 * @param __PARAM__ SMARTCARD request parameter. 1328 * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid) 1329 */ 1330 #define IS_SMARTCARD_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == SMARTCARD_RXDATA_FLUSH_REQUEST) || \ 1331 ((__PARAM__) == SMARTCARD_TXDATA_FLUSH_REQUEST)) 1332 1333 /** 1334 * @} 1335 */ 1336 1337 /* Include SMARTCARD HAL Extended module */ 1338 #include "stm32h7xx_hal_smartcard_ex.h" 1339 1340 /* Exported functions --------------------------------------------------------*/ 1341 /** @addtogroup SMARTCARD_Exported_Functions 1342 * @{ 1343 */ 1344 1345 /* Initialization and de-initialization functions ****************************/ 1346 /** @addtogroup SMARTCARD_Exported_Functions_Group1 1347 * @{ 1348 */ 1349 1350 HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard); 1351 HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard); 1352 void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard); 1353 void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard); 1354 1355 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 1356 /* Callbacks Register/UnRegister functions ***********************************/ 1357 HAL_StatusTypeDef HAL_SMARTCARD_RegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, 1358 HAL_SMARTCARD_CallbackIDTypeDef CallbackID, 1359 pSMARTCARD_CallbackTypeDef pCallback); 1360 HAL_StatusTypeDef HAL_SMARTCARD_UnRegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, 1361 HAL_SMARTCARD_CallbackIDTypeDef CallbackID); 1362 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 1363 1364 /** 1365 * @} 1366 */ 1367 1368 /* IO operation functions *****************************************************/ 1369 /** @addtogroup SMARTCARD_Exported_Functions_Group2 1370 * @{ 1371 */ 1372 1373 HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size, 1374 uint32_t Timeout); 1375 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, 1376 uint32_t Timeout); 1377 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size); 1378 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size); 1379 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size); 1380 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size); 1381 /* Transfer Abort functions */ 1382 HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard); 1383 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard); 1384 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard); 1385 HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard); 1386 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard); 1387 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard); 1388 1389 void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard); 1390 void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 1391 void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 1392 void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard); 1393 void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 1394 void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 1395 void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 1396 1397 /** 1398 * @} 1399 */ 1400 1401 /* Peripheral State and Error functions ***************************************/ 1402 /** @addtogroup SMARTCARD_Exported_Functions_Group4 1403 * @{ 1404 */ 1405 1406 HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(const SMARTCARD_HandleTypeDef *hsmartcard); 1407 uint32_t HAL_SMARTCARD_GetError(const SMARTCARD_HandleTypeDef *hsmartcard); 1408 1409 /** 1410 * @} 1411 */ 1412 1413 /** 1414 * @} 1415 */ 1416 1417 /** 1418 * @} 1419 */ 1420 1421 /** 1422 * @} 1423 */ 1424 1425 #ifdef __cplusplus 1426 } 1427 #endif 1428 1429 #endif /* STM32H7xx_HAL_SMARTCARD_H */ 1430
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |