1 /**************************************************************************//** 2 * @file tk.h 3 * @version V1.00 4 * @brief TK Driver Header File 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 * @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. 8 ******************************************************************************/ 9 #ifndef __TK_H__ 10 #define __TK_H__ 11 12 #include "NuMicro.h" 13 14 #ifdef __cplusplus 15 extern "C" 16 { 17 #endif 18 19 20 /** @addtogroup Standard_Driver Standard Driver 21 @{ 22 */ 23 24 /** @addtogroup TK_Driver TK Driver 25 @{ 26 */ 27 28 /** @addtogroup TK_EXPORTED_CONSTANTS TK Exported Constants 29 @{ 30 */ 31 32 #define TK_SCAN_MODE_SINGLE (0UL) /*!< Touch key single scan mode */ 33 #define TK_SCAN_MODE_PERIODIC (TK_SCANC_TRG_EN_Msk) /*!< Touch key periodic scan mode */ 34 #define TK_SCAN_MODE_ALL_KEY (TK_REFC_SCAN_ALL_Msk) /*!< Touch key all keys scan mode */ 35 #define TK_SCAN_MODE_PERIODIC_ALL_KEY (TK_SCANC_TRG_EN_Msk | TK_REFC_SCAN_ALL_Msk) /*!< Touch key periodic with all keys scan mode */ 36 37 #define TK_SCAN_TRIGGER_SOURCE_TMR0 (1 << TK_SCANC_TMRTRG_EN_Pos) 38 #define TK_SCAN_TRIGGER_SOURCE_TMR1 (2 << TK_SCANC_TMRTRG_EN_Pos) 39 #define TK_SCAN_TRIGGER_SOURCE_TMR2 (3 << TK_SCANC_TMRTRG_EN_Pos) 40 #define TK_SCAN_TRIGGER_SOURCE_TMR3 (4 << TK_SCANC_TMRTRG_EN_Pos) 41 #define TK_SCAN_TRIGGER_SOURCE_LPTMR0 (8 << TK_SCANC_TMRTRG_EN_Pos) 42 #define TK_SCAN_TRIGGER_SOURCE_LPTMR1 (9 << TK_SCANC_TMRTRG_EN_Pos) 43 #define TK_SCAN_TRIGGER_SOURCE_TICKTMR0 (10 << TK_SCANC_TMRTRG_EN_Pos) 44 #define TK_SCAN_TRIGGER_SOURCE_TICKTMR1 (11 << TK_SCANC_TMRTRG_EN_Pos) 45 46 #define TK_SENSE_PULSE_1 (0UL << TK_REFC_PULSET_Pos) /*!< Touch key sensing pulse width is 1us */ 47 #define TK_SENSE_PULSE_2 (1UL << TK_REFC_PULSET_Pos) /*!< Touch key sensing pulse width is 2us */ 48 #define TK_SENSE_PULSE_4 (2UL << TK_REFC_PULSET_Pos) /*!< Touch key sensing pulse width is 4us */ 49 #define TK_SENSE_PULSE_8 (3UL << TK_REFC_PULSET_Pos) /*!< Touch key sensing pulse width is 8us */ 50 #define TK_SENSE_PULSE_250NS (6UL << TK_REFC_PULSET_Pos) /*!< Touch key sensing pulse width is 250ns */ 51 #define TK_SENSE_PULSE_500NS (7UL << TK_REFC_PULSET_Pos) /*!< Touch key sensing pulse width is 500ns */ 52 53 #define TK_SENSE_CNT_128 (0UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 128 */ 54 #define TK_SENSE_CNT_255 (1UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 255 */ 55 #define TK_SENSE_CNT_511 (2UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 511 */ 56 #define TK_SENSE_CNT_1023 (3UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 1023 */ 57 #define TK_SENSE_CNT_8 (4UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 8 */ 58 #define TK_SENSE_CNT_16 (5UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 16 */ 59 #define TK_SENSE_CNT_32 (6UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 32 */ 60 #define TK_SENSE_CNT_64 (7UL << TK_REFC_SENSET_Pos) /*!< Touch key sensing count is 64 */ 61 62 #define TK_AVCCH_1_DIV_16 (0UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 1/16 VDD */ 63 #define TK_AVCCH_1_DIV_8 (1UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 1/8 VDD */ 64 #define TK_AVCCH_3_DIV_16 (2UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 3/16 VDD */ 65 #define TK_AVCCH_1_DIV_4 (3UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 1/4 VDD */ 66 #define TK_AVCCH_5_DIV_16 (4UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 5/16 VDD */ 67 #define TK_AVCCH_3_DIV_8 (5UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 3/8 VDD */ 68 #define TK_AVCCH_7_DIV_16 (6UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 7/16 VDD */ 69 #define TK_AVCCH_1_DIV_2 (7UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 1/2 VDD */ 70 #define TK_AVCCH_1_DIV_32 (8UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 1/32 VDD */ 71 #define TK_AVCCH_2_DIV_32 (9UL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 2/32 VDD */ 72 #define TK_AVCCH_3_DIV_32 (0xAUL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 3/32 VDD */ 73 #define TK_AVCCH_4_DIV_32 (0xBUL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 4/32 VDD */ 74 #define TK_AVCCH_5_DIV_32 (0xCUL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 5/32 VDD */ 75 #define TK_AVCCH_6_DIV_32 (0xDUL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 6/32 VDD */ 76 #define TK_AVCCH_7_DIV_32 (0xEUL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 7/32 VDD */ 77 #define TK_AVCCH_8_DIV_32 (0xFUL << TK_SCANC_AVDDH_S_Pos) /*!< Touch key AVCCH voltage is 8/32 VDD */ 78 79 #define TK_TRG_EN_DISABLED (0UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction disabled */ 80 #define TK_TRG_EN_TMR0 (1UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction Timer0 */ 81 #define TK_TRG_EN_TMR1 (2UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction Timer1 */ 82 #define TK_TRG_EN_TMR2 (3UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction Timer2 */ 83 #define TK_TRG_EN_TMR3 (4UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction Timer3 */ 84 #define TK_TRG_EN_RTC (5UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction RTC */ 85 #define TK_TRG_EN_LPTMR0 (8UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction LP Timer0 */ 86 #define TK_TRG_EN_LPTMR1 (9UL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction LP Timer1 */ 87 #define TK_TRG_EN_TICKTMR0 (0xAUL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction Tick Timer0 */ 88 #define TK_TRG_EN_TICKTMR1 (0xBUL << TK_SCANC_TMRTRG_EN_Pos) /*!< Touch key periodic trigger source selction Tick Timer1 */ 89 90 #define TK_CAP_BANK_POL_SEL_GND (0UL) /*!< Touch key capacitor bank polarity is GND */ 91 #define TK_CAP_BANK_POL_SEL_AVCCH (1UL) /*!< Touch key capacitor bank polarity is AVCCH */ 92 #define TK_CAP_BANK_POL_SEL_VDD (2UL) /*!< Touch key capacitor bank polarity is VDD */ 93 94 #define TK_TKn_POL_SEL_GND (0UL) /*!< Touch key polarity is GND */ 95 #define TK_TKn_POL_SEL_AVCCH (1UL) /*!< Touch key polarity is AVCCH */ 96 #define TK_TKn_POL_SEL_VDD (2UL) /*!< Touch key polarity is VDD */ 97 98 #define TK_INT_EN_SCAN_COMPLETE (TK_INTEN_SCIE_Msk) /*!< Touch key enable scan complete interrupt */ 99 #define TK_INT_EN_SCAN_COMPLETE_LEVEL_TH (TK_INTEN_SCIE_Msk | TK_INTEN_SCTHIE_Msk) /*!< Touch key enable scan complete with threshold interrupt of level trigger mode */ 100 101 #define TK_INT_SCAN_COMPLETE (TK_STA_SCIF_Msk) /*!< Touch key scan complete interrupt */ 102 #define TK_INT_SCAN_COMPLETE_TH_ALL (0x1FFFF02UL) /*!< Touch key scan complete or all touch keys threshold control interrupt */ 103 #define TK_INT_SCAN_TH_ALL (0x1FFFF00UL) /*!< ALL Touch key threshold control interrupt */ 104 #define TK_INT_SCAN_TH_ALL1 (0x000001FUL) /*!< ALL Touch key threshold control interrupt */ 105 #define TK_INT_SCAN_TH_TK0 (TK_STA_TKIF0_Msk) /*!< Touch key 0 threshold control interrupt */ 106 #define TK_INT_SCAN_TH_TK1 (TK_STA_TKIF1_Msk) /*!< Touch key 1 threshold control interrupt */ 107 #define TK_INT_SCAN_TH_TK2 (TK_STA_TKIF2_Msk) /*!< Touch key 2 threshold control interrupt */ 108 #define TK_INT_SCAN_TH_TK3 (TK_STA_TKIF3_Msk) /*!< Touch key 3 threshold control interrupt */ 109 #define TK_INT_SCAN_TH_TK4 (TK_STA_TKIF4_Msk) /*!< Touch key 4 threshold control interrupt */ 110 #define TK_INT_SCAN_TH_TK5 (TK_STA_TKIF5_Msk) /*!< Touch key 5 threshold control interrupt */ 111 #define TK_INT_SCAN_TH_TK6 (TK_STA_TKIF6_Msk) /*!< Touch key 6 threshold control interrupt */ 112 #define TK_INT_SCAN_TH_TK7 (TK_STA_TKIF7_Msk) /*!< Touch key 7 threshold control interrupt */ 113 #define TK_INT_SCAN_TH_TK8 (TK_STA_TKIF8_Msk) /*!< Touch key 8 threshold control interrupt */ 114 #define TK_INT_SCAN_TH_TK9 (TK_STA_TKIF9_Msk) /*!< Touch key 9 threshold control interrupt */ 115 #define TK_INT_SCAN_TH_TK10 (TK_STA_TKIF10_Msk) /*!< Touch key 10 threshold control interrupt */ 116 #define TK_INT_SCAN_TH_TK11 (TK_STA_TKIF11_Msk) /*!< Touch key 11 threshold control interrupt */ 117 #define TK_INT_SCAN_TH_TK12 (TK_STA_TKIF12_Msk) /*!< Touch key 12 threshold control interrupt */ 118 #define TK_INT_SCAN_TH_TK13 (TK_STA_TKIF13_Msk) /*!< Touch key 13 threshold control interrupt */ 119 #define TK_INT_SCAN_TH_TK14 (TK_STA_TKIF14_Msk) /*!< Touch key 14 threshold control interrupt */ 120 #define TK_INT_SCAN_TH_TK15 (TK_STA_TKIF15_Msk) /*!< Touch key 15 threshold control interrupt */ 121 #define TK_INT_SCAN_TH_TK16 (TK_STA_TKIF16_Msk) /*!< Touch key 16 threshold control interrupt */ 122 #define TK_INT_SCAN_TH_TK17 (TK_STA_TKIF17_Msk) /*!< Touch key 17 threshold control interrupt */ 123 #define TK_INT_SCAN_TH_TK18 (TK_STA_TKIF18_Msk) /*!< Touch key 18 threshold control interrupt */ 124 #define TK_INT_SCAN_TH_TK19 (TK_STA_TKIF19_Msk) /*!< Touch key 19 threshold control interrupt */ 125 #define TK_INT_SCAN_TH_TK20 (TK_STA_TKIF20_Msk) /*!< Touch key 20 threshold control interrupt */ 126 #define TK_INT_SCAN_TH_TK21 (TK_STA_TKIF21_Msk) /*!< Touch key 21 threshold control interrupt */ 127 #define TK_INT_SCAN_TH_TK22 (TK_STA_TKIF22_Msk) /*!< Touch key 22 threshold control interrupt */ 128 #define TK_INT_SCAN_TH_TK23 (TK_STA_TKIF23_Msk) /*!< Touch key 23 threshold control interrupt */ 129 #define TK_INT_SCAN_TH_TK24 (TK_STA_TKIF24_Msk) /*!< Touch key 24 threshold control interrupt */ 130 #define TK_INT_SCAN_TH_TK25 (TK_STA_TKIF25_Msk) /*!< Touch key 25 threshold control interrupt */ 131 132 #define TK_SCANALL_NUM (31) /*!< Touch key scan all number */ 133 134 /*@}*/ /* end of group TK_EXPORTED_CONSTANTS */ 135 136 137 /** @addtogroup TK_EXPORTED_FUNCTIONS TK Exported Functions 138 @{ 139 */ 140 141 /** 142 * @brief Enable scan key(s) 143 * @param[in] u32Mask Combination of enabled scan keys. Each bit corresponds to a touch key. 144 * Bit 0 represents touch key 0, bit 1 represents touch key 1... 145 * @return None 146 * @note Touch key 16 is the default reference key, so touch key 16 is enabled. 147 * \hideinitializer 148 */ 149 #define TK_ENABLE_SCAN_KEY(u32Mask) (TK->SCANC |= (u32Mask&0x1FFFF)); \ 150 (TK->SCANC1 |= ((u32Mask)>>17)) 151 152 /** 153 * @brief Disable scan key(s) 154 * @param[in] u32Mask Combination of disabled scan keys. Each bit corresponds to a touch key. 155 * Bit 0 represents touch key 0, bit 1 represents touch key 1... 156 * @return None 157 * \hideinitializer 158 */ 159 #define TK_DISABLE_SCAN_KEY(u32Mask) (TK->SCANC &= ~(u32Mask&0x1FFFF)); \ 160 (TK->SCANC1 &= ~((u32Mask)>>17)) 161 162 /** 163 * @brief Enable reference key(s) 164 * @param[in] u32Mask Combination of enabled reference keys. Each bit corresponds to a touch key. 165 * Bit 0 represents touch key 0, bit 1 represents touch key 1... 166 * @return None 167 * @note Touch key 16 is the default reference key, so touch key 16 is enabled. 168 * \hideinitializer 169 */ 170 #define TK_ENABLE_REF_KEY(u32Mask) (TK->REFC |= (u32Mask&0x1FFFF)); \ 171 (TK->REFC1 |= (u32Mask>>17)) 172 173 /** 174 * @brief Disable reference key(s) 175 * @param[in] u32Mask Combination of disabled reference keys. Each bit corresponds to a touch key. 176 * Bit 0 represents touch key 0, bit 1 represents touch key 1... 177 * @return None 178 * @note It must enable a reference key and touch key 16 is the default reference key. 179 * If no any one touch key as reference key except touch key 16, then reference Touch key 16 can't be disable. 180 * \hideinitializer 181 */ 182 #define TK_DISABLE_REF_KEY(u32Mask) (TK->REFC &= ~(u32Mask&0x1FFFF)); \ 183 (TK->REFC1 &= ~(u32Mask>>17)) 184 /** 185 * @brief Initiate enabled key(s) scan immediately. 186 * @param None 187 * @return None 188 * \hideinitializer 189 */ 190 #define TK_START_SCAN() (TK->SCANC |= TK_SCANC_SCAN_Msk) 191 192 /** 193 * @brief Set touch key Sensing pulse width. 194 * @param[in] u32PulseWidth Sensing pulse width. 195 * - \ref TK_SENSE_PULSE_1 196 * - \ref TK_SENSE_PULSE_2 197 * - \ref TK_SENSE_PULSE_4 198 * - \ref TK_SENSE_PULSE_8 199 * - \ref TK_SENSE_PULSE_250NS 200 * - \ref TK_SENSE_PULSE_500NS 201 * @return None 202 * \hideinitializer 203 */ 204 #define TK_SET_PULSE_WIDTH(u32PulseWidth) (TK->REFC = (TK->REFC & ~TK_REFC_PULSET_Msk) | (u32PulseWidth)) 205 206 /** 207 * @brief Set touch key Sensing count. 208 * @param[in] u32SenseCnt Sensing count. 209 * - \ref TK_SENSE_CNT_128 210 * - \ref TK_SENSE_CNT_255 211 * - \ref TK_SENSE_CNT_511 212 * - \ref TK_SENSE_CNT_1023 213 * - \ref TK_SENSE_CNT_8 214 * - \ref TK_SENSE_CNT_16 215 * - \ref TK_SENSE_CNT_32 216 * - \ref TK_SENSE_CNT_64 217 * @return None 218 * \hideinitializer 219 */ 220 #define TK_SET_SENSING_CNT(u32SenseCnt) (TK->REFC = (TK->REFC & ~TK_REFC_SENSET_Msk) | (u32SenseCnt)) 221 222 223 /** 224 * @brief Set touch key AVCCH voltage. 225 * @param[in] u32AVCCHSel voltage selection. 226 * - \ref TK_AVCCH_1_DIV_16 227 * - \ref TK_AVCCH_1_DIV_8 228 * - \ref TK_AVCCH_3_DIV_16 229 * - \ref TK_AVCCH_1_DIV_4 230 * - \ref TK_AVCCH_5_DIV_16 231 * - \ref TK_AVCCH_3_DIV_8 232 * - \ref TK_AVCCH_7_DIV_16 233 * - \ref TK_AVCCH_1_DIV_2 234 * - \ref TK_AVCCH_1_DIV_32 235 * - \ref TK_AVCCH_2_DIV_32 236 * - \ref TK_AVCCH_3_DIV_32 237 * - \ref TK_AVCCH_4_DIV_32 238 * - \ref TK_AVCCH_5_DIV_32 239 * - \ref TK_AVCCH_6_DIV_32 240 * - \ref TK_AVCCH_7_DIV_32 241 * - \ref TK_AVCCH_8_DIV_32 242 * @return None 243 * \hideinitializer 244 */ 245 #define TK_SET_AVCCH(u32AVCCHSel) (TK->SCANC = (TK->SCANC & ~TK_SCANC_AVDDH_S_Msk) | (u32AVCCHSel)) 246 247 /** 248 * @brief Get touch key complement capacitor bank data. 249 * @param[in] u32TKNum Touch key number. The valid value is 0~25. 250 * @return Complement capacitor bank data 251 * \hideinitializer 252 */ 253 #define TK_GET_COMP_CAP_BANK_DATA(u32TKNum) ((u32TKNum<=16) ? (((*(__IO uint32_t *) (&(TK->CCBD0) + ((u32TKNum%17) >> 2))) >> ((u32TKNum%17) % 4 * 8) & TK_CCBD0_CCBD0_Msk)):(((*(__IO uint32_t *) (&(TK->CCBD5) + ((u32TKNum%17) >> 2))) >> ((u32TKNum%17) % 4 * 8) & TK_CCBD0_CCBD0_Msk))) 254 255 /** 256 * @brief Get touch key sensing result data. 257 * @param[in] u32TKNum Touch key number. The valid value is 0~25. 258 * @return Sensing result data 259 * \hideinitializer 260 */ 261 #define TK_GET_SENSE_DATA(u32TKNum) ((u32TKNum<=16) ? (((*(__IO uint32_t *) (&(TK->DAT0) + ((u32TKNum%17) >> 2))) >> ((u32TKNum%17) % 4 * 8) & TK_DAT0_TKDAT0_Msk)):(((*(__IO uint32_t *) (&(TK->DAT5) + ((u32TKNum%17) >> 2))) >> ((u32TKNum%17) % 4 * 8) & TK_DAT0_TKDAT0_Msk))) 262 263 /** 264 * @brief Get touch key sensing result data. 265 * @param[in] u32TKNum Touch key number. The valid value is 17~25. 266 * @return Sensing result data 267 * \hideinitializer 268 */ 269 #define TK_GET_SCANALL_SENSE_DATA() ((TK->DAT4 >> TK_DAT4_TKDAT_ALL_Pos) & TK_DAT0_TKDAT0_Msk) 270 271 /** 272 * @brief Get touch key busy status. 273 * @param None 274 * @retval 0 Touch key is scan completed or stopped. 275 * @retval 1 Touch key is busy. 276 * \hideinitializer 277 */ 278 #define TK_IS_BUSY() ((TK->STA & TK_STA_BUSY_Msk) ? 1: 0) 279 280 /** 281 * @brief Get touch key interrupt flag. 282 * @param[in] u32Mask Interrupt flag type selection. 283 * - \ref TK_INT_SCAN_COMPLETE 284 * - \ref TK_INT_SCAN_COMPLETE_TH_ALL 285 * - \ref TK_INT_SCAN_TH_ALL 286 * - \ref TK_INT_SCAN_TH_TK0 287 * - \ref TK_INT_SCAN_TH_TK1 288 * - \ref TK_INT_SCAN_TH_TK2 289 * - \ref TK_INT_SCAN_TH_TK3 290 * - \ref TK_INT_SCAN_TH_TK4 291 * - \ref TK_INT_SCAN_TH_TK5 292 * - \ref TK_INT_SCAN_TH_TK6 293 * - \ref TK_INT_SCAN_TH_TK7 294 * - \ref TK_INT_SCAN_TH_TK8 295 * - \ref TK_INT_SCAN_TH_TK9 296 * - \ref TK_INT_SCAN_TH_TK10 297 * - \ref TK_INT_SCAN_TH_TK11 298 * - \ref TK_INT_SCAN_TH_TK12 299 * - \ref TK_INT_SCAN_TH_TK13 300 * - \ref TK_INT_SCAN_TH_TK14 301 * - \ref TK_INT_SCAN_TH_TK15 302 * - \ref TK_INT_SCAN_TH_TK16 303 * @retval 0 Touch key has no interrupt. 304 * @retval 1 Touch key is scan completed or threshold control event occurs. 305 * \hideinitializer 306 */ 307 #define TK_GET_INT_STATUS(u32Mask) ((TK->STA & (u32Mask)) ? 1: 0) 308 309 /** 310 * @brief Get touch key interrupt flag 1. 311 * @param[in] u32Mask Interrupt flag type selection. 312 * - \ref TK_INT_SCAN_TH_ALL1 313 * - \ref TK_INT_SCAN_TH_TK17 314 * - \ref TK_INT_SCAN_TH_TK18 315 * - \ref TK_INT_SCAN_TH_TK19 316 * - \ref TK_INT_SCAN_TH_TK20 317 * - \ref TK_INT_SCAN_TH_TK21 318 * - \ref TK_INT_SCAN_TH_TK22 319 * - \ref TK_INT_SCAN_TH_TK23 320 * - \ref TK_INT_SCAN_TH_TK24 321 * - \ref TK_INT_SCAN_TH_TK25 322 * @retval 0 Touch key has no interrupt. 323 * @retval 1 Touch key is scan completed or threshold control event occurs. 324 * \hideinitializer 325 */ 326 #define TK_GET_INT_STATUS1(u32Mask) ((TK->STA1 & (u32Mask)) ? 1: 0) 327 328 /** 329 * @brief Clear touch key interrupt flag. 330 * @param[in] u32Mask Interrupt flag type selection. 331 * - \ref TK_INT_SCAN_COMPLETE 332 * - \ref TK_INT_SCAN_COMPLETE_TH_ALL 333 * - \ref TK_INT_SCAN_TH_ALL 334 * - \ref TK_INT_SCAN_TH_TK0 335 * - \ref TK_INT_SCAN_TH_TK1 336 * - \ref TK_INT_SCAN_TH_TK2 337 * - \ref TK_INT_SCAN_TH_TK3 338 * - \ref TK_INT_SCAN_TH_TK4 339 * - \ref TK_INT_SCAN_TH_TK5 340 * - \ref TK_INT_SCAN_TH_TK6 341 * - \ref TK_INT_SCAN_TH_TK7 342 * - \ref TK_INT_SCAN_TH_TK8 343 * - \ref TK_INT_SCAN_TH_TK9 344 * - \ref TK_INT_SCAN_TH_TK10 345 * - \ref TK_INT_SCAN_TH_TK11 346 * - \ref TK_INT_SCAN_TH_TK12 347 * - \ref TK_INT_SCAN_TH_TK13 348 * - \ref TK_INT_SCAN_TH_TK14 349 * - \ref TK_INT_SCAN_TH_TK15 350 * - \ref TK_INT_SCAN_TH_TK16 351 * - \ref TK_INT_SCAN_TH_TK17 352 * @return None 353 * \hideinitializer 354 */ 355 #define TK_CLR_INT_FLAG(u32Mask) (TK->STA = (u32Mask)) 356 357 /** 358 * @brief Clear touch key interrupt flag 1. 359 * @param[in] u32Mask Interrupt flag type selection. 360 * - \ref TK_INT_SCAN_TH_ALL1 361 * - \ref TK_INT_SCAN_TH_TK17 362 * - \ref TK_INT_SCAN_TH_TK18 363 * - \ref TK_INT_SCAN_TH_TK19 364 * - \ref TK_INT_SCAN_TH_TK20 365 * - \ref TK_INT_SCAN_TH_TK21 366 * - \ref TK_INT_SCAN_TH_TK22 367 * - \ref TK_INT_SCAN_TH_TK23 368 * - \ref TK_INT_SCAN_TH_TK24 369 * - \ref TK_INT_SCAN_TH_TK25 370 * @return None 371 * \hideinitializer 372 */ 373 #define TK_CLR_INT_FLAG1(u32Mask) (TK->STA1 = (u32Mask)) 374 375 #define TK_INITIAL_POTENTIAL_GND (0UL << TK_POLC_POL_INIT_Pos) 376 #define TK_INITIAL_POTENTIAL_AVDDH (1UL << TK_POLC_POL_INIT_Pos) 377 /** 378 * @brief Set TK Sensing Initial Potential Level 379 * @param[in] u32Level Sensing Initial Potential Level. 380 * - \ref TK_INITIAL_POTENTIAL_GND 381 * - \ref TK_INITIAL_POTENTIAL_AVDDH 382 * @return None 383 * \hideinitializer 384 */ 385 #define TK_SET_INITIAL_POTENTIAL_LEVEL(u32Level) (TK->REFC = (TK->REFC & ~TK_POLC_POL_INIT_Msk) | (u32Level)) 386 387 388 #define TK_CAPACITOR_BANK_SEL_MODE0 (0UL << TK_EXTCBC_EXT_CBSEL_Pos) 389 #define TK_CAPACITOR_BANK_SEL_MODE1 (1UL << TK_EXTCBC_EXT_CBSEL_Pos) 390 #define TK_CAPACITOR_BANK_SEL_MODE2 (2UL << TK_EXTCBC_EXT_CBSEL_Pos) 391 /** 392 * @brief Set TK Capacitor Bank Select Mode 393 * @param[in] u32Level Capacitor Bank Select Mode 394 * - \ref TK_CAPACITOR_BANK_SEL_MODE0 395 * - \ref TK_CAPACITOR_BANK_SEL_MODE1 396 * - \ref TK_CAPACITOR_BANK_SEL_MODE2 397 * @return None 398 * \hideinitializer 399 */ 400 #define TK_EXTEND_CAPACITOR_BANK_SEL(u32CapBankSel) (TK->EXTCBC = (TK->EXTCBC & ~TK_EXTCBC_EXT_CBSEL_Msk) | (u32CapBankSel)) 401 402 /*---------------------------------------------------------------------------------------------------------*/ 403 /* Define TK functions prototype */ 404 /*---------------------------------------------------------------------------------------------------------*/ 405 void TK_Open(void); 406 void TK_Close(void); 407 void TK_SetScanMode(uint32_t u32Mode); 408 void TK_ConfigSensitivity(uint32_t u32PulseWidth, uint32_t u32SenseCnt, uint32_t u32AVCCHSel); 409 void TK_SetCapBankPol(uint32_t u32CapBankPolSel); 410 void TK_EnableTkPolarity(uint32_t u32Mask); 411 void TK_DisableTkPolarity(uint32_t u32Mask); 412 void TK_SetCompCapBankData(uint32_t u32TKNum, uint32_t u32CapData); 413 void TK_SetTkPol(uint32_t u32Mask, uint32_t u32PolSel); 414 void TK_SetRefKeyCapBankData(uint32_t u32CapData); 415 void TK_SetRefCapBankData(uint32_t u32TKNum, uint32_t u32CapData); 416 void TK_SetScanThreshold(uint32_t u32TKNum, uint32_t u32HighLevel); 417 void TK_EnableInt(uint32_t u32Msk); 418 void TK_DisableInt(uint32_t u32Msk); 419 420 void TK_DisableScanAll(void); 421 void TK_EnableScanAll(uint8_t u8RefcbAll, uint8_t u8CcbAll, uint8_t u8HThAll); 422 void TK_DisableAllChannel(void); 423 void TK_ClearTKIF(void); 424 425 void TK_ConfigPowerDown(uint8_t u8Sensitivity); 426 427 /*@}*/ /* end of group TK_EXPORTED_FUNCTIONS */ 428 429 /*@}*/ /* end of group TK_Driver */ 430 431 /*@}*/ /* end of group Standard_Driver */ 432 433 #ifdef __cplusplus 434 } 435 #endif 436 437 #endif //__TK_H__ 438