Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
cycfg_capsense.c
00001 /******************************************************************************* 00002 * File Name: cycfg_capsense.c 00003 * Version: 2.0 00004 * 00005 * Description: 00006 * CapSense middleware configuration 00007 * This file should not be modified. It was automatically generated by 00008 * CapSense Configurator 2.0.0 build 566 00009 * 00010 ******************************************************************************** 00011 * Copyright 2019 Cypress Semiconductor Corporation 00012 * SPDX-License-Identifier: Apache-2.0 00013 * 00014 * Licensed under the Apache License, Version 2.0 (the "License"); 00015 * you may not use this file except in compliance with the License. 00016 * You may obtain a copy of the License at 00017 * 00018 * http://www.apache.org/licenses/LICENSE-2.0 00019 * 00020 * Unless required by applicable law or agreed to in writing, software 00021 * distributed under the License is distributed on an "AS IS" BASIS, 00022 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00023 * See the License for the specific language governing permissions and 00024 * limitations under the License. 00025 *******************************************************************************/ 00026 00027 #include "cycfg_capsense.h" 00028 00029 #if (CY_CAPSENSE_CORE == __CORTEX_M) 00030 00031 #ifndef CSD_CMODPADS_PORT 00032 #define CSD_CMODPADS_PORT 0xFF 00033 #endif 00034 #ifndef CSD_CMODPADS_PIN 00035 #define CSD_CMODPADS_PIN 0xFF 00036 #endif 00037 #ifndef CSD_CSH_TANKPADS_PORT 00038 #define CSD_CSH_TANKPADS_PORT 0xFF 00039 #endif 00040 #ifndef CSD_CSH_TANKPADS_PIN 00041 #define CSD_CSH_TANKPADS_PIN 0xFF 00042 #endif 00043 #ifndef CSD_CSHIELDPADS_PORT 00044 #define CSD_CSHIELDPADS_PORT 0xFF 00045 #endif 00046 #ifndef CSD_CSHIELDPADS_PIN 00047 #define CSD_CSHIELDPADS_PIN 0xFF 00048 #endif 00049 #ifndef CSD_VREF_EXT_PORT 00050 #define CSD_VREF_EXT_PORT 0xFF 00051 #endif 00052 #ifndef CSD_VREF_EXT_PIN 00053 #define CSD_VREF_EXT_PIN 0xFF 00054 #endif 00055 00056 #define CY_CAPSENSE_WIDGET_COUNT (3u) 00057 #define CY_CAPSENSE_SENSOR_COUNT (7u) 00058 #define CY_CAPSENSE_ELTD_COUNT (9u) 00059 #define CY_CAPSENSE_PIN_COUNT (9u) 00060 #define CY_CAPSENSE_SHIELD_PIN_COUNT (0u) 00061 #define CY_CAPSENSE_POSITION_SIZE (1u) 00062 #define CY_CAPSENSE_DEBOUNCE_SIZE (3u) 00063 #define CY_CAPSENSE_NOISE_ENVELOPE_SIZE (0u) 00064 #define CY_CAPSENSE_RAW_HISTORY_SIZE (0u) 00065 #define CY_CAPSENSE_IIR_HISTORY_LOW_SIZE (0u) 00066 #define CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE (1u) 00067 #define CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE (1u) 00068 #define CY_CAPSENSE_DIPLEX_SIZE (0u) 00069 #define CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE (0u) 00070 #define CY_CAPSENSE_CSX_TOUCH_BUFFER_ENABLE (0u) 00071 #define CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE (0u) 00072 #define CY_CAPSENSE_BALLISTIC_WIDGET_COUNT (0u) 00073 #define CY_CAPSENSE_GESTURE_WIDGET_COUNT (0u) 00074 00075 static cy_stc_capsense_internal_context_t cy_capsense_internalContext; 00076 static cy_stc_active_scan_sns_t cy_capsense_activeScanSns; 00077 00078 #if (CY_CAPSENSE_DEBOUNCE_SIZE > 0) 00079 static uint8_t cy_capsense_debounce[CY_CAPSENSE_DEBOUNCE_SIZE] = {0}; 00080 #endif 00081 00082 #if (CY_CAPSENSE_NOISE_ENVELOPE_SIZE > 0) 00083 static cy_stc_capsense_smartsense_csd_noise_envelope_t cy_capsense_noiseEnvelope[CY_CAPSENSE_NOISE_ENVELOPE_SIZE]; 00084 #endif 00085 00086 #if (CY_CAPSENSE_RAW_HISTORY_SIZE > 0) 00087 static uint16_t cy_capsense_rawFilterHistory[CY_CAPSENSE_RAW_HISTORY_SIZE] = {0}; 00088 #endif 00089 00090 #if (CY_CAPSENSE_IIR_HISTORY_LOW_SIZE > 0) 00091 static uint8_t cy_capsense_iirHistoryLow[CY_CAPSENSE_IIR_HISTORY_LOW_SIZE] = {0}; 00092 #endif 00093 00094 #if (CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE > 0) 00095 static cy_stc_capsense_position_t cy_capsense_positionFilterHistory[CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE]; 00096 #endif 00097 00098 #if (CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE > 0) 00099 static cy_stc_capsense_touch_t cy_capsense_touchFilterHistory[CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE] = 00100 { 00101 { 00102 .ptrPosition = &cy_capsense_positionFilterHistory[0u], 00103 .numPosition = 0u, }, 00104 }; 00105 #endif 00106 00107 #if (CY_CAPSENSE_DIPLEX_SIZE > 0) 00108 static const uint8_t cy_capsense_diplexTable[CY_CAPSENSE_DIPLEX_SIZE] = 00109 { 00110 }; 00111 #endif 00112 00113 #if (CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE > 0) 00114 static uint16 cy_capsense_csdTouchBuffer[CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE] = {0}; 00115 #endif 00116 00117 #if (CY_CAPSENSE_CSX_TOUCH_BUFFER_ENABLE > 0) 00118 static cy_stc_capsense_csx_touch_buffer_t cy_capsense_csxTouchBuffer; 00119 #endif 00120 00121 #if (CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE > 0) 00122 static cy_stc_capsense_csx_touch_history_t cy_capsense_csxTouchHistory[CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE] = 00123 { 00124 }; 00125 #endif 00126 00127 #if (CY_CAPSENSE_BALLISTIC_WIDGET_COUNT > 0) 00128 static cy_stc_capsense_ballistic_context_t cy_capsense_ballisticContext[CY_CAPSENSE_BALLISTIC_WIDGET_COUNT]; 00129 #endif 00130 00131 #if (CY_CAPSENSE_GESTURE_WIDGET_COUNT > 0) 00132 static cy_stc_capsense_gesture_context_t cy_capsense_gestureContext[CY_CAPSENSE_GESTURE_WIDGET_COUNT]; 00133 #endif 00134 00135 static const cy_stc_capsense_common_config_t cy_capsense_commonConfig = 00136 { 00137 .cpuClkHz = CY_CAPSENSE_CPU_CLK, 00138 .periClkHz = CY_CAPSENSE_PERI_CLK, 00139 .vdda = CY_CAPSENSE_VDDA_MV, 00140 .numPin = CY_CAPSENSE_PIN_COUNT, 00141 .numSns = CY_CAPSENSE_SENSOR_COUNT, 00142 .numWd = CY_CAPSENSE_WIDGET_COUNT, 00143 .csdEn = CY_CAPSENSE_ENABLE, 00144 .csxEn = CY_CAPSENSE_ENABLE, 00145 .mfsEn = CY_CAPSENSE_DISABLE, 00146 .positionFilterEn = CY_CAPSENSE_ENABLE, 00147 .periDividerType = CY_CAPSENSE_PERI_DIV_TYPE, 00148 .periDividerIndex = CY_CAPSENSE_PERI_DIV_INDEX, 00149 .analogWakeupDelay = 25u, 00150 .ssIrefSource = CY_CAPSENSE_IREF_SRSS, 00151 .ssVrefSource = CY_CAPSENSE_VREF_SRSS, 00152 .proxTouchCoeff = 300u, 00153 .swSensorAutoResetEn = CY_CAPSENSE_DISABLE, 00154 .portCmodPadNum = CSD_CMODPADS_PORT, 00155 .pinCmodPad = CSD_CMODPADS_PIN, 00156 .portCshPadNum = CSD_CSH_TANKPADS_PORT, 00157 .pinCshPad = CSD_CSH_TANKPADS_PIN, 00158 .portShieldPadNum = CSD_CSHIELDPADS_PORT, 00159 .pinShieldPad = CSD_CSHIELDPADS_PIN, 00160 .portVrefExtPadNum = CSD_VREF_EXT_PORT, 00161 .pinVrefExtPad = CSD_VREF_EXT_PIN, 00162 .portCmodNum = Cmod_PORT_NUM, 00163 .idacGainTable = { 00164 {0x01000000u, 37500u}, 00165 {0x03000000u, 75000u}, 00166 {0x01400000u, 300000u}, 00167 {0x03400000u, 600000u}, 00168 {0x01800000u, 2400000u}, 00169 {0x03800000u, 4800000u}, 00170 }, 00171 .ptrCsdBase = CSD0, 00172 .ptrCsdContext = &cy_csd_0_context, 00173 .portCmod = Cmod_PORT, 00174 .portCsh = NULL, 00175 .portCintA = CintA_PORT, 00176 .portCintB = CintB_PORT, 00177 .pinCmod = Cmod_PIN, 00178 .portCshNum = 0u, 00179 .pinCsh = 0u, 00180 .pinCintA = CintA_PIN, 00181 .pinCintB = CintB_PIN, 00182 .csdShieldEn = CY_CAPSENSE_DISABLE, 00183 .csdInactiveSnsConnection = CY_CAPSENSE_SNS_CONNECTION_GROUND, 00184 .csdShieldDelay = CY_CAPSENSE_SH_DELAY_0NS, 00185 .csdVref = 0u, 00186 .csdRConst = 1000u, 00187 .csdCTankShieldEn = CY_CAPSENSE_DISABLE, 00188 .csdShieldNumPin = 0u, 00189 .csdShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM, 00190 .csdInitSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM, 00191 .csdChargeTransfer = CY_CAPSENSE_IDAC_SOURCING, 00192 .csdRawTarget = 85u, 00193 .csdAutotuneEn = CY_CAPSENSE_CSD_SS_DIS, 00194 .csdIdacAutocalEn = CY_CAPSENSE_ENABLE, 00195 .csdIdacAutoGainEn = CY_CAPSENSE_ENABLE, 00196 .csdCalibrationError = 10u, 00197 .csdIdacGainInitIndex = 4u, 00198 .csdIdacMin = 20u, 00199 .csdIdacCompEn = CY_CAPSENSE_ENABLE, 00200 .csdFineInitTime = 10u, 00201 .csdIdacRowColAlignEn = CY_CAPSENSE_ENABLE, 00202 .csdMfsDividerOffsetF1 = 1u, 00203 .csdMfsDividerOffsetF2 = 2u, 00204 .csxRawTarget = 40u, 00205 .csxIdacGainInitIndex = 2u, 00206 .csxIdacAutocalEn = CY_CAPSENSE_ENABLE, 00207 .csxCalibrationError = 20u, 00208 .csxFineInitTime = 10u, 00209 .csxInitSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM, 00210 .csxScanSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM, 00211 .csxInitShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM, 00212 .csxScanShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM, 00213 .csxMfsDividerOffsetF1 = 1u, 00214 .csxMfsDividerOffsetF2 = 2u, 00215 }; 00216 00217 static const cy_stc_capsense_fptr_config_t cy_capsense_fptrConfig = 00218 { 00219 #if (CY_CAPSENSE_CSD_EN == 0) 00220 .fptrCSDSetupWidget = NULL, 00221 .fptrCSDScan = NULL, 00222 .fptrDpProcessCsdWidgetRawCounts = NULL, 00223 .fptrDpProcessCsdWidgetStatus = NULL, 00224 .fptrCSDDisableMode = NULL, 00225 .fptrCSDInitialize = NULL, 00226 .fptrCSDScanISR = NULL, 00227 #else 00228 .fptrCSDSetupWidget = &Cy_CapSense_CSDSetupWidget, 00229 .fptrCSDScan = &Cy_CapSense_CSDScan, 00230 .fptrDpProcessCsdWidgetRawCounts = &Cy_CapSense_DpProcessCsdWidgetRawCounts, 00231 .fptrDpProcessCsdWidgetStatus = &Cy_CapSense_DpProcessCsdWidgetStatus, 00232 .fptrCSDDisableMode = &Cy_CapSense_CSDDisableMode, 00233 .fptrCSDInitialize = &Cy_CapSense_CSDInitialize, 00234 .fptrCSDScanISR = &Cy_CapSense_CSDScanISR, 00235 #endif 00236 00237 #if (CY_CAPSENSE_CSX_EN == 0) 00238 .fptrCSXSetupWidget = NULL, 00239 .fptrCSXScan = NULL, 00240 .fptrDpProcessCsxWidgetRawCounts = NULL, 00241 .fptrDpProcessCsxWidgetStatus = NULL, 00242 .fptrCSXInitialize = NULL, 00243 .fptrCSXDisableMode = NULL, 00244 .fptrCSXScanISR = NULL, 00245 #else 00246 .fptrCSXSetupWidget = &Cy_CapSense_CSXSetupWidget, 00247 .fptrCSXScan = &Cy_CapSense_CSXScan, 00248 .fptrDpProcessCsxWidgetRawCounts = &Cy_CapSense_DpProcessCsxWidgetRawCounts, 00249 .fptrDpProcessCsxWidgetStatus = &Cy_CapSense_DpProcessCsxWidgetStatus, 00250 .fptrCSXInitialize = &Cy_CapSense_CSXInitialize, 00251 .fptrCSXDisableMode = &Cy_CapSense_CSXDisableMode, 00252 .fptrCSXScanISR = &Cy_CapSense_CSXScanISR, 00253 #endif 00254 00255 #if (CY_CAPSENSE_ADAPTIVE_FILTER_EN == 0) 00256 .fptrAdaptiveFilterInitializeLib = NULL, 00257 .fptrAdaptiveFilterRunLib = NULL, 00258 #else 00259 .fptrAdaptiveFilterInitializeLib = &Cy_CapSense_AdaptiveFilterInitialize_Lib, 00260 .fptrAdaptiveFilterRunLib = &Cy_CapSense_AdaptiveFilterRun_Lib, 00261 #endif 00262 00263 #if (CY_CAPSENSE_BALLISTIC_MULTIPLIER_EN == 0) 00264 .fptrBallisticMultiplierLib = NULL, 00265 #else 00266 .fptrBallisticMultiplierLib = &Cy_CapSense_BallisticMultiplier_Lib, 00267 #endif 00268 00269 #if (CY_CAPSENSE_RAWCOUNT_FILTER_EN == 0) 00270 .fptrInitializeAllFilters = NULL, 00271 .fptrFtRunEnabledFiltersInternal = NULL, 00272 #else 00273 .fptrInitializeAllFilters = &Cy_CapSense_InitializeAllFilters, 00274 .fptrFtRunEnabledFiltersInternal = &Cy_CapSense_FtRunEnabledFiltersInternal, 00275 #endif 00276 00277 #if (CY_CAPSENSE_CSD_POSITION_FILTER_EN == 0) 00278 .fptrProcessPositionFilters = NULL, 00279 #else 00280 .fptrProcessPositionFilters = &Cy_CapSense_ProcessPositionFilters, 00281 #endif 00282 00283 #if ((CY_CAPSENSE_CSX_POSITION_FILTER_EN == 0) && (CY_CAPSENSE_CSD_POSITION_FILTER_EN == 0)) 00284 .fptrRunPositionFilters = NULL, 00285 .fptrInitPositionFilters = NULL, 00286 #else 00287 .fptrRunPositionFilters = &Cy_CapSense_RunPositionFilters, 00288 .fptrInitPositionFilters = &Cy_CapSense_InitPositionFilters, 00289 #endif 00290 00291 #if ((CY_CAPSENSE_CSD_BUTTON_EN == 0) && \ 00292 (CY_CAPSENSE_CSX_BUTTON_EN == 0) && (CY_CAPSENSE_CSX_MATRIX_EN == 0)) 00293 .fptrDpProcessButton = NULL, 00294 #else 00295 .fptrDpProcessButton = &Cy_CapSense_DpProcessButton, 00296 #endif 00297 00298 #if (CY_CAPSENSE_CSD_SLIDER_EN == 0) 00299 .fptrDpProcessSlider = NULL, 00300 #else 00301 .fptrDpProcessSlider = &Cy_CapSense_DpProcessSlider, 00302 #endif 00303 00304 #if (CY_CAPSENSE_CSD_MATRIX_EN == 0) 00305 .fptrDpProcessCsdMatrix = NULL, 00306 #else 00307 .fptrDpProcessCsdMatrix = &Cy_CapSense_DpProcessCsdMatrix, 00308 #endif 00309 00310 #if (CY_CAPSENSE_CSD_TOUCHPAD_EN == 0) 00311 .fptrDpProcessCsdTouchpad = NULL, 00312 #else 00313 .fptrDpProcessCsdTouchpad = &Cy_CapSense_DpProcessCsdTouchpad, 00314 #endif 00315 00316 #if (CY_CAPSENSE_CSD_PROXIMITY_EN == 0) 00317 .fptrDpProcessProximity = NULL, 00318 #else 00319 .fptrDpProcessProximity = &Cy_CapSense_DpProcessProximity, 00320 #endif 00321 00322 #if (CY_CAPSENSE_CSX_TOUCHPAD_EN == 0) 00323 .fptrDpProcessCsxTouchpad = NULL, 00324 #else 00325 .fptrDpProcessCsxTouchpad = &Cy_CapSense_DpProcessCsxTouchpad, 00326 #endif 00327 00328 #if (CY_CAPSENSE_ADVANCED_CENTROID_5X5_EN == 0) 00329 .fptrDpAdvancedCentroidTouchpad = NULL, 00330 #else 00331 .fptrDpAdvancedCentroidTouchpad = &Cy_CapSense_DpAdvancedCentroidTouchpad, 00332 #endif 00333 00334 #if ((CY_CAPSENSE_CSD_CALIBRATION_EN == 0) && (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0)) 00335 .fptrCSDCalibrateWidget = NULL, 00336 .fptrCalibrateAllCsdWidgets = NULL, 00337 #else 00338 .fptrCSDCalibrateWidget = &Cy_CapSense_CSDCalibrateWidget, 00339 .fptrCalibrateAllCsdWidgets = &Cy_CapSense_CalibrateAllCsdWidgets, 00340 #endif 00341 00342 #if (CY_CAPSENSE_CSX_CALIBRATION_EN == 0) 00343 .fptrCalibrateAllCsxWidgets = NULL, 00344 #else 00345 .fptrCalibrateAllCsxWidgets = &Cy_CapSense_CalibrateAllCsxWidgets, 00346 #endif 00347 00348 #if (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0) 00349 .fptrRunNoiseEnvelopeLib = NULL, 00350 .fptrDpUpdateThresholds = NULL, 00351 .fptrInitializeNoiseEnvelopeLib = NULL, 00352 #else 00353 .fptrRunNoiseEnvelopeLib = &Cy_CapSense_RunNoiseEnvelope_Lib, 00354 .fptrDpUpdateThresholds = &Cy_CapSense_DpUpdateThresholds, 00355 .fptrInitializeNoiseEnvelopeLib = &Cy_CapSense_InitializeNoiseEnvelope_Lib, 00356 #endif 00357 00358 #if ((CY_CAPSENSE_SMARTSENSE_HW_EN == 0) && (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0)) 00359 .fptrSsAutoTune = NULL, 00360 #else 00361 .fptrSsAutoTune = &Cy_CapSense_SsAutoTune, 00362 #endif 00363 }; 00364 00365 static const cy_stc_capsense_pin_config_t cy_capsense_pinConfig[CY_CAPSENSE_PIN_COUNT] = 00366 { 00367 { /* Button0_Rx0 */ 00368 Button0_Rx0_PORT, 00369 Button0_Rx0_PIN, 00370 }, 00371 { /* Button0_Tx */ 00372 Button0_Tx_PORT, 00373 Button0_Tx_PIN, 00374 }, 00375 { /* Button1_Rx0 */ 00376 Button1_Rx0_PORT, 00377 Button1_Rx0_PIN, 00378 }, 00379 { /* Button1_Tx */ 00380 Button1_Tx_PORT, 00381 Button1_Tx_PIN, 00382 }, 00383 { /* LinearSlider0_Sns0 */ 00384 LinearSlider0_Sns0_PORT, 00385 LinearSlider0_Sns0_PIN, 00386 }, 00387 { /* LinearSlider0_Sns1 */ 00388 LinearSlider0_Sns1_PORT, 00389 LinearSlider0_Sns1_PIN, 00390 }, 00391 { /* LinearSlider0_Sns2 */ 00392 LinearSlider0_Sns2_PORT, 00393 LinearSlider0_Sns2_PIN, 00394 }, 00395 { /* LinearSlider0_Sns3 */ 00396 LinearSlider0_Sns3_PORT, 00397 LinearSlider0_Sns3_PIN, 00398 }, 00399 { /* LinearSlider0_Sns4 */ 00400 LinearSlider0_Sns4_PORT, 00401 LinearSlider0_Sns4_PIN, 00402 }, 00403 }; 00404 00405 #if (CY_CAPSENSE_SHIELD_PIN_COUNT > 0) 00406 static const cy_stc_capsense_pin_config_t cy_capsense_shieldPinConfig[CY_CAPSENSE_SHIELD_PIN_COUNT] = 00407 { 00408 }; 00409 #endif 00410 00411 static const cy_stc_capsense_electrode_config_t cy_capsense_electrodeConfig[CY_CAPSENSE_ELTD_COUNT] = 00412 { 00413 { /* Button0_Rx0 */ 00414 .ptrPin = &cy_capsense_pinConfig[0u], 00415 .type = CY_CAPSENSE_ELTD_TYPE_MUT_RX_E, 00416 .numPins = 1u, 00417 }, 00418 { /* Button0_Tx */ 00419 .ptrPin = &cy_capsense_pinConfig[1u], 00420 .type = CY_CAPSENSE_ELTD_TYPE_MUT_TX_E, 00421 .numPins = 1u, 00422 }, 00423 { /* Button1_Rx0 */ 00424 .ptrPin = &cy_capsense_pinConfig[2u], 00425 .type = CY_CAPSENSE_ELTD_TYPE_MUT_RX_E, 00426 .numPins = 1u, 00427 }, 00428 { /* Button1_Tx */ 00429 .ptrPin = &cy_capsense_pinConfig[3u], 00430 .type = CY_CAPSENSE_ELTD_TYPE_MUT_TX_E, 00431 .numPins = 1u, 00432 }, 00433 { /* LinearSlider0_Sns0 */ 00434 .ptrPin = &cy_capsense_pinConfig[4u], 00435 .type = CY_CAPSENSE_ELTD_TYPE_SELF_E, 00436 .numPins = 1u, 00437 }, 00438 { /* LinearSlider0_Sns1 */ 00439 .ptrPin = &cy_capsense_pinConfig[5u], 00440 .type = CY_CAPSENSE_ELTD_TYPE_SELF_E, 00441 .numPins = 1u, 00442 }, 00443 { /* LinearSlider0_Sns2 */ 00444 .ptrPin = &cy_capsense_pinConfig[6u], 00445 .type = CY_CAPSENSE_ELTD_TYPE_SELF_E, 00446 .numPins = 1u, 00447 }, 00448 { /* LinearSlider0_Sns3 */ 00449 .ptrPin = &cy_capsense_pinConfig[7u], 00450 .type = CY_CAPSENSE_ELTD_TYPE_SELF_E, 00451 .numPins = 1u, 00452 }, 00453 { /* LinearSlider0_Sns4 */ 00454 .ptrPin = &cy_capsense_pinConfig[8u], 00455 .type = CY_CAPSENSE_ELTD_TYPE_SELF_E, 00456 .numPins = 1u, 00457 }, 00458 }; 00459 00460 static const cy_stc_capsense_widget_config_t cy_capsense_widgetConfig[CY_CAPSENSE_WIDGET_COUNT] = 00461 { 00462 { /* Button0 */ 00463 .ptrWdContext = &cy_capsense_tuner.widgetContext[0u], 00464 .ptrSnsContext = &cy_capsense_tuner.sensorContext[0u], 00465 .ptrEltdConfig = &cy_capsense_electrodeConfig[0u], 00466 .ptrNoiseEnvelope = NULL, 00467 .ptrRawFilterHistory = NULL, 00468 .ptrRawFilterHistoryLow = NULL, 00469 .iirCoeff = 128u, 00470 .ptrDebounceArr = &cy_capsense_debounce[0u], 00471 .ptrDiplexTable = NULL, 00472 .centroidConfig = 0u, 00473 .xResolution = 0u, 00474 .yResolution = 0u, 00475 .numSns = 1u, 00476 .numCols = 1u, 00477 .numRows = 1u, 00478 .ptrPosFilterHistory = NULL, 00479 .ptrCsxTouchHistory = NULL, 00480 .ptrCsxTouchBuffer = NULL, 00481 .ptrCsdTouchBuffer = NULL, 00482 .ptrGestureConfig = NULL, 00483 .ptrGestureContext = NULL, 00484 .ballisticConfig = { 00485 .accelCoeff = 9u, 00486 .speedCoeff = 2u, 00487 .divisorValue = 4u, 00488 .speedThresholdX = 3u, 00489 .speedThresholdY = 4u, 00490 }, 00491 .ptrBallisticContext = NULL, 00492 .aiirConfig = { 00493 .maxK = 60u, 00494 .minK = 1u, 00495 .noMovTh = 3u, 00496 .littleMovTh = 7u, 00497 .largeMovTh = 12u, 00498 .divVal = 64u, 00499 }, 00500 .advConfig = { 00501 .penultimateTh = 100u, 00502 .virtualSnsTh = 100u, 00503 .crossCouplingTh = 5u, 00504 }, 00505 .posFilterConfig = 0u, 00506 .rawFilterConfig = 0u, 00507 .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSX_E, 00508 .wdType = CY_CAPSENSE_WD_BUTTON_E, 00509 }, 00510 { /* Button1 */ 00511 .ptrWdContext = &cy_capsense_tuner.widgetContext[1u], 00512 .ptrSnsContext = &cy_capsense_tuner.sensorContext[1u], 00513 .ptrEltdConfig = &cy_capsense_electrodeConfig[2u], 00514 .ptrNoiseEnvelope = NULL, 00515 .ptrRawFilterHistory = NULL, 00516 .ptrRawFilterHistoryLow = NULL, 00517 .iirCoeff = 128u, 00518 .ptrDebounceArr = &cy_capsense_debounce[1u], 00519 .ptrDiplexTable = NULL, 00520 .centroidConfig = 0u, 00521 .xResolution = 0u, 00522 .yResolution = 0u, 00523 .numSns = 1u, 00524 .numCols = 1u, 00525 .numRows = 1u, 00526 .ptrPosFilterHistory = NULL, 00527 .ptrCsxTouchHistory = NULL, 00528 .ptrCsxTouchBuffer = NULL, 00529 .ptrCsdTouchBuffer = NULL, 00530 .ptrGestureConfig = NULL, 00531 .ptrGestureContext = NULL, 00532 .ballisticConfig = { 00533 .accelCoeff = 9u, 00534 .speedCoeff = 2u, 00535 .divisorValue = 4u, 00536 .speedThresholdX = 3u, 00537 .speedThresholdY = 4u, 00538 }, 00539 .ptrBallisticContext = NULL, 00540 .aiirConfig = { 00541 .maxK = 60u, 00542 .minK = 1u, 00543 .noMovTh = 3u, 00544 .littleMovTh = 7u, 00545 .largeMovTh = 12u, 00546 .divVal = 64u, 00547 }, 00548 .advConfig = { 00549 .penultimateTh = 100u, 00550 .virtualSnsTh = 100u, 00551 .crossCouplingTh = 5u, 00552 }, 00553 .posFilterConfig = 0u, 00554 .rawFilterConfig = 0u, 00555 .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSX_E, 00556 .wdType = CY_CAPSENSE_WD_BUTTON_E, 00557 }, 00558 { /* LinearSlider0 */ 00559 .ptrWdContext = &cy_capsense_tuner.widgetContext[2u], 00560 .ptrSnsContext = &cy_capsense_tuner.sensorContext[2u], 00561 .ptrEltdConfig = &cy_capsense_electrodeConfig[4u], 00562 .ptrNoiseEnvelope = NULL, 00563 .ptrRawFilterHistory = NULL, 00564 .ptrRawFilterHistoryLow = NULL, 00565 .iirCoeff = 128u, 00566 .ptrDebounceArr = &cy_capsense_debounce[2u], 00567 .ptrDiplexTable = NULL, 00568 .centroidConfig = 1u, 00569 .xResolution = 100u, 00570 .yResolution = 0u, 00571 .numSns = 5u, 00572 .numCols = 5u, 00573 .numRows = 0u, 00574 .ptrPosFilterHistory = &cy_capsense_touchFilterHistory[0u], 00575 .ptrCsxTouchHistory = NULL, 00576 .ptrCsxTouchBuffer = NULL, 00577 .ptrCsdTouchBuffer = NULL, 00578 .ptrGestureConfig = NULL, 00579 .ptrGestureContext = NULL, 00580 .ballisticConfig = { 00581 .accelCoeff = 9u, 00582 .speedCoeff = 2u, 00583 .divisorValue = 4u, 00584 .speedThresholdX = 3u, 00585 .speedThresholdY = 4u, 00586 }, 00587 .ptrBallisticContext = NULL, 00588 .aiirConfig = { 00589 .maxK = 60u, 00590 .minK = 1u, 00591 .noMovTh = 3u, 00592 .littleMovTh = 7u, 00593 .largeMovTh = 12u, 00594 .divVal = 64u, 00595 }, 00596 .advConfig = { 00597 .penultimateTh = 100u, 00598 .virtualSnsTh = 100u, 00599 .crossCouplingTh = 5u, 00600 }, 00601 .posFilterConfig = 272u, 00602 .rawFilterConfig = 0u, 00603 .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSD_E, 00604 .wdType = CY_CAPSENSE_WD_LINEAR_SLIDER_E, 00605 }, 00606 }; 00607 00608 cy_stc_capsense_tuner_t cy_capsense_tuner = 00609 { 00610 .commonContext = { 00611 .configId = 0xca04, 00612 .tunerCmd = 0u, 00613 .scanCounter = 0u, 00614 .tunerSt = 0u, 00615 .initDone = 0u, 00616 .ptrSSCallback = NULL, 00617 .ptrEOSCallback = NULL, 00618 .ptrTunerSendCallback = NULL, 00619 .ptrTunerReceiveCallback = NULL, 00620 .status = 0u, 00621 .timestampInterval = 1u, 00622 .timestamp = 0u, 00623 .modCsdClk = 4u, 00624 .modCsxClk = 4u, 00625 .tunerCnt = 0u, 00626 }, 00627 .widgetContext = { 00628 { 00629 .fingerCap = 300u, 00630 .sigPFC = 0u, 00631 .resolution = 100u, 00632 .maxRawCount = 0u, 00633 .fingerTh = 90u, 00634 .proxTh = 200u, 00635 .lowBslnRst = 30u, 00636 .snsClk = 80u, 00637 .rowSnsClk = 2u, 00638 .gestureDetected = 0u, 00639 .gestureDirection = 0u, 00640 .xDelta = 0u, 00641 .yDelta = 0u, 00642 .noiseTh = 40u, 00643 .nNoiseTh = 40u, 00644 .hysteresis = 20u, 00645 .onDebounce = 3u, 00646 .snsClkSource = CY_CAPSENSE_CLK_SOURCE_AUTO_MASK, 00647 .idacMod = { 32u, 32u, 32u, }, 00648 .idacGainIndex = 2u, 00649 .rowIdacMod = { 32u, 32u, 32u, }, 00650 .bslnCoeff = 1u, 00651 .status = 0u, 00652 .wdTouch = { 00653 .ptrPosition = NULL, 00654 .numPosition = 0, 00655 }, 00656 }, 00657 { 00658 .fingerCap = 160u, 00659 .sigPFC = 0u, 00660 .resolution = 100u, 00661 .maxRawCount = 0u, 00662 .fingerTh = 90u, 00663 .proxTh = 200u, 00664 .lowBslnRst = 30u, 00665 .snsClk = 80u, 00666 .rowSnsClk = 16u, 00667 .gestureDetected = 0u, 00668 .gestureDirection = 0u, 00669 .xDelta = 0u, 00670 .yDelta = 0u, 00671 .noiseTh = 40u, 00672 .nNoiseTh = 40u, 00673 .hysteresis = 20u, 00674 .onDebounce = 3u, 00675 .snsClkSource = CY_CAPSENSE_CLK_SOURCE_AUTO_MASK, 00676 .idacMod = { 32u, 32u, 32u, }, 00677 .idacGainIndex = 2u, 00678 .rowIdacMod = { 32u, 32u, 32u, }, 00679 .bslnCoeff = 1u, 00680 .status = 0u, 00681 .wdTouch = { 00682 .ptrPosition = NULL, 00683 .numPosition = 0, 00684 }, 00685 }, 00686 { 00687 .fingerCap = 100u, 00688 .sigPFC = 0u, 00689 .resolution = 13u, 00690 .maxRawCount = 0u, 00691 .fingerTh = 100u, 00692 .proxTh = 200u, 00693 .lowBslnRst = 30u, 00694 .snsClk = 34u, 00695 .rowSnsClk = 2u, 00696 .gestureDetected = 0u, 00697 .gestureDirection = 0u, 00698 .xDelta = 0u, 00699 .yDelta = 0u, 00700 .noiseTh = 40u, 00701 .nNoiseTh = 40u, 00702 .hysteresis = 10u, 00703 .onDebounce = 3u, 00704 .snsClkSource = CY_CAPSENSE_CLK_SOURCE_DIRECT, 00705 .idacMod = { 32u, 32u, 32u, }, 00706 .idacGainIndex = 4u, 00707 .rowIdacMod = { 32u, 32u, 32u, }, 00708 .bslnCoeff = 1u, 00709 .status = 0u, 00710 .wdTouch = { 00711 .ptrPosition = &cy_capsense_tuner.position[0u], 00712 .numPosition = 1, 00713 }, 00714 }, 00715 }, 00716 .sensorContext = { 00717 { 00718 .raw = 0u, 00719 .bsln = 0u, 00720 .diff = 0u, 00721 .status = 0u, 00722 .negBslnRstCnt = 0u, 00723 .idacComp = 32u, 00724 .bslnExt = 0u, 00725 }, 00726 { 00727 .raw = 0u, 00728 .bsln = 0u, 00729 .diff = 0u, 00730 .status = 0u, 00731 .negBslnRstCnt = 0u, 00732 .idacComp = 32u, 00733 .bslnExt = 0u, 00734 }, 00735 { 00736 .raw = 0u, 00737 .bsln = 0u, 00738 .diff = 0u, 00739 .status = 0u, 00740 .negBslnRstCnt = 0u, 00741 .idacComp = 32u, 00742 .bslnExt = 0u, 00743 }, 00744 { 00745 .raw = 0u, 00746 .bsln = 0u, 00747 .diff = 0u, 00748 .status = 0u, 00749 .negBslnRstCnt = 0u, 00750 .idacComp = 32u, 00751 .bslnExt = 0u, 00752 }, 00753 { 00754 .raw = 0u, 00755 .bsln = 0u, 00756 .diff = 0u, 00757 .status = 0u, 00758 .negBslnRstCnt = 0u, 00759 .idacComp = 32u, 00760 .bslnExt = 0u, 00761 }, 00762 { 00763 .raw = 0u, 00764 .bsln = 0u, 00765 .diff = 0u, 00766 .status = 0u, 00767 .negBslnRstCnt = 0u, 00768 .idacComp = 32u, 00769 .bslnExt = 0u, 00770 }, 00771 { 00772 .raw = 0u, 00773 .bsln = 0u, 00774 .diff = 0u, 00775 .status = 0u, 00776 .negBslnRstCnt = 0u, 00777 .idacComp = 32u, 00778 .bslnExt = 0u, 00779 }, 00780 }, 00781 .position = { 00782 { 00783 .x = 0u, 00784 .y = 0u, 00785 .z = 0u, 00786 .id = 0u, 00787 }, 00788 }, 00789 }; 00790 00791 cy_stc_capsense_context_t cy_capsense_context = 00792 { 00793 .ptrCommonConfig = &cy_capsense_commonConfig, 00794 .ptrCommonContext = &cy_capsense_tuner.commonContext, 00795 .ptrInternalContext = &cy_capsense_internalContext, 00796 .ptrWdConfig = &cy_capsense_widgetConfig[0u], 00797 .ptrWdContext = &cy_capsense_tuner.widgetContext[0u], 00798 .ptrPinConfig = &cy_capsense_pinConfig[0u], 00799 .ptrShieldPinConfig = NULL, 00800 .ptrActiveScanSns = &cy_capsense_activeScanSns, 00801 .ptrFptrConfig = (const void *) &cy_capsense_fptrConfig, 00802 }; 00803 00804 #endif /* CY_CAPSENSE_CORE == __CORTEX_M */ 00805 00806 /* [] END OF FILE */
Generated on Tue Jul 19 2022 08:23:47 by
