STM32H735xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32h7xx_hal_smartcard_ex.h 00004 * @author MCD Application Team 00005 * @brief Header file of SMARTCARD HAL Extended module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2017 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * This software is licensed under terms that can be found in the LICENSE file 00013 * in the root directory of this software component. 00014 * If no LICENSE file comes with this software, it is provided AS-IS. 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* Define to prevent recursive inclusion -------------------------------------*/ 00020 #ifndef STM32H7xx_HAL_SMARTCARD_EX_H 00021 #define STM32H7xx_HAL_SMARTCARD_EX_H 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 #include "stm32h7xx_hal_def.h" 00029 00030 /** @addtogroup STM32H7xx_HAL_Driver 00031 * @{ 00032 */ 00033 00034 /** @addtogroup SMARTCARDEx 00035 * @{ 00036 */ 00037 00038 /* Exported types ------------------------------------------------------------*/ 00039 /* Exported constants --------------------------------------------------------*/ 00040 00041 /** @addtogroup SMARTCARDEx_Exported_Constants SMARTCARD Extended Exported Constants 00042 * @{ 00043 */ 00044 00045 /** @defgroup SMARTCARDEx_Transmission_Completion_Indication SMARTCARD Transmission Completion Indication 00046 * @{ 00047 */ 00048 #define SMARTCARD_TCBGT SMARTCARD_IT_TCBGT /*!< SMARTCARD transmission complete before guard time */ 00049 #define SMARTCARD_TC SMARTCARD_IT_TC /*!< SMARTCARD transmission complete (flag raised when guard time has elapsed) */ 00050 /** 00051 * @} 00052 */ 00053 00054 /** @defgroup SMARTCARDEx_Advanced_Features_Initialization_Type SMARTCARD advanced feature initialization type 00055 * @{ 00056 */ 00057 #define SMARTCARD_ADVFEATURE_NO_INIT 0x00000000U /*!< No advanced feature initialization */ 00058 #define SMARTCARD_ADVFEATURE_TXINVERT_INIT 0x00000001U /*!< TX pin active level inversion */ 00059 #define SMARTCARD_ADVFEATURE_RXINVERT_INIT 0x00000002U /*!< RX pin active level inversion */ 00060 #define SMARTCARD_ADVFEATURE_DATAINVERT_INIT 0x00000004U /*!< Binary data inversion */ 00061 #define SMARTCARD_ADVFEATURE_SWAP_INIT 0x00000008U /*!< TX/RX pins swap */ 00062 #define SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT 0x00000010U /*!< RX overrun disable */ 00063 #define SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT 0x00000020U /*!< DMA disable on Reception Error */ 00064 #define SMARTCARD_ADVFEATURE_MSBFIRST_INIT 0x00000080U /*!< Most significant bit sent/received first */ 00065 #define SMARTCARD_ADVFEATURE_TXCOMPLETION 0x00000100U /*!< TX completion indication before of after guard time */ 00066 /** 00067 * @} 00068 */ 00069 00070 /** @defgroup SMARTCARDEx_FIFO_mode SMARTCARD FIFO mode 00071 * @brief SMARTCARD FIFO mode 00072 * @{ 00073 */ 00074 #define SMARTCARD_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable */ 00075 #define SMARTCARD_FIFOMODE_ENABLE USART_CR1_FIFOEN /*!< FIFO mode enable */ 00076 /** 00077 * @} 00078 */ 00079 00080 /** @defgroup SMARTCARDEx_TXFIFO_threshold_level SMARTCARD TXFIFO threshold level 00081 * @brief SMARTCARD TXFIFO level 00082 * @{ 00083 */ 00084 #define SMARTCARD_TXFIFO_THRESHOLD_1_8 0x00000000U /*!< TXFIFO reaches 1/8 of its depth */ 00085 #define SMARTCARD_TXFIFO_THRESHOLD_1_4 USART_CR3_TXFTCFG_0 /*!< TXFIFO reaches 1/4 of its depth */ 00086 #define SMARTCARD_TXFIFO_THRESHOLD_1_2 USART_CR3_TXFTCFG_1 /*!< TXFIFO reaches 1/2 of its depth */ 00087 #define SMARTCARD_TXFIFO_THRESHOLD_3_4 (USART_CR3_TXFTCFG_0|USART_CR3_TXFTCFG_1) /*!< TXFIFO reaches 3/4 of its depth */ 00088 #define SMARTCARD_TXFIFO_THRESHOLD_7_8 USART_CR3_TXFTCFG_2 /*!< TXFIFO reaches 7/8 of its depth */ 00089 #define SMARTCARD_TXFIFO_THRESHOLD_8_8 (USART_CR3_TXFTCFG_2|USART_CR3_TXFTCFG_0) /*!< TXFIFO becomes empty */ 00090 /** 00091 * @} 00092 */ 00093 00094 /** @defgroup SMARTCARDEx_RXFIFO_threshold_level SMARTCARD RXFIFO threshold level 00095 * @brief SMARTCARD RXFIFO level 00096 * @{ 00097 */ 00098 #define SMARTCARD_RXFIFO_THRESHOLD_1_8 0x00000000U /*!< RXFIFO FIFO reaches 1/8 of its depth */ 00099 #define SMARTCARD_RXFIFO_THRESHOLD_1_4 USART_CR3_RXFTCFG_0 /*!< RXFIFO FIFO reaches 1/4 of its depth */ 00100 #define SMARTCARD_RXFIFO_THRESHOLD_1_2 USART_CR3_RXFTCFG_1 /*!< RXFIFO FIFO reaches 1/2 of its depth */ 00101 #define SMARTCARD_RXFIFO_THRESHOLD_3_4 (USART_CR3_RXFTCFG_0|USART_CR3_RXFTCFG_1) /*!< RXFIFO FIFO reaches 3/4 of its depth */ 00102 #define SMARTCARD_RXFIFO_THRESHOLD_7_8 USART_CR3_RXFTCFG_2 /*!< RXFIFO FIFO reaches 7/8 of its depth */ 00103 #define SMARTCARD_RXFIFO_THRESHOLD_8_8 (USART_CR3_RXFTCFG_2|USART_CR3_RXFTCFG_0) /*!< RXFIFO FIFO becomes full */ 00104 /** 00105 * @} 00106 */ 00107 00108 /** @defgroup SMARTCARDEx_Flags SMARTCARD Flags 00109 * Elements values convention: 0xXXXX 00110 * - 0xXXXX : Flag mask in the ISR register 00111 * @{ 00112 */ 00113 #define SMARTCARD_FLAG_TCBGT USART_ISR_TCBGT /*!< SMARTCARD transmission complete before guard time completion */ 00114 #define SMARTCARD_FLAG_REACK USART_ISR_REACK /*!< SMARTCARD receive enable acknowledge flag */ 00115 #define SMARTCARD_FLAG_TEACK USART_ISR_TEACK /*!< SMARTCARD transmit enable acknowledge flag */ 00116 #define SMARTCARD_FLAG_BUSY USART_ISR_BUSY /*!< SMARTCARD busy flag */ 00117 #define SMARTCARD_FLAG_EOBF USART_ISR_EOBF /*!< SMARTCARD end of block flag */ 00118 #define SMARTCARD_FLAG_RTOF USART_ISR_RTOF /*!< SMARTCARD receiver timeout flag */ 00119 #define SMARTCARD_FLAG_TXE USART_ISR_TXE_TXFNF /*!< SMARTCARD transmit data register empty */ 00120 #define SMARTCARD_FLAG_TXFNF USART_ISR_TXE_TXFNF /*!< SMARTCARD TXFIFO not full */ 00121 #define SMARTCARD_FLAG_TC USART_ISR_TC /*!< SMARTCARD transmission complete */ 00122 #define SMARTCARD_FLAG_RXNE USART_ISR_RXNE_RXFNE /*!< SMARTCARD read data register not empty */ 00123 #define SMARTCARD_FLAG_RXFNE USART_ISR_RXNE_RXFNE /*!< SMARTCARD RXFIFO not empty */ 00124 #define SMARTCARD_FLAG_IDLE USART_ISR_IDLE /*!< SMARTCARD idle line detection */ 00125 #define SMARTCARD_FLAG_ORE USART_ISR_ORE /*!< SMARTCARD overrun error */ 00126 #define SMARTCARD_FLAG_NE USART_ISR_NE /*!< SMARTCARD noise error */ 00127 #define SMARTCARD_FLAG_FE USART_ISR_FE /*!< SMARTCARD frame error */ 00128 #define SMARTCARD_FLAG_PE USART_ISR_PE /*!< SMARTCARD parity error */ 00129 #define SMARTCARD_FLAG_TXFE USART_ISR_TXFE /*!< SMARTCARD TXFIFO Empty flag */ 00130 #define SMARTCARD_FLAG_RXFF USART_ISR_RXFF /*!< SMARTCARD RXFIFO Full flag */ 00131 #define SMARTCARD_FLAG_RXFT USART_ISR_RXFT /*!< SMARTCARD RXFIFO threshold flag */ 00132 #define SMARTCARD_FLAG_TXFT USART_ISR_TXFT /*!< SMARTCARD TXFIFO threshold flag */ 00133 /** 00134 * @} 00135 */ 00136 00137 /** @defgroup SMARTCARDEx_Interrupt_definition SMARTCARD Interrupts Definition 00138 * Elements values convention: 000ZZZZZ0XXYYYYYb 00139 * - YYYYY : Interrupt source position in the XX register (5 bits) 00140 * - XX : Interrupt source register (2 bits) 00141 * - 01: CR1 register 00142 * - 10: CR2 register 00143 * - 11: CR3 register 00144 * - ZZZZZ : Flag position in the ISR register(5 bits) 00145 * @{ 00146 */ 00147 #define SMARTCARD_IT_PE 0x0028U /*!< SMARTCARD parity error interruption */ 00148 #define SMARTCARD_IT_TXE 0x0727U /*!< SMARTCARD transmit data register empty interruption */ 00149 #define SMARTCARD_IT_TXFNF 0x0727U /*!< SMARTCARD TX FIFO not full interruption */ 00150 #define SMARTCARD_IT_TC 0x0626U /*!< SMARTCARD transmission complete interruption */ 00151 #define SMARTCARD_IT_RXNE 0x0525U /*!< SMARTCARD read data register not empty interruption */ 00152 #define SMARTCARD_IT_RXFNE 0x0525U /*!< SMARTCARD RXFIFO not empty interruption */ 00153 #define SMARTCARD_IT_IDLE 0x0424U /*!< SMARTCARD idle line detection interruption */ 00154 00155 #define SMARTCARD_IT_ERR 0x0060U /*!< SMARTCARD error interruption */ 00156 #define SMARTCARD_IT_ORE 0x0300U /*!< SMARTCARD overrun error interruption */ 00157 #define SMARTCARD_IT_NE 0x0200U /*!< SMARTCARD noise error interruption */ 00158 #define SMARTCARD_IT_FE 0x0100U /*!< SMARTCARD frame error interruption */ 00159 00160 #define SMARTCARD_IT_EOB 0x0C3BU /*!< SMARTCARD end of block interruption */ 00161 #define SMARTCARD_IT_RTO 0x0B3AU /*!< SMARTCARD receiver timeout interruption */ 00162 #define SMARTCARD_IT_TCBGT 0x1978U /*!< SMARTCARD transmission complete before guard time completion interruption */ 00163 00164 #define SMARTCARD_IT_RXFF 0x183FU /*!< SMARTCARD RXFIFO full interruption */ 00165 #define SMARTCARD_IT_TXFE 0x173EU /*!< SMARTCARD TXFIFO empty interruption */ 00166 #define SMARTCARD_IT_RXFT 0x1A7CU /*!< SMARTCARD RXFIFO threshold reached interruption */ 00167 #define SMARTCARD_IT_TXFT 0x1B77U /*!< SMARTCARD TXFIFO threshold reached interruption */ 00168 /** 00169 * @} 00170 */ 00171 00172 /** @defgroup SMARTCARDEx_IT_CLEAR_Flags SMARTCARD Interruption Clear Flags 00173 * @{ 00174 */ 00175 #define SMARTCARD_CLEAR_PEF USART_ICR_PECF /*!< SMARTCARD parity error clear flag */ 00176 #define SMARTCARD_CLEAR_FEF USART_ICR_FECF /*!< SMARTCARD framing error clear flag */ 00177 #define SMARTCARD_CLEAR_NEF USART_ICR_NECF /*!< SMARTCARD noise error detected clear flag */ 00178 #define SMARTCARD_CLEAR_OREF USART_ICR_ORECF /*!< SMARTCARD overrun error clear flag */ 00179 #define SMARTCARD_CLEAR_IDLEF USART_ICR_IDLECF /*!< SMARTCARD idle line detected clear flag */ 00180 #define SMARTCARD_CLEAR_TXFECF USART_ICR_TXFECF /*!< TXFIFO empty Clear Flag */ 00181 #define SMARTCARD_CLEAR_TCF USART_ICR_TCCF /*!< SMARTCARD transmission complete clear flag */ 00182 #define SMARTCARD_CLEAR_TCBGTF USART_ICR_TCBGTCF /*!< SMARTCARD transmission complete before guard time completion clear flag */ 00183 #define SMARTCARD_CLEAR_RTOF USART_ICR_RTOCF /*!< SMARTCARD receiver time out clear flag */ 00184 #define SMARTCARD_CLEAR_EOBF USART_ICR_EOBCF /*!< SMARTCARD end of block clear flag */ 00185 /** 00186 * @} 00187 */ 00188 00189 /** 00190 * @} 00191 */ 00192 /* Exported macros -----------------------------------------------------------*/ 00193 /* Private macros ------------------------------------------------------------*/ 00194 /** @defgroup SMARTCARDEx_Private_Macros SMARTCARD Extended Private Macros 00195 * @{ 00196 */ 00197 00198 /** @brief Set the Transmission Completion flag 00199 * @param __HANDLE__ specifies the SMARTCARD Handle. 00200 * @note If TCBGT (Transmission Complete Before Guard Time) flag is not available or if 00201 * AdvancedInit.TxCompletionIndication is not already filled, the latter is forced 00202 * to SMARTCARD_TC (transmission completion indication when guard time has elapsed). 00203 * @retval None 00204 */ 00205 #define SMARTCARD_TRANSMISSION_COMPLETION_SETTING(__HANDLE__) \ 00206 do { \ 00207 if (HAL_IS_BIT_CLR((__HANDLE__)->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_TXCOMPLETION)) \ 00208 { \ 00209 (__HANDLE__)->AdvancedInit.TxCompletionIndication = SMARTCARD_TC; \ 00210 } \ 00211 else \ 00212 { \ 00213 assert_param(IS_SMARTCARD_TRANSMISSION_COMPLETION((__HANDLE__)->AdvancedInit.TxCompletionIndication)); \ 00214 } \ 00215 } while(0U) 00216 00217 /** @brief Return the transmission completion flag. 00218 * @param __HANDLE__ specifies the SMARTCARD Handle. 00219 * @note Based on AdvancedInit.TxCompletionIndication setting, return TC or TCBGT flag. 00220 * When TCBGT flag (Transmission Complete Before Guard Time) is not available, TC flag is 00221 * reported. 00222 * @retval Transmission completion flag 00223 */ 00224 #define SMARTCARD_TRANSMISSION_COMPLETION_FLAG(__HANDLE__) \ 00225 (((__HANDLE__)->AdvancedInit.TxCompletionIndication == SMARTCARD_TC) ? (SMARTCARD_FLAG_TC) : (SMARTCARD_FLAG_TCBGT)) 00226 00227 00228 /** @brief Ensure that SMARTCARD frame transmission completion used flag is valid. 00229 * @param __TXCOMPLETE__ SMARTCARD frame transmission completion used flag. 00230 * @retval SET (__TXCOMPLETE__ is valid) or RESET (__TXCOMPLETE__ is invalid) 00231 */ 00232 #define IS_SMARTCARD_TRANSMISSION_COMPLETION(__TXCOMPLETE__) (((__TXCOMPLETE__) == SMARTCARD_TCBGT) || \ 00233 ((__TXCOMPLETE__) == SMARTCARD_TC)) 00234 00235 /** @brief Ensure that SMARTCARD FIFO mode is valid. 00236 * @param __STATE__ SMARTCARD FIFO mode. 00237 * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid) 00238 */ 00239 #define IS_SMARTCARD_FIFOMODE_STATE(__STATE__) (((__STATE__) == SMARTCARD_FIFOMODE_DISABLE ) || \ 00240 ((__STATE__) == SMARTCARD_FIFOMODE_ENABLE)) 00241 00242 /** @brief Ensure that SMARTCARD TXFIFO threshold level is valid. 00243 * @param __THRESHOLD__ SMARTCARD TXFIFO threshold level. 00244 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid) 00245 */ 00246 #define IS_SMARTCARD_TXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_8) || \ 00247 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_4) || \ 00248 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_2) || \ 00249 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_3_4) || \ 00250 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_7_8) || \ 00251 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_8_8)) 00252 00253 /** @brief Ensure that SMARTCARD RXFIFO threshold level is valid. 00254 * @param __THRESHOLD__ SMARTCARD RXFIFO threshold level. 00255 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid) 00256 */ 00257 #define IS_SMARTCARD_RXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_8) || \ 00258 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_4) || \ 00259 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_2) || \ 00260 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_3_4) || \ 00261 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_7_8) || \ 00262 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_8_8)) 00263 00264 /** 00265 * @} 00266 */ 00267 00268 /* Exported functions --------------------------------------------------------*/ 00269 /** @addtogroup SMARTCARDEx_Exported_Functions 00270 * @{ 00271 */ 00272 00273 /* Initialization and de-initialization functions ****************************/ 00274 /* IO operation methods *******************************************************/ 00275 00276 /** @addtogroup SMARTCARDEx_Exported_Functions_Group1 00277 * @{ 00278 */ 00279 00280 /* Peripheral Control functions ***********************************************/ 00281 void HAL_SMARTCARDEx_BlockLength_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t BlockLength); 00282 void HAL_SMARTCARDEx_TimeOut_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t TimeOutValue); 00283 HAL_StatusTypeDef HAL_SMARTCARDEx_EnableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard); 00284 HAL_StatusTypeDef HAL_SMARTCARDEx_DisableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard); 00285 00286 /** 00287 * @} 00288 */ 00289 00290 /* Exported functions --------------------------------------------------------*/ 00291 /** @addtogroup SMARTCARDEx_Exported_Functions_Group2 00292 * @{ 00293 */ 00294 00295 /* IO operation functions *****************************************************/ 00296 void HAL_SMARTCARDEx_RxFifoFullCallback(SMARTCARD_HandleTypeDef *hsmartcard); 00297 void HAL_SMARTCARDEx_TxFifoEmptyCallback(SMARTCARD_HandleTypeDef *hsmartcard); 00298 00299 /** 00300 * @} 00301 */ 00302 00303 /** @addtogroup SMARTCARDEx_Exported_Functions_Group3 00304 * @{ 00305 */ 00306 00307 /* Peripheral Control functions ***********************************************/ 00308 HAL_StatusTypeDef HAL_SMARTCARDEx_EnableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard); 00309 HAL_StatusTypeDef HAL_SMARTCARDEx_DisableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard); 00310 HAL_StatusTypeDef HAL_SMARTCARDEx_SetTxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold); 00311 HAL_StatusTypeDef HAL_SMARTCARDEx_SetRxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold); 00312 00313 /** 00314 * @} 00315 */ 00316 00317 /** 00318 * @} 00319 */ 00320 00321 /* Private functions ---------------------------------------------------------*/ 00322 00323 /** 00324 * @} 00325 */ 00326 00327 /** 00328 * @} 00329 */ 00330 00331 #ifdef __cplusplus 00332 } 00333 #endif 00334 00335 #endif /* STM32H7xx_HAL_SMARTCARD_EX_H */ 00336