![]() |
|
|||
File indexing completed on 2025-05-11 08:23:36
0001 /** 0002 ****************************************************************************** 0003 * @file stm32h7xx_hal_smartcard_ex.h 0004 * @author MCD Application Team 0005 * @brief Header file of SMARTCARD HAL Extended 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_EX_H 0021 #define STM32H7xx_HAL_SMARTCARD_EX_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 SMARTCARDEx 0035 * @{ 0036 */ 0037 0038 /* Exported types ------------------------------------------------------------*/ 0039 /* Exported constants --------------------------------------------------------*/ 0040 0041 /** @addtogroup SMARTCARDEx_Exported_Constants SMARTCARD Extended Exported Constants 0042 * @{ 0043 */ 0044 0045 /** @defgroup SMARTCARDEx_Transmission_Completion_Indication SMARTCARD Transmission Completion Indication 0046 * @ingroup RTEMSBSPsARMSTM32H7 0047 * @{ 0048 */ 0049 #define SMARTCARD_TCBGT SMARTCARD_IT_TCBGT /*!< SMARTCARD transmission complete before guard time */ 0050 #define SMARTCARD_TC SMARTCARD_IT_TC /*!< SMARTCARD transmission complete (flag raised when guard time has elapsed) */ 0051 /** 0052 * @} 0053 */ 0054 0055 /** @defgroup SMARTCARDEx_Advanced_Features_Initialization_Type SMARTCARD advanced feature initialization type 0056 * @ingroup RTEMSBSPsARMSTM32H7 0057 * @{ 0058 */ 0059 #define SMARTCARD_ADVFEATURE_NO_INIT 0x00000000U /*!< No advanced feature initialization */ 0060 #define SMARTCARD_ADVFEATURE_TXINVERT_INIT 0x00000001U /*!< TX pin active level inversion */ 0061 #define SMARTCARD_ADVFEATURE_RXINVERT_INIT 0x00000002U /*!< RX pin active level inversion */ 0062 #define SMARTCARD_ADVFEATURE_DATAINVERT_INIT 0x00000004U /*!< Binary data inversion */ 0063 #define SMARTCARD_ADVFEATURE_SWAP_INIT 0x00000008U /*!< TX/RX pins swap */ 0064 #define SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT 0x00000010U /*!< RX overrun disable */ 0065 #define SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT 0x00000020U /*!< DMA disable on Reception Error */ 0066 #define SMARTCARD_ADVFEATURE_MSBFIRST_INIT 0x00000080U /*!< Most significant bit sent/received first */ 0067 #define SMARTCARD_ADVFEATURE_TXCOMPLETION 0x00000100U /*!< TX completion indication before of after guard time */ 0068 /** 0069 * @} 0070 */ 0071 0072 /** @defgroup SMARTCARDEx_FIFO_mode SMARTCARD FIFO mode 0073 * @ingroup RTEMSBSPsARMSTM32H7 0074 * @brief SMARTCARD FIFO mode 0075 * @{ 0076 */ 0077 #define SMARTCARD_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable */ 0078 #define SMARTCARD_FIFOMODE_ENABLE USART_CR1_FIFOEN /*!< FIFO mode enable */ 0079 /** 0080 * @} 0081 */ 0082 0083 /** @defgroup SMARTCARDEx_TXFIFO_threshold_level SMARTCARD TXFIFO threshold level 0084 * @ingroup RTEMSBSPsARMSTM32H7 0085 * @brief SMARTCARD TXFIFO level 0086 * @{ 0087 */ 0088 #define SMARTCARD_TXFIFO_THRESHOLD_1_8 0x00000000U /*!< TXFIFO reaches 1/8 of its depth */ 0089 #define SMARTCARD_TXFIFO_THRESHOLD_1_4 USART_CR3_TXFTCFG_0 /*!< TXFIFO reaches 1/4 of its depth */ 0090 #define SMARTCARD_TXFIFO_THRESHOLD_1_2 USART_CR3_TXFTCFG_1 /*!< TXFIFO reaches 1/2 of its depth */ 0091 #define SMARTCARD_TXFIFO_THRESHOLD_3_4 (USART_CR3_TXFTCFG_0|USART_CR3_TXFTCFG_1) /*!< TXFIFO reaches 3/4 of its depth */ 0092 #define SMARTCARD_TXFIFO_THRESHOLD_7_8 USART_CR3_TXFTCFG_2 /*!< TXFIFO reaches 7/8 of its depth */ 0093 #define SMARTCARD_TXFIFO_THRESHOLD_8_8 (USART_CR3_TXFTCFG_2|USART_CR3_TXFTCFG_0) /*!< TXFIFO becomes empty */ 0094 /** 0095 * @} 0096 */ 0097 0098 /** @defgroup SMARTCARDEx_RXFIFO_threshold_level SMARTCARD RXFIFO threshold level 0099 * @ingroup RTEMSBSPsARMSTM32H7 0100 * @brief SMARTCARD RXFIFO level 0101 * @{ 0102 */ 0103 #define SMARTCARD_RXFIFO_THRESHOLD_1_8 0x00000000U /*!< RXFIFO FIFO reaches 1/8 of its depth */ 0104 #define SMARTCARD_RXFIFO_THRESHOLD_1_4 USART_CR3_RXFTCFG_0 /*!< RXFIFO FIFO reaches 1/4 of its depth */ 0105 #define SMARTCARD_RXFIFO_THRESHOLD_1_2 USART_CR3_RXFTCFG_1 /*!< RXFIFO FIFO reaches 1/2 of its depth */ 0106 #define SMARTCARD_RXFIFO_THRESHOLD_3_4 (USART_CR3_RXFTCFG_0|USART_CR3_RXFTCFG_1) /*!< RXFIFO FIFO reaches 3/4 of its depth */ 0107 #define SMARTCARD_RXFIFO_THRESHOLD_7_8 USART_CR3_RXFTCFG_2 /*!< RXFIFO FIFO reaches 7/8 of its depth */ 0108 #define SMARTCARD_RXFIFO_THRESHOLD_8_8 (USART_CR3_RXFTCFG_2|USART_CR3_RXFTCFG_0) /*!< RXFIFO FIFO becomes full */ 0109 /** 0110 * @} 0111 */ 0112 0113 /** @defgroup SMARTCARDEx_Flags SMARTCARD Flags 0114 * @ingroup RTEMSBSPsARMSTM32H7 0115 * Elements values convention: 0xXXXX 0116 * - 0xXXXX : Flag mask in the ISR register 0117 * @{ 0118 */ 0119 #define SMARTCARD_FLAG_TCBGT USART_ISR_TCBGT /*!< SMARTCARD transmission complete before guard time completion */ 0120 #define SMARTCARD_FLAG_REACK USART_ISR_REACK /*!< SMARTCARD receive enable acknowledge flag */ 0121 #define SMARTCARD_FLAG_TEACK USART_ISR_TEACK /*!< SMARTCARD transmit enable acknowledge flag */ 0122 #define SMARTCARD_FLAG_BUSY USART_ISR_BUSY /*!< SMARTCARD busy flag */ 0123 #define SMARTCARD_FLAG_EOBF USART_ISR_EOBF /*!< SMARTCARD end of block flag */ 0124 #define SMARTCARD_FLAG_RTOF USART_ISR_RTOF /*!< SMARTCARD receiver timeout flag */ 0125 #define SMARTCARD_FLAG_TXE USART_ISR_TXE_TXFNF /*!< SMARTCARD transmit data register empty */ 0126 #define SMARTCARD_FLAG_TXFNF USART_ISR_TXE_TXFNF /*!< SMARTCARD TXFIFO not full */ 0127 #define SMARTCARD_FLAG_TC USART_ISR_TC /*!< SMARTCARD transmission complete */ 0128 #define SMARTCARD_FLAG_RXNE USART_ISR_RXNE_RXFNE /*!< SMARTCARD read data register not empty */ 0129 #define SMARTCARD_FLAG_RXFNE USART_ISR_RXNE_RXFNE /*!< SMARTCARD RXFIFO not empty */ 0130 #define SMARTCARD_FLAG_IDLE USART_ISR_IDLE /*!< SMARTCARD idle line detection */ 0131 #define SMARTCARD_FLAG_ORE USART_ISR_ORE /*!< SMARTCARD overrun error */ 0132 #define SMARTCARD_FLAG_NE USART_ISR_NE /*!< SMARTCARD noise error */ 0133 #define SMARTCARD_FLAG_FE USART_ISR_FE /*!< SMARTCARD frame error */ 0134 #define SMARTCARD_FLAG_PE USART_ISR_PE /*!< SMARTCARD parity error */ 0135 #define SMARTCARD_FLAG_TXFE USART_ISR_TXFE /*!< SMARTCARD TXFIFO Empty flag */ 0136 #define SMARTCARD_FLAG_RXFF USART_ISR_RXFF /*!< SMARTCARD RXFIFO Full flag */ 0137 #define SMARTCARD_FLAG_RXFT USART_ISR_RXFT /*!< SMARTCARD RXFIFO threshold flag */ 0138 #define SMARTCARD_FLAG_TXFT USART_ISR_TXFT /*!< SMARTCARD TXFIFO threshold flag */ 0139 /** 0140 * @} 0141 */ 0142 0143 /** @defgroup SMARTCARDEx_Interrupt_definition SMARTCARD Interrupts Definition 0144 * @ingroup RTEMSBSPsARMSTM32H7 0145 * Elements values convention: 000ZZZZZ0XXYYYYYb 0146 * - YYYYY : Interrupt source position in the XX register (5 bits) 0147 * - XX : Interrupt source register (2 bits) 0148 * - 01: CR1 register 0149 * - 10: CR2 register 0150 * - 11: CR3 register 0151 * - ZZZZZ : Flag position in the ISR register(5 bits) 0152 * @{ 0153 */ 0154 #define SMARTCARD_IT_PE 0x0028U /*!< SMARTCARD parity error interruption */ 0155 #define SMARTCARD_IT_TXE 0x0727U /*!< SMARTCARD transmit data register empty interruption */ 0156 #define SMARTCARD_IT_TXFNF 0x0727U /*!< SMARTCARD TX FIFO not full interruption */ 0157 #define SMARTCARD_IT_TC 0x0626U /*!< SMARTCARD transmission complete interruption */ 0158 #define SMARTCARD_IT_RXNE 0x0525U /*!< SMARTCARD read data register not empty interruption */ 0159 #define SMARTCARD_IT_RXFNE 0x0525U /*!< SMARTCARD RXFIFO not empty interruption */ 0160 #define SMARTCARD_IT_IDLE 0x0424U /*!< SMARTCARD idle line detection interruption */ 0161 0162 #define SMARTCARD_IT_ERR 0x0060U /*!< SMARTCARD error interruption */ 0163 #define SMARTCARD_IT_ORE 0x0300U /*!< SMARTCARD overrun error interruption */ 0164 #define SMARTCARD_IT_NE 0x0200U /*!< SMARTCARD noise error interruption */ 0165 #define SMARTCARD_IT_FE 0x0100U /*!< SMARTCARD frame error interruption */ 0166 0167 #define SMARTCARD_IT_EOB 0x0C3BU /*!< SMARTCARD end of block interruption */ 0168 #define SMARTCARD_IT_RTO 0x0B3AU /*!< SMARTCARD receiver timeout interruption */ 0169 #define SMARTCARD_IT_TCBGT 0x1978U /*!< SMARTCARD transmission complete before guard time completion interruption */ 0170 0171 #define SMARTCARD_IT_RXFF 0x183FU /*!< SMARTCARD RXFIFO full interruption */ 0172 #define SMARTCARD_IT_TXFE 0x173EU /*!< SMARTCARD TXFIFO empty interruption */ 0173 #define SMARTCARD_IT_RXFT 0x1A7CU /*!< SMARTCARD RXFIFO threshold reached interruption */ 0174 #define SMARTCARD_IT_TXFT 0x1B77U /*!< SMARTCARD TXFIFO threshold reached interruption */ 0175 /** 0176 * @} 0177 */ 0178 0179 /** @defgroup SMARTCARDEx_IT_CLEAR_Flags SMARTCARD Interruption Clear Flags 0180 * @ingroup RTEMSBSPsARMSTM32H7 0181 * @{ 0182 */ 0183 #define SMARTCARD_CLEAR_PEF USART_ICR_PECF /*!< SMARTCARD parity error clear flag */ 0184 #define SMARTCARD_CLEAR_FEF USART_ICR_FECF /*!< SMARTCARD framing error clear flag */ 0185 #define SMARTCARD_CLEAR_NEF USART_ICR_NECF /*!< SMARTCARD noise error detected clear flag */ 0186 #define SMARTCARD_CLEAR_OREF USART_ICR_ORECF /*!< SMARTCARD overrun error clear flag */ 0187 #define SMARTCARD_CLEAR_IDLEF USART_ICR_IDLECF /*!< SMARTCARD idle line detected clear flag */ 0188 #define SMARTCARD_CLEAR_TXFECF USART_ICR_TXFECF /*!< TXFIFO empty Clear Flag */ 0189 #define SMARTCARD_CLEAR_TCF USART_ICR_TCCF /*!< SMARTCARD transmission complete clear flag */ 0190 #define SMARTCARD_CLEAR_TCBGTF USART_ICR_TCBGTCF /*!< SMARTCARD transmission complete before guard time completion clear flag */ 0191 #define SMARTCARD_CLEAR_RTOF USART_ICR_RTOCF /*!< SMARTCARD receiver time out clear flag */ 0192 #define SMARTCARD_CLEAR_EOBF USART_ICR_EOBCF /*!< SMARTCARD end of block clear flag */ 0193 /** 0194 * @} 0195 */ 0196 0197 /** 0198 * @} 0199 */ 0200 /* Exported macros -----------------------------------------------------------*/ 0201 /* Private macros ------------------------------------------------------------*/ 0202 /** @defgroup SMARTCARDEx_Private_Macros SMARTCARD Extended Private Macros 0203 * @ingroup RTEMSBSPsARMSTM32H7 0204 * @{ 0205 */ 0206 0207 /** @brief Set the Transmission Completion flag 0208 * @param __HANDLE__ specifies the SMARTCARD Handle. 0209 * @note If TCBGT (Transmission Complete Before Guard Time) flag is not available or if 0210 * AdvancedInit.TxCompletionIndication is not already filled, the latter is forced 0211 * to SMARTCARD_TC (transmission completion indication when guard time has elapsed). 0212 * @retval None 0213 */ 0214 #define SMARTCARD_TRANSMISSION_COMPLETION_SETTING(__HANDLE__) \ 0215 do { \ 0216 if (HAL_IS_BIT_CLR((__HANDLE__)->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_TXCOMPLETION)) \ 0217 { \ 0218 (__HANDLE__)->AdvancedInit.TxCompletionIndication = SMARTCARD_TC; \ 0219 } \ 0220 else \ 0221 { \ 0222 assert_param(IS_SMARTCARD_TRANSMISSION_COMPLETION((__HANDLE__)->AdvancedInit.TxCompletionIndication)); \ 0223 } \ 0224 } while(0U) 0225 0226 /** @brief Return the transmission completion flag. 0227 * @param __HANDLE__ specifies the SMARTCARD Handle. 0228 * @note Based on AdvancedInit.TxCompletionIndication setting, return TC or TCBGT flag. 0229 * When TCBGT flag (Transmission Complete Before Guard Time) is not available, TC flag is 0230 * reported. 0231 * @retval Transmission completion flag 0232 */ 0233 #define SMARTCARD_TRANSMISSION_COMPLETION_FLAG(__HANDLE__) \ 0234 (((__HANDLE__)->AdvancedInit.TxCompletionIndication == SMARTCARD_TC) ? (SMARTCARD_FLAG_TC) : (SMARTCARD_FLAG_TCBGT)) 0235 0236 0237 /** @brief Ensure that SMARTCARD frame transmission completion used flag is valid. 0238 * @param __TXCOMPLETE__ SMARTCARD frame transmission completion used flag. 0239 * @retval SET (__TXCOMPLETE__ is valid) or RESET (__TXCOMPLETE__ is invalid) 0240 */ 0241 #define IS_SMARTCARD_TRANSMISSION_COMPLETION(__TXCOMPLETE__) (((__TXCOMPLETE__) == SMARTCARD_TCBGT) || \ 0242 ((__TXCOMPLETE__) == SMARTCARD_TC)) 0243 0244 /** @brief Ensure that SMARTCARD FIFO mode is valid. 0245 * @param __STATE__ SMARTCARD FIFO mode. 0246 * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid) 0247 */ 0248 #define IS_SMARTCARD_FIFOMODE_STATE(__STATE__) (((__STATE__) == SMARTCARD_FIFOMODE_DISABLE ) || \ 0249 ((__STATE__) == SMARTCARD_FIFOMODE_ENABLE)) 0250 0251 /** @brief Ensure that SMARTCARD TXFIFO threshold level is valid. 0252 * @param __THRESHOLD__ SMARTCARD TXFIFO threshold level. 0253 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid) 0254 */ 0255 #define IS_SMARTCARD_TXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_8) || \ 0256 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_4) || \ 0257 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_2) || \ 0258 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_3_4) || \ 0259 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_7_8) || \ 0260 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_8_8)) 0261 0262 /** @brief Ensure that SMARTCARD RXFIFO threshold level is valid. 0263 * @param __THRESHOLD__ SMARTCARD RXFIFO threshold level. 0264 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid) 0265 */ 0266 #define IS_SMARTCARD_RXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_8) || \ 0267 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_4) || \ 0268 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_2) || \ 0269 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_3_4) || \ 0270 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_7_8) || \ 0271 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_8_8)) 0272 0273 /** 0274 * @} 0275 */ 0276 0277 /* Exported functions --------------------------------------------------------*/ 0278 /** @addtogroup SMARTCARDEx_Exported_Functions 0279 * @{ 0280 */ 0281 0282 /* Initialization and de-initialization functions ****************************/ 0283 /* IO operation methods *******************************************************/ 0284 0285 /** @addtogroup SMARTCARDEx_Exported_Functions_Group1 0286 * @{ 0287 */ 0288 0289 /* Peripheral Control functions ***********************************************/ 0290 void HAL_SMARTCARDEx_BlockLength_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t BlockLength); 0291 void HAL_SMARTCARDEx_TimeOut_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t TimeOutValue); 0292 HAL_StatusTypeDef HAL_SMARTCARDEx_EnableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard); 0293 HAL_StatusTypeDef HAL_SMARTCARDEx_DisableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard); 0294 0295 /** 0296 * @} 0297 */ 0298 0299 /* Exported functions --------------------------------------------------------*/ 0300 /** @addtogroup SMARTCARDEx_Exported_Functions_Group2 0301 * @{ 0302 */ 0303 0304 /* IO operation functions *****************************************************/ 0305 void HAL_SMARTCARDEx_RxFifoFullCallback(SMARTCARD_HandleTypeDef *hsmartcard); 0306 void HAL_SMARTCARDEx_TxFifoEmptyCallback(SMARTCARD_HandleTypeDef *hsmartcard); 0307 0308 /** 0309 * @} 0310 */ 0311 0312 /** @addtogroup SMARTCARDEx_Exported_Functions_Group3 0313 * @{ 0314 */ 0315 0316 /* Peripheral Control functions ***********************************************/ 0317 HAL_StatusTypeDef HAL_SMARTCARDEx_EnableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard); 0318 HAL_StatusTypeDef HAL_SMARTCARDEx_DisableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard); 0319 HAL_StatusTypeDef HAL_SMARTCARDEx_SetTxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold); 0320 HAL_StatusTypeDef HAL_SMARTCARDEx_SetRxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold); 0321 0322 /** 0323 * @} 0324 */ 0325 0326 /** 0327 * @} 0328 */ 0329 0330 /* Private functions ---------------------------------------------------------*/ 0331 0332 /** 0333 * @} 0334 */ 0335 0336 /** 0337 * @} 0338 */ 0339 0340 #ifdef __cplusplus 0341 } 0342 #endif 0343 0344 #endif /* STM32H7xx_HAL_SMARTCARD_EX_H */ 0345
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |