Touch Sensing Example with usafa key detector not working any more

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Touch Sensing Example with usafa key detector not working any more

ソリューションへジャンプ
1,348件の閲覧回数
arun07
Contributor III

Hello Everyone,

I am facing a strange problem due to the NXP Touch Library available with the NXP SDK.

I am using NXP FRDM-KE15Z with MKE15Z256 micro-controller.

if I use the version 2.10 version of the SDK, the touch_sensing example project works very well with usafa key detector algorithm, below are the screen shot from the FreeMASTER tool.

arun07_1-1724861624887.png

 

But in the latest version of the SDK i.e. 2.16, I see there is a new key detector mbw and the project is updated to use this key detector. And when I use this project everything works fine.

But due to some reason I still want to use usafa key detector, so I copied the usafa key detector settings/tuning values from version 2.10 project to version 2.16 example project, and also updated the Electrode_1 and Electrode_2 to use the usafa key detector, and when I started this project, I see that the touch is not working, and the reason is clear, whenever I am touching the electrodes the signal is not crossing the deadband signal, and that's not detected.

I want to understand what exactly is changed in this touch sensing library which is causing this strange behavior (atleast for me), as per my understanding the same parameters should produce same results, as I am using the "usafa" key detector only.

The following is the screen shot of FreeMASTER with SDK version 2.16 and Electrode 1 and 2 updated to use usafa electrode with settings/tuning values copied from version 2.10

arun07_0-1724861422699.png

Also as I can see the values are also different.

I am also sharing the updated nt_setup.c file, just wanted to inform you guys that, I am just testing on two onboard electrodes i.e. Electrode 1 and Electrode, I don't have Freedom Touch board, and in project I have set this "#define NT_FRDM_TOUCH_SUPPORT 0".

The changes I did are just adding these lines.

// Keydetector with usafa key detector
const struct nt_keydetector_usafa nt_keydetector_usafa_El_1 = {
    .signal_filter.coef1        = 2,
    .base_avrg.n2_order         = 12,
    .non_activity_avrg.n2_order = 15,
    .entry_event_cnt            = 4,
    .deadband_cnt               = 4,
    .signal_to_noise_ratio      = 6,
    .min_noise_limit            = 100,
    .dc_track_enabled           = 1,
    .dc_track_cnt               = 100,
};
// Update the electrode with usafa instead of mbw key detector and copied the tuning
// values from version 2.10 version of SDK
const struct nt_electrode El_1 = {
    .shielding_electrode      = NULL,
    .multiplier               = 0,
    .divider                  = 0,
    .shield_threshold         = 5,
    .shield_gain              = 30,
    .shield_attn              = 1,
    .shield_sens              = 800,
    .keydetector_params.usafa = &nt_keydetector_usafa_El_1,
    .keydetector_interface    = &nt_keydetector_usafa_interface,
    .pin_input                = FRDM_TOUCH_BOARD_TSI_1,
    .gpio_input               = {GPIO_PTC0},
    .baseline_level           = 57593,
};
// Update the electrode with usafa instead of mbw key detector and copied the tuning
// values from version 2.10 version of SDK
const struct nt_electrode El_2 = {
    .shielding_electrode      = NULL,
    .multiplier               = 0,
    .divider                  = 0,
    .shield_threshold         = 5,
    .shield_gain              = 30,
    .shield_attn              = 1,
    .shield_sens              = 800,
    .keydetector_params.usafa = &nt_keydetector_usafa_El_1,
    .keydetector_interface    = &nt_keydetector_usafa_interface,
    .pin_input                = FRDM_TOUCH_BOARD_TSI_2,
    .gpio_input               = {GPIO_PTC1},
    .baseline_level           = 58346,
};

And the content of the complete file is as below.

/*
 * Copyright 2013 - 2016, Freescale Semiconductor, Inc.
 * Copyright 2016-2021 NXP
 * All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */
/*
Static configuration c file for the NXP Touch Library
generated by the NXP Touch GUI Tool
*/
#include "nt_setup.h"
#include "board.h"

int16_t actMat[NT_XTALK_NSENSORS * NT_XTALK_NSENSORS] = {
          32767, 15342, 19509, 12501,
          10826, 32767, 16167, 9671,
          4189,  3630,  32767, 6795 ,
          5213,  7894,  16532, 32767,
};

// Keydetector with usafa key detector
const struct nt_keydetector_usafa nt_keydetector_usafa_El_1 = {
    .signal_filter.coef1        = 2,
    .base_avrg.n2_order         = 12,
    .non_activity_avrg.n2_order = 15,
    .entry_event_cnt            = 4,
    .deadband_cnt               = 4,
    .signal_to_noise_ratio      = 6,
    .min_noise_limit            = 100,
    .dc_track_enabled           = 1,
    .dc_track_cnt               = 100,
};

const struct nt_keydetector_mbw nt_keydetector_mbw_El_1 = {
    .signal_filter.coef1        = 0,
    .base_avrg.n2_order         = 12,
    .non_activity_avrg.n2_order = 15,
    .entry_event_cnt            = 4,
    .deadband_cnt               = 4,
    .signal_to_noise_ratio      = 6,
    .min_noise_limit            = 200,
    .baseline_track_window      = 2000,
    .baseline_track_window_touch= 8000,
    .touch_limit                = 3,
    .tau_smooth_signal          = 50,
    .tau_smooth_baseline        = 1000,
    .debounce_length            = 0,
};

const struct nt_keydetector_mbw nt_keydetector_mbw_El_3 = {
    .signal_filter.coef1        = 0,
    .base_avrg.n2_order         = 12,
    .non_activity_avrg.n2_order = 15,
    .entry_event_cnt            = 4,
    .deadband_cnt               = 5,
    .signal_to_noise_ratio      = 4,
    .min_noise_limit            = 30,
    .baseline_track_window      = 2000,
    .baseline_track_window_touch= 8000,
    .touch_limit                = 3,      
    .tau_smooth_signal          = 10,
    .tau_smooth_baseline        = 1000,
    .debounce_length            = 5,
};

const struct nt_keydetector_mbw nt_keydetector_mbw_El_7 = {
    .signal_filter.coef1        = 0,
    .base_avrg.n2_order         = 14,
    .non_activity_avrg.n2_order = 15,
    .entry_event_cnt            = 4,
    .deadband_cnt               = 4,
    .signal_to_noise_ratio      = 3,
    .min_noise_limit            = 60,
    .baseline_track_window      = 2000,
    .baseline_track_window_touch= 8000,
    .touch_limit                = 0,      
    .tau_smooth_signal          = 10,
    .tau_smooth_baseline        = 1000,
    .debounce_length            = 0,
};

// Update the electrode with usafa instead of mbw key detector and copied the tuning
// values from version 2.10 version of SDK
const struct nt_electrode El_1 = {
    .shielding_electrode      = NULL,
    .multiplier               = 0,
    .divider                  = 0,
    .shield_threshold         = 5,
    .shield_gain              = 30,
    .shield_attn              = 1,
    .shield_sens              = 800,
    .keydetector_params.usafa = &nt_keydetector_usafa_El_1,
    .keydetector_interface    = &nt_keydetector_usafa_interface,
    .pin_input                = FRDM_TOUCH_BOARD_TSI_1,
    .gpio_input               = {GPIO_PTC0},
    .baseline_level           = 57593,
};
// Update the electrode with usafa instead of mbw key detector and copied the tuning
// values from version 2.10 version of SDK
const struct nt_electrode El_2 = {
    .shielding_electrode      = NULL,
    .multiplier               = 0,
    .divider                  = 0,
    .shield_threshold         = 5,
    .shield_gain              = 30,
    .shield_attn              = 1,
    .shield_sens              = 800,
    .keydetector_params.usafa = &nt_keydetector_usafa_El_1,
    .keydetector_interface    = &nt_keydetector_usafa_interface,
    .pin_input                = FRDM_TOUCH_BOARD_TSI_2,
    .gpio_input               = {GPIO_PTC1},
    .baseline_level           = 58346,
};
const struct nt_electrode El_3 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 500,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_3,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_1,
    .gpio_input             = {GPIO_PTD5, GPIO_PTE11},
    .baseline_level         = 11640,
};
const struct nt_electrode El_4 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 500,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_3,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_2,
    .gpio_input             = {GPIO_PTD6, GPIO_PTE11},
    .baseline_level         = 11557,
};
const struct nt_electrode El_5 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 500,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_3,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_3,
    .gpio_input             = {GPIO_PTD5, GPIO_PTE10},
    .baseline_level         = 14512,
};
const struct nt_electrode El_6 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 500,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_3,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_4,
    .gpio_input             = {GPIO_PTD6, GPIO_PTE10},
    .baseline_level         = 14512,
};
const struct nt_electrode El_7 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 1500,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .tsicnt_shift           = 6,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_7,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_SLIDER_ELECTRODE_1,
    .gpio_input             = {GPIO_PTD7},
    .baseline_level         = 55358,
};
const struct nt_electrode El_8 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 1500,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .tsicnt_shift           = 6,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_7,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_SLIDER_ELECTRODE_2,
    .gpio_input             = {GPIO_PTD1},
    .baseline_level         = 55247,
};
const struct nt_electrode El_9 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 1000,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .tsicnt_shift           = 6,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_7,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_1,
    .gpio_input             = {GPIO_PTE5},
    .baseline_level         = 50554,
};
const struct nt_electrode El_10 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 1000,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .tsicnt_shift           = 6,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_7,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_2,
    .gpio_input             = {GPIO_PTE4},
    .baseline_level         = 52651,
};
const struct nt_electrode El_11 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 1000,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .tsicnt_shift           = 6,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_7,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_3,
    .gpio_input             = {GPIO_PTB5},
    .baseline_level         = 53261,
};
const struct nt_electrode El_12 = {
    .shielding_electrode    = NULL,
    .multiplier             = 0,
    .divider                = 0,
    .delta_limit            = 1000,
    .shield_threshold       = 5,
    .shield_gain            = 30,
    .shield_attn            = 1,
    .shield_sens            = 800,
    .tsicnt_shift           = 6,
    .keydetector_params.mbw = &nt_keydetector_mbw_El_7,
    .keydetector_interface  = &nt_keydetector_mbw_interface,
    .pin_input              = FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_4,
    .gpio_input             = {GPIO_PTB4},
    .baseline_level         = 53803,
};

const tsi_config_t tsi_hw_config = {
    .configSelfCap.commonConfig.mainClock     = kTSI_MainClockSlection_0,
    .configSelfCap.commonConfig.ssc_mode      = kTSI_ssc_prbs_method,
    .configSelfCap.commonConfig.mode          = kTSI_SensingModeSlection_Self,
    .configSelfCap.commonConfig.dvolt         = kTSI_DvoltOption_3,
    .configSelfCap.commonConfig.cutoff        = kTSI_SincCutoffDiv_1,
    .configSelfCap.commonConfig.order         = kTSI_SincFilterOrder_2,
    .configSelfCap.commonConfig.decimation    = kTSI_SincDecimationValue_4,
    .configSelfCap.commonConfig.chargeNum     = kTSI_SscChargeNumValue_4,
    .configSelfCap.commonConfig.prbsOutsel    = kTSI_SscPrbsOutsel_2,
    .configSelfCap.commonConfig.noChargeNum   = kTSI_SscNoChargeNumValue_2,
    .configSelfCap.commonConfig.ssc_prescaler = kTSI_ssc_div_by_2,
    .configSelfCap.enableSensitivity          = true,
    .configSelfCap.enableShield               = kTSI_shieldAllOff,
    .configSelfCap.xdn                        = kTSI_SensitivityXdnOption_3,
    .configSelfCap.ctrim                      = kTSI_SensitivityCtrimOption_0,
    .configSelfCap.inputCurrent               = kTSI_CurrentMultipleInputValue_0,
    .configSelfCap.chargeCurrent              = kTSI_CurrentMultipleChargeValue_0,
    .configMutual.commonConfig.mainClock      = kTSI_MainClockSlection_0,
    .configMutual.commonConfig.ssc_mode       = kTSI_ssc_prbs_method,
    .configMutual.commonConfig.mode           = kTSI_SensingModeSlection_Mutual,
    .configMutual.commonConfig.dvolt          = kTSI_DvoltOption_3,
    .configMutual.commonConfig.cutoff         = kTSI_SincCutoffDiv_1,
    .configMutual.commonConfig.order          = kTSI_SincFilterOrder_2,
    .configMutual.commonConfig.decimation     = kTSI_SincDecimationValue_4,
    .configMutual.commonConfig.chargeNum      = kTSI_SscChargeNumValue_4,
    .configMutual.commonConfig.noChargeNum    = kTSI_SscNoChargeNumValue_2,
    .configMutual.commonConfig.prbsOutsel     = kTSI_SscPrbsOutsel_2,
    .configMutual.commonConfig.ssc_prescaler  = kTSI_ssc_div_by_2,
    .configMutual.preCurrent                  = kTSI_MutualPreCurrent_4uA,
    .configMutual.preResistor                 = kTSI_MutualPreResistor_4k,
    .configMutual.senseResistor               = kTSI_MutualSenseResistor_10k,
    .configMutual.boostCurrent                = kTSI_MutualSenseBoostCurrent_0uA,
    .configMutual.txDriveMode                 = kTSI_MutualTxDriveModeOption_0,
    .configMutual.pmosLeftCurrent             = kTSI_MutualPmosCurrentMirrorLeft_32,
    .configMutual.pmosRightCurrent            = kTSI_MutualPmosCurrentMirrorRight_1,
    .configMutual.enableNmosMirror            = true,
    .configMutual.nmosCurrent                 = kTSI_MutualNmosCurrentMirror_1,
    .thresl                                   = 0,
    .thresh                                   = 65535,
    .newCalc                                  = true,
};
const struct nt_tsi_recalib_config recalib_configuration = {
    .SelfRangeMin      = 50000,
    .SelfRangeMax      = 62000,
    .SelfRangeDeltaMin = 150,
    .SelfRangeDeltaMax = 7000,
    .MutRangeMin       = 9000,
    .MutRangeMax       = 16000,
    .MutRangeDeltaMin  = 150,
    .MutRangeDeltaMax  = 7000,
};
const struct nt_module_safety_gpio_params my_safety_params = {
    .delay_interval = 0,
    .user_interface = &gpio_interface,
};
const struct nt_system_xtalk_params my_xtalk_params= {
    .actMat =(uint16_t*)actMat,
    .nt_xtalk_neighbours = 4,
    .nt_xtalk_adapt_touch_time = 25,
};

const struct nt_electrode *const Keypad_1_controls[]         = {&El_1, &El_2, &El_3, &El_4, &El_5, &El_6, NULL};
const struct nt_electrode *const ASlider_2_controls[]        = {&El_7, &El_8, NULL};
const struct nt_electrode *const ARotary_3_controls[]        = {&El_9, &El_10, &El_11, &El_12, NULL};
const struct nt_control_arotary nt_control_arotary_ARotary_3 = {
    .range = 72,
};
const struct nt_control_aslider nt_control_aslider_ASlider_2 = {
    .range         = 160,
    .insensitivity = 2,
};
const struct nt_control_keypad nt_control_keypad_Keypad_1 = {
    .groups           = NULL,
    .groups_size      = 0,
    .multi_touch      = (uint32_t[]){0x0C, 0x18, 0x30, 0x24, 0x3C, 0x03, 0},
    .multi_touch_size = 6,
};
const struct nt_control Keypad_1 = {
    .electrodes            = &Keypad_1_controls[0],
    .control_params.keypad = &nt_control_keypad_Keypad_1,
    .interface             = &nt_control_keypad_interface,
    .adjacent_electrodes   = kAdj_grounding,
};
const struct nt_control ASlider_2 = {
    .electrodes             = &ASlider_2_controls[0],
    .control_params.aslider = &nt_control_aslider_ASlider_2,
    .interface              = &nt_control_aslider_interface,
};
const struct nt_control ARotary_3 = {
    .electrodes             = &ARotary_3_controls[0],
    .control_params.arotary = &nt_control_arotary_ARotary_3,
    .interface              = &nt_control_arotary_interface,
};
const struct nt_electrode *const nt_tsi_module_electrodes[] = {&El_1, &El_2, &El_3,  &El_4,  &El_5,  &El_6, &El_7,
                                                               &El_8, &El_9, &El_10, &El_11, &El_12, NULL};
const struct nt_electrode *const nt_tsi_module_xtalk_electrodes[] = {&El_3,  &El_4,  &El_5,  &El_6, NULL};
const struct nt_module nt_tsi_module                        = {
    .interface          = &nt_module_tsi_interface,
    .wtrmark_hi         = 65535,
    .wtrmark_lo         = 0,
    .config             = (void *)&tsi_hw_config,
    .instance           = 0,
    .electrodes         = &nt_tsi_module_electrodes[0],
    .safety_interface   = &nt_safety_interface,    
    .safety_params.gpio = (void *)&my_safety_params,
    .recalib_config     = (void *)&recalib_configuration,
    .elec_random_order  = true,
};
const struct nt_control *const System_0_controls[] = {&Keypad_1, &ASlider_2, &ARotary_3, NULL};
const struct nt_module *const System_0_modules[]   = {&nt_tsi_module, NULL};
const struct nt_system System_0                    = {
    .time_period            = 5,
    .init_time              = 400,
    .safety_period_multiple = 0,
    .safety_crc_hw          = true,
    .controls               = &System_0_controls[0],
    .modules                = &System_0_modules[0],
    .xtalk_interface        = &nt_system_xtalk_interface,
    .xtalk_params           = (void *)&my_xtalk_params,
    .xtalk_electrodes       = &nt_tsi_module_xtalk_electrodes[0],
};
void nt_enable(void)
{
    nt_electrode_enable(&El_1, 0);
    nt_electrode_enable(&El_2, 0);
    nt_electrode_enable(&El_3, 0);
    nt_electrode_enable(&El_4, 0);
    nt_electrode_enable(&El_5, 0);
    nt_electrode_enable(&El_6, 0);
    nt_electrode_enable(&El_7, 0);
    nt_electrode_enable(&El_8, 0);
    nt_electrode_enable(&El_9, 0);
    nt_electrode_enable(&El_10, 0);
    nt_electrode_enable(&El_11, 0);
    nt_electrode_enable(&El_12, 0);
    nt_control_enable(&Keypad_1);
    nt_control_enable(&ASlider_2);
    nt_control_enable(&ARotary_3);
}

// Following functions are generate, copy them to your application and implement there behaviour of events
/* Call on the TSI CNTR overflow 16-bit range (65535) */
/*void system_0_callback_template(uint32_t event, union nt_system_event_context * context)
{
  switch(event)
  {
    case NT_SYSTEM_EVENT_OVERRUN:
        // your code
    break;
    case NT_SYSTEM_EVENT_DATA_READY:
        // your code
    break;
    case NT_SYSTEM_EVENT_MODULE_DATA_READY:
        // your code
    break;
    case NT_SYSTEM_EVENT_DATA_OVERFLOW:
        // your code
    break;
    case NT_SYSTEM_EVENT_SIGNAL_LOW:
        // your code
    break;
    case NT_SYSTEM_EVENT_SIGNAL_HIGH:
        // your code
    break;
    case NT_SYSTEM_EVENT_ELEC_SHORT_VDD:
        // your code
    break;
    case NT_SYSTEM_EVENT_ELEC_SHORT_GND:
        // your code
    break;
    case NT_SYSTEM_EVENT_ELEC_SHORT_ADJ:
        // your code
    break;
  }
}
*/

/*static void Keypad_1_callback_template(const struct nt_control *control,
                               enum nt_control_keypad_event event,
                               uint32_t index)
 {
   switch(event)
   {
   case NT_KEYPAD_RELEASE:
     switch (index) {
         case 0:
         // your code
     break;
         case 1:
         // your code
     break;
         case 2:
         // your code
     break;
         case 3:
         // your code
     break;
         default:
         // your code
     break;
     }
     break;
   case NT_KEYPAD_TOUCH:
     switch (index) {
         case 0:
         // your code
     break;
         case 1:
         // your code
     break;
         case 2:
         // your code
     break;
         case 3:
         // your code
     break;
         default:
         // your code
     }
     break;
   }
 }
 */

/*static void ASlider_2_callback_template(const struct nt_control *control,
                                enum nt_control_aslider_event event,
                                uint32_t position)
 {
 switch(event)
     {
     case NT_ASLIDER_MOVEMENT:
         // your code
     break;
     case NT_ASLIDER_ALL_RELEASE:
         // your code
     break;
     case NT_ASLIDER_INITIAL_TOUCH:
         // your code
     default:
         // your code
     break;
   }
 }
 */

/*static void ASlider_2_callback_template(const struct nt_control *control,
                                enum nt_control_aslider_event event,
                                uint32_t position)
 {
 switch(event)
     {
     case NT_ASLIDER_MOVEMENT:
         // your code
     break;
     case NT_ASLIDER_ALL_RELEASE:
         // your code
     break;
     case NT_ASLIDER_INITIAL_TOUCH:
         // your code
     default:
         // your code
     break;
   }
 }
 */

 

Can someone please explain, why this is happening? Thanks in advance.

NXP-TOUCH-SOFTWARE FRDM-TOUCH 

 

ラベル(2)
0 件の賞賛
返信
1 解決策
1,322件の閲覧回数
arun07
Contributor III

I found the issue why with previous parameters touch is not working, it is due to the fact that in the touch library there is a new setting which is "newCalc".

const tsi_config_t tsi_hw_config;
typedef struct
{
    tsi_selfCap_config_t configSelfCap;  /*!< Hardware configuration for self capacitance measurement */
    tsi_mutualCap_config_t configMutual; /*!< Hardware configuration for mutual capacitance measurement */
    uint16_t thresl;                     /*!< Low threshold for out-of-range interrupt (wake-up from low-power) */
    uint16_t thresh;                     /*!< High threshold for out-of-range interrupt (wake-up from low-power) */
    bool newCalc;                        /*!< Use new calculation for Self cap */  
} tsi_config_t;

And in the project it was set to "true", and due to this things was not working.

I updated this to "false" and touch started working fine.

I need to understand what impact is this "true" is doing, in case someone can explain it will be really helpful.

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
1,323件の閲覧回数
arun07
Contributor III

I found the issue why with previous parameters touch is not working, it is due to the fact that in the touch library there is a new setting which is "newCalc".

const tsi_config_t tsi_hw_config;
typedef struct
{
    tsi_selfCap_config_t configSelfCap;  /*!< Hardware configuration for self capacitance measurement */
    tsi_mutualCap_config_t configMutual; /*!< Hardware configuration for mutual capacitance measurement */
    uint16_t thresl;                     /*!< Low threshold for out-of-range interrupt (wake-up from low-power) */
    uint16_t thresh;                     /*!< High threshold for out-of-range interrupt (wake-up from low-power) */
    bool newCalc;                        /*!< Use new calculation for Self cap */  
} tsi_config_t;

And in the project it was set to "true", and due to this things was not working.

I updated this to "false" and touch started working fine.

I need to understand what impact is this "true" is doing, in case someone can explain it will be really helpful.

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-1942434%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EUSAFA%E3%82%AD%E3%83%BC%E6%A4%9C%E5%87%BA%E5%99%A8%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E3%82%BF%E3%83%83%E3%83%81%E3%82%BB%E3%83%B3%E3%82%B7%E3%83%B3%E3%82%B0%E3%81%AE%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1942434%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%BF%E3%81%AA%E3%81%95%E3%82%93%3C%2FP%3E%3CP%3ENXP%20SDK%E3%81%A7%E5%88%A9%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AANXP%20Touch%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%8C%E5%8E%9F%E5%9B%A0%E3%81%A7%E3%80%81%E5%A5%87%E5%A6%99%E3%81%AA%E5%95%8F%E9%A1%8C%E3%81%AB%E7%9B%B4%E9%9D%A2%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3ENXP%20%3CSPAN%3EFRDM-KE15Z%E3%81%A8MKE15Z256%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESDK%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B32.10%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81touch_sensing%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AFUSAFA%E3%82%AD%E3%83%BC%E6%A4%9C%E5%87%BA%E5%99%A8%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E9%9D%9E%E5%B8%B8%E3%81%AB%E3%81%86%E3%81%BE%E3%81%8F%E9%80%A3%E6%90%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E4%BB%A5%E4%B8%8B%E3%81%AFFreeMASTER%E3%83%84%E3%83%BC%E3%83%AB%E3%81%8B%E3%82%89%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22arun07_1-1724861624887.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22arun07_1-1724861624887.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F295870iBCA66257778F5399%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22arun07_1-1724861624887.png%22%20alt%3D%22arun07_1-1724861624887.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%E3%81%97%E3%81%8B%E3%81%97%E3%80%81SDK%E3%81%AE%E6%9C%80%E6%96%B0%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3(2.16)%E3%81%A7%E3%81%AF%E3%80%81%E6%96%B0%E3%81%97%E3%81%84%E3%82%AD%E3%83%BC%E6%A4%9C%E5%87%BA%E5%99%A8mbw%E3%81%8C%E3%81%82%E3%82%8A%E3%80%81%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AF%E3%81%93%E3%81%AE%E3%82%AD%E3%83%BC%E6%A4%9C%E5%87%BA%E5%99%A8%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%81%97%E3%81%A6%E3%80%81%E3%81%93%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%8C%E3%81%86%E3%81%BE%E3%81%8F%E3%81%84%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E4%BD%95%E3%82%89%E3%81%8B%E3%81%AE%E7%90%86%E7%94%B1%E3%81%A7%E7%A7%81%E3%81%AF%E3%81%BE%E3%81%A0usafa%20key%20detector%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%81%84%E3%81%AE%E3%81%A7%E3%80%81%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B32.10%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AEusafa%20key%20detector%E3%81%AE%E8%A8%AD%E5%AE%9A%2F%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E5%80%A4%E3%82%92%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B32.16%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%80%81%E3%81%95%E3%82%89%E3%81%ABElectrode_1%E3%81%A8Electrode_2%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%A6usafa%20key%20detector%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%80%81%E3%81%93%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E3%80%81%E3%82%BF%E3%83%83%E3%83%81%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%20%E3%81%9D%E3%81%97%E3%81%A6%E3%80%81%E7%90%86%E7%94%B1%E3%81%AF%E6%98%8E%E3%82%89%E3%81%8B%E3%81%A7%E3%80%81%E9%9B%BB%E6%A5%B5%E3%81%AB%E8%A7%A6%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AF%E3%81%84%E3%81%A4%E3%81%A7%E3%82%82%E4%BF%A1%E5%8F%B7%E3%81%8C%E4%B8%8D%E6%84%9F%E5%B8%AF%E4%BF%A1%E5%8F%B7%E3%82%92%E6%A8%AA%E5%88%87%E3%81%A3%E3%81%A6%E3%81%8A%E3%82%89%E3%81%9A%E3%80%81%E3%81%9D%E3%82%8C%E3%81%AF%E6%A4%9C%E5%87%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E5%A5%87%E5%A6%99%E3%81%AA%E5%8B%95%E4%BD%9C%E3%82%92%E5%BC%95%E3%81%8D%E8%B5%B7%E3%81%93%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%AE%E3%82%BF%E3%83%83%E3%83%81%E3%82%BB%E3%83%B3%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A7%E6%AD%A3%E7%A2%BA%E3%81%AB%E4%BD%95%E3%81%8C%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%82%92%E7%90%86%E8%A7%A3%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99(%E5%B0%91%E3%81%AA%E3%81%8F%E3%81%A8%E3%82%82%E7%A7%81%E3%81%AB%E3%81%A8%E3%81%A3%E3%81%A6%E3%81%AF)%E3%80%81%E3%80%8Cusafa%E3%80%8D%E3%82%AD%E3%83%BC%E6%A4%9C%E5%87%BA%E5%99%A8%E3%81%AE%E3%81%BF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E5%90%8C%E3%81%98%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%8C%E5%90%8C%E3%81%98%E7%B5%90%E6%9E%9C%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%81%AF%E3%81%9A%E3%81%A0%E3%81%A8%E7%90%86%E8%A7%A3%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AF%E3%80%81SDK%20version%202.16%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%80%81Electrode%201%20%E3%81%A8%202%20%E3%82%92%20usafa%20electrode%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E6%9B%B4%E6%96%B0%E3%81%97%E3%80%81version%202.10%20%E3%81%8B%E3%82%89%E8%A8%AD%E5%AE%9A%2F%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E5%80%A4%E3%82%92%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%9F%20FreeMASTER%20%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%A7%E3%81%99%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22arun07_0-1724861422699.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22arun07_0-1724861422699.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F295868i654D9C54D4543327%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22arun07_0-1724861422699.png%22%20alt%3D%22arun07_0-1724861422699.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%81%BE%E3%81%9F%E3%80%81%E3%81%94%E8%A6%A7%E3%81%AE%E9%80%9A%E3%82%8A%E3%80%81%E5%80%A4%E3%82%82%E7%95%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%81%9Fnt_setup.c%E3%82%82%E5%85%B1%E6%9C%89%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%80%81%E3%81%A1%E3%82%87%E3%81%86%E3%81%A9%E3%81%82%E3%81%AA%E3%81%9F%E3%81%9F%E3%81%A1%E3%81%AB%E7%9F%A5%E3%82%89%E3%81%9B%E3%81%9F%E3%81%8B%E3%81%A3%E3%81%9F%E3%80%81%E7%A7%81%E3%81%AF%E3%81%A1%E3%82%87%E3%81%86%E3%81%A92%E3%81%A4%E3%81%AE%E3%82%AA%E3%83%B3%E3%83%9C%E3%83%BC%E3%83%89%E9%9B%BB%E6%A5%B5%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%80%81%E3%81%99%E3%81%AA%E3%82%8F%E3%81%A1%E9%9B%BB%E6%A5%B51%E3%81%A8%E9%9B%BB%E6%A5%B5%E3%80%81%E7%A7%81%E3%81%AF%E3%83%95%E3%83%AA%E3%83%BC%E3%83%80%E3%83%A0%E3%82%BF%E3%83%83%E3%83%81%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A7%E3%81%AF%E7%A7%81%E3%81%AF%E3%81%93%E3%81%AE%E3%80%8C%3CSPAN%3E%23define%20NT_FRDM_TOUCH_SUPPORT%200%3C%2FSPAN%3E%E3%80%8D%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%3E%E7%A7%81%E3%81%8C%E8%A1%8C%E3%81%A3%E3%81%9F%E5%A4%89%E6%9B%B4%E3%81%AF%E3%80%81%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E8%A1%8C%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%9F%E3%81%A0%E3%81%91%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%2F%2F%20Keydetector%20with%20usafa%20key%20detector%0Aconst%20struct%20nt_keydetector_usafa%20nt_keydetector_usafa_El_1%20%3D%20%7B%0A%20%20%20%20.signal_filter.coef1%20%20%20%20%20%20%20%20%3D%202%2C%0A%20%20%20%20.base_avrg.n2_order%20%20%20%20%20%20%20%20%20%3D%2012%2C%0A%20%20%20%20.non_activity_avrg.n2_order%20%3D%2015%2C%0A%20%20%20%20.entry_event_cnt%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.deadband_cnt%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.signal_to_noise_ratio%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.min_noise_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%20100%2C%0A%20%20%20%20.dc_track_enabled%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.dc_track_cnt%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20100%2C%0A%7D%3B%0A%2F%2F%20Update%20the%20electrode%20with%20usafa%20instead%20of%20mbw%20key%20detector%20and%20copied%20the%20tuning%0A%2F%2F%20values%20from%20version%202.10%20version%20of%20SDK%0Aconst%20struct%20nt_electrode%20El_1%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.usafa%20%3D%20%26amp%3Bnt_keydetector_usafa_El_1%2C%0A%20%20%20%20.keydetector_interface%20%20%20%20%3D%20%26amp%3Bnt_keydetector_usafa_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_1%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTC0%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%20%20%3D%2057593%2C%0A%7D%3B%0A%2F%2F%20Update%20the%20electrode%20with%20usafa%20instead%20of%20mbw%20key%20detector%20and%20copied%20the%20tuning%0A%2F%2F%20values%20from%20version%202.10%20version%20of%20SDK%0Aconst%20struct%20nt_electrode%20El_2%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.usafa%20%3D%20%26amp%3Bnt_keydetector_usafa_El_1%2C%0A%20%20%20%20.keydetector_interface%20%20%20%20%3D%20%26amp%3Bnt_keydetector_usafa_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_2%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTC1%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%20%20%3D%2058346%2C%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CSPAN%3E%E3%81%9D%E3%81%97%E3%81%A6%E3%80%81%E5%AE%8C%E5%85%A8%E3%81%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E9%80%9A%E3%82%8A%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%2F*%0A%20*%20Copyright%202013%20-%202016%2C%20Freescale%20Semiconductor%2C%20Inc.%0A%20*%20Copyright%202016-2021%20NXP%0A%20*%20All%20rights%20reserved.%0A%20*%0A%20*%20SPDX-License-Identifier%3A%20BSD-3-Clause%0A%20*%2F%0A%2F*%0AStatic%20configuration%20c%20file%20for%20the%20NXP%20Touch%20Library%0Agenerated%20by%20the%20NXP%20Touch%20GUI%20Tool%0A*%2F%0A%23include%20%22nt_setup.h%22%0A%23include%20%22board.h%22%0A%0Aint16_t%20actMat%5BNT_XTALK_NSENSORS%20*%20NT_XTALK_NSENSORS%5D%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%2032767%2C%2015342%2C%2019509%2C%2012501%2C%0A%20%20%20%20%20%20%20%20%20%2010826%2C%2032767%2C%2016167%2C%209671%2C%0A%20%20%20%20%20%20%20%20%20%204189%2C%20%203630%2C%20%2032767%2C%206795%20%2C%0A%20%20%20%20%20%20%20%20%20%205213%2C%20%207894%2C%20%2016532%2C%2032767%2C%0A%7D%3B%0A%0A%2F%2F%20Keydetector%20with%20usafa%20key%20detector%0Aconst%20struct%20nt_keydetector_usafa%20nt_keydetector_usafa_El_1%20%3D%20%7B%0A%20%20%20%20.signal_filter.coef1%20%20%20%20%20%20%20%20%3D%202%2C%0A%20%20%20%20.base_avrg.n2_order%20%20%20%20%20%20%20%20%20%3D%2012%2C%0A%20%20%20%20.non_activity_avrg.n2_order%20%3D%2015%2C%0A%20%20%20%20.entry_event_cnt%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.deadband_cnt%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.signal_to_noise_ratio%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.min_noise_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%20100%2C%0A%20%20%20%20.dc_track_enabled%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.dc_track_cnt%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20100%2C%0A%7D%3B%0A%0Aconst%20struct%20nt_keydetector_mbw%20nt_keydetector_mbw_El_1%20%3D%20%7B%0A%20%20%20%20.signal_filter.coef1%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.base_avrg.n2_order%20%20%20%20%20%20%20%20%20%3D%2012%2C%0A%20%20%20%20.non_activity_avrg.n2_order%20%3D%2015%2C%0A%20%20%20%20.entry_event_cnt%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.deadband_cnt%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.signal_to_noise_ratio%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.min_noise_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%20200%2C%0A%20%20%20%20.baseline_track_window%20%20%20%20%20%20%3D%202000%2C%0A%20%20%20%20.baseline_track_window_touch%3D%208000%2C%0A%20%20%20%20.touch_limit%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%203%2C%0A%20%20%20%20.tau_smooth_signal%20%20%20%20%20%20%20%20%20%20%3D%2050%2C%0A%20%20%20%20.tau_smooth_baseline%20%20%20%20%20%20%20%20%3D%201000%2C%0A%20%20%20%20.debounce_length%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%7D%3B%0A%0Aconst%20struct%20nt_keydetector_mbw%20nt_keydetector_mbw_El_3%20%3D%20%7B%0A%20%20%20%20.signal_filter.coef1%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.base_avrg.n2_order%20%20%20%20%20%20%20%20%20%3D%2012%2C%0A%20%20%20%20.non_activity_avrg.n2_order%20%3D%2015%2C%0A%20%20%20%20.entry_event_cnt%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.deadband_cnt%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.signal_to_noise_ratio%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.min_noise_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.baseline_track_window%20%20%20%20%20%20%3D%202000%2C%0A%20%20%20%20.baseline_track_window_touch%3D%208000%2C%0A%20%20%20%20.touch_limit%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%203%2C%20%20%20%20%20%20%0A%20%20%20%20.tau_smooth_signal%20%20%20%20%20%20%20%20%20%20%3D%2010%2C%0A%20%20%20%20.tau_smooth_baseline%20%20%20%20%20%20%20%20%3D%201000%2C%0A%20%20%20%20.debounce_length%20%20%20%20%20%20%20%20%20%20%20%20%3D%205%2C%0A%7D%3B%0A%0Aconst%20struct%20nt_keydetector_mbw%20nt_keydetector_mbw_El_7%20%3D%20%7B%0A%20%20%20%20.signal_filter.coef1%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.base_avrg.n2_order%20%20%20%20%20%20%20%20%20%3D%2014%2C%0A%20%20%20%20.non_activity_avrg.n2_order%20%3D%2015%2C%0A%20%20%20%20.entry_event_cnt%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.deadband_cnt%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%204%2C%0A%20%20%20%20.signal_to_noise_ratio%20%20%20%20%20%20%3D%203%2C%0A%20%20%20%20.min_noise_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%2060%2C%0A%20%20%20%20.baseline_track_window%20%20%20%20%20%20%3D%202000%2C%0A%20%20%20%20.baseline_track_window_touch%3D%208000%2C%0A%20%20%20%20.touch_limit%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%20%20%20%20%20%20%0A%20%20%20%20.tau_smooth_signal%20%20%20%20%20%20%20%20%20%20%3D%2010%2C%0A%20%20%20%20.tau_smooth_baseline%20%20%20%20%20%20%20%20%3D%201000%2C%0A%20%20%20%20.debounce_length%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%7D%3B%0A%0A%2F%2F%20Update%20the%20electrode%20with%20usafa%20instead%20of%20mbw%20key%20detector%20and%20copied%20the%20tuning%0A%2F%2F%20values%20from%20version%202.10%20version%20of%20SDK%0Aconst%20struct%20nt_electrode%20El_1%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.usafa%20%3D%20%26amp%3Bnt_keydetector_usafa_El_1%2C%0A%20%20%20%20.keydetector_interface%20%20%20%20%3D%20%26amp%3Bnt_keydetector_usafa_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_1%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTC0%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%20%20%3D%2057593%2C%0A%7D%3B%0A%2F%2F%20Update%20the%20electrode%20with%20usafa%20instead%20of%20mbw%20key%20detector%20and%20copied%20the%20tuning%0A%2F%2F%20values%20from%20version%202.10%20version%20of%20SDK%0Aconst%20struct%20nt_electrode%20El_2%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.usafa%20%3D%20%26amp%3Bnt_keydetector_usafa_El_1%2C%0A%20%20%20%20.keydetector_interface%20%20%20%20%3D%20%26amp%3Bnt_keydetector_usafa_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_2%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTC1%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%20%20%3D%2058346%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_3%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%20500%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_3%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_1%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTD5%2C%20GPIO_PTE11%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2011640%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_4%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%20500%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_3%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_2%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTD6%2C%20GPIO_PTE11%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2011557%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_5%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%20500%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_3%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_3%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTD5%2C%20GPIO_PTE10%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2014512%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_6%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%20500%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_3%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_MUTUAL_ELECTRODE_4%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTD6%2C%20GPIO_PTE10%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2014512%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_7%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%201500%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.tsicnt_shift%20%20%20%20%20%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_7%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_SLIDER_ELECTRODE_1%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTD7%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2055358%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_8%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%201500%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.tsicnt_shift%20%20%20%20%20%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_7%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_SLIDER_ELECTRODE_2%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTD1%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2055247%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_9%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%201000%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.tsicnt_shift%20%20%20%20%20%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_7%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_1%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTE5%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2050554%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_10%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%201000%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.tsicnt_shift%20%20%20%20%20%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_7%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_2%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTE4%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2052651%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_11%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%201000%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.tsicnt_shift%20%20%20%20%20%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_7%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_3%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTB5%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2053261%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20El_12%20%3D%20%7B%0A%20%20%20%20.shielding_electrode%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.multiplier%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.divider%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.delta_limit%20%20%20%20%20%20%20%20%20%20%20%20%3D%201000%2C%0A%20%20%20%20.shield_threshold%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.shield_gain%20%20%20%20%20%20%20%20%20%20%20%20%3D%2030%2C%0A%20%20%20%20.shield_attn%20%20%20%20%20%20%20%20%20%20%20%20%3D%201%2C%0A%20%20%20%20.shield_sens%20%20%20%20%20%20%20%20%20%20%20%20%3D%20800%2C%0A%20%20%20%20.tsicnt_shift%20%20%20%20%20%20%20%20%20%20%20%3D%206%2C%0A%20%20%20%20.keydetector_params.mbw%20%3D%20%26amp%3Bnt_keydetector_mbw_El_7%2C%0A%20%20%20%20.keydetector_interface%20%20%3D%20%26amp%3Bnt_keydetector_mbw_interface%2C%0A%20%20%20%20.pin_input%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_4%2C%0A%20%20%20%20.gpio_input%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7BGPIO_PTB4%7D%2C%0A%20%20%20%20.baseline_level%20%20%20%20%20%20%20%20%20%3D%2053803%2C%0A%7D%3B%0A%0Aconst%20tsi_config_t%20tsi_hw_config%20%3D%20%7B%0A%20%20%20%20.configSelfCap.commonConfig.mainClock%20%20%20%20%20%3D%20kTSI_MainClockSlection_0%2C%0A%20%20%20%20.configSelfCap.commonConfig.ssc_mode%20%20%20%20%20%20%3D%20kTSI_ssc_prbs_method%2C%0A%20%20%20%20.configSelfCap.commonConfig.mode%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_SensingModeSlection_Self%2C%0A%20%20%20%20.configSelfCap.commonConfig.dvolt%20%20%20%20%20%20%20%20%20%3D%20kTSI_DvoltOption_3%2C%0A%20%20%20%20.configSelfCap.commonConfig.cutoff%20%20%20%20%20%20%20%20%3D%20kTSI_SincCutoffDiv_1%2C%0A%20%20%20%20.configSelfCap.commonConfig.order%20%20%20%20%20%20%20%20%20%3D%20kTSI_SincFilterOrder_2%2C%0A%20%20%20%20.configSelfCap.commonConfig.decimation%20%20%20%20%3D%20kTSI_SincDecimationValue_4%2C%0A%20%20%20%20.configSelfCap.commonConfig.chargeNum%20%20%20%20%20%3D%20kTSI_SscChargeNumValue_4%2C%0A%20%20%20%20.configSelfCap.commonConfig.prbsOutsel%20%20%20%20%3D%20kTSI_SscPrbsOutsel_2%2C%0A%20%20%20%20.configSelfCap.commonConfig.noChargeNum%20%20%20%3D%20kTSI_SscNoChargeNumValue_2%2C%0A%20%20%20%20.configSelfCap.commonConfig.ssc_prescaler%20%3D%20kTSI_ssc_div_by_2%2C%0A%20%20%20%20.configSelfCap.enableSensitivity%20%20%20%20%20%20%20%20%20%20%3D%20true%2C%0A%20%20%20%20.configSelfCap.enableShield%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_shieldAllOff%2C%0A%20%20%20%20.configSelfCap.xdn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_SensitivityXdnOption_3%2C%0A%20%20%20%20.configSelfCap.ctrim%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_SensitivityCtrimOption_0%2C%0A%20%20%20%20.configSelfCap.inputCurrent%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_CurrentMultipleInputValue_0%2C%0A%20%20%20%20.configSelfCap.chargeCurrent%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_CurrentMultipleChargeValue_0%2C%0A%20%20%20%20.configMutual.commonConfig.mainClock%20%20%20%20%20%20%3D%20kTSI_MainClockSlection_0%2C%0A%20%20%20%20.configMutual.commonConfig.ssc_mode%20%20%20%20%20%20%20%3D%20kTSI_ssc_prbs_method%2C%0A%20%20%20%20.configMutual.commonConfig.mode%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_SensingModeSlection_Mutual%2C%0A%20%20%20%20.configMutual.commonConfig.dvolt%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_DvoltOption_3%2C%0A%20%20%20%20.configMutual.commonConfig.cutoff%20%20%20%20%20%20%20%20%20%3D%20kTSI_SincCutoffDiv_1%2C%0A%20%20%20%20.configMutual.commonConfig.order%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_SincFilterOrder_2%2C%0A%20%20%20%20.configMutual.commonConfig.decimation%20%20%20%20%20%3D%20kTSI_SincDecimationValue_4%2C%0A%20%20%20%20.configMutual.commonConfig.chargeNum%20%20%20%20%20%20%3D%20kTSI_SscChargeNumValue_4%2C%0A%20%20%20%20.configMutual.commonConfig.noChargeNum%20%20%20%20%3D%20kTSI_SscNoChargeNumValue_2%2C%0A%20%20%20%20.configMutual.commonConfig.prbsOutsel%20%20%20%20%20%3D%20kTSI_SscPrbsOutsel_2%2C%0A%20%20%20%20.configMutual.commonConfig.ssc_prescaler%20%20%3D%20kTSI_ssc_div_by_2%2C%0A%20%20%20%20.configMutual.preCurrent%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualPreCurrent_4uA%2C%0A%20%20%20%20.configMutual.preResistor%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualPreResistor_4k%2C%0A%20%20%20%20.configMutual.senseResistor%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualSenseResistor_10k%2C%0A%20%20%20%20.configMutual.boostCurrent%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualSenseBoostCurrent_0uA%2C%0A%20%20%20%20.configMutual.txDriveMode%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualTxDriveModeOption_0%2C%0A%20%20%20%20.configMutual.pmosLeftCurrent%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualPmosCurrentMirrorLeft_32%2C%0A%20%20%20%20.configMutual.pmosRightCurrent%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualPmosCurrentMirrorRight_1%2C%0A%20%20%20%20.configMutual.enableNmosMirror%20%20%20%20%20%20%20%20%20%20%20%20%3D%20true%2C%0A%20%20%20%20.configMutual.nmosCurrent%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20kTSI_MutualNmosCurrentMirror_1%2C%0A%20%20%20%20.thresl%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.thresh%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%2065535%2C%0A%20%20%20%20.newCalc%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20true%2C%0A%7D%3B%0Aconst%20struct%20nt_tsi_recalib_config%20recalib_configuration%20%3D%20%7B%0A%20%20%20%20.SelfRangeMin%20%20%20%20%20%20%3D%2050000%2C%0A%20%20%20%20.SelfRangeMax%20%20%20%20%20%20%3D%2062000%2C%0A%20%20%20%20.SelfRangeDeltaMin%20%3D%20150%2C%0A%20%20%20%20.SelfRangeDeltaMax%20%3D%207000%2C%0A%20%20%20%20.MutRangeMin%20%20%20%20%20%20%20%3D%209000%2C%0A%20%20%20%20.MutRangeMax%20%20%20%20%20%20%20%3D%2016000%2C%0A%20%20%20%20.MutRangeDeltaMin%20%20%3D%20150%2C%0A%20%20%20%20.MutRangeDeltaMax%20%20%3D%207000%2C%0A%7D%3B%0Aconst%20struct%20nt_module_safety_gpio_params%20my_safety_params%20%3D%20%7B%0A%20%20%20%20.delay_interval%20%3D%200%2C%0A%20%20%20%20.user_interface%20%3D%20%26amp%3Bgpio_interface%2C%0A%7D%3B%0Aconst%20struct%20nt_system_xtalk_params%20my_xtalk_params%3D%20%7B%0A%20%20%20%20.actMat%20%3D(uint16_t*)actMat%2C%0A%20%20%20%20.nt_xtalk_neighbours%20%3D%204%2C%0A%20%20%20%20.nt_xtalk_adapt_touch_time%20%3D%2025%2C%0A%7D%3B%0A%0Aconst%20struct%20nt_electrode%20*const%20Keypad_1_controls%5B%5D%20%20%20%20%20%20%20%20%20%3D%20%7B%26amp%3BEl_1%2C%20%26amp%3BEl_2%2C%20%26amp%3BEl_3%2C%20%26amp%3BEl_4%2C%20%26amp%3BEl_5%2C%20%26amp%3BEl_6%2C%20NULL%7D%3B%0Aconst%20struct%20nt_electrode%20*const%20ASlider_2_controls%5B%5D%20%20%20%20%20%20%20%20%3D%20%7B%26amp%3BEl_7%2C%20%26amp%3BEl_8%2C%20NULL%7D%3B%0Aconst%20struct%20nt_electrode%20*const%20ARotary_3_controls%5B%5D%20%20%20%20%20%20%20%20%3D%20%7B%26amp%3BEl_9%2C%20%26amp%3BEl_10%2C%20%26amp%3BEl_11%2C%20%26amp%3BEl_12%2C%20NULL%7D%3B%0Aconst%20struct%20nt_control_arotary%20nt_control_arotary_ARotary_3%20%3D%20%7B%0A%20%20%20%20.range%20%3D%2072%2C%0A%7D%3B%0Aconst%20struct%20nt_control_aslider%20nt_control_aslider_ASlider_2%20%3D%20%7B%0A%20%20%20%20.range%20%20%20%20%20%20%20%20%20%3D%20160%2C%0A%20%20%20%20.insensitivity%20%3D%202%2C%0A%7D%3B%0Aconst%20struct%20nt_control_keypad%20nt_control_keypad_Keypad_1%20%3D%20%7B%0A%20%20%20%20.groups%20%20%20%20%20%20%20%20%20%20%20%3D%20NULL%2C%0A%20%20%20%20.groups_size%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.multi_touch%20%20%20%20%20%20%3D%20(uint32_t%5B%5D)%7B0x0C%2C%200x18%2C%200x30%2C%200x24%2C%200x3C%2C%200x03%2C%200%7D%2C%0A%20%20%20%20.multi_touch_size%20%3D%206%2C%0A%7D%3B%0Aconst%20struct%20nt_control%20Keypad_1%20%3D%20%7B%0A%20%20%20%20.electrodes%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BKeypad_1_controls%5B0%5D%2C%0A%20%20%20%20.control_params.keypad%20%3D%20%26amp%3Bnt_control_keypad_Keypad_1%2C%0A%20%20%20%20.interface%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3Bnt_control_keypad_interface%2C%0A%20%20%20%20.adjacent_electrodes%20%20%20%3D%20kAdj_grounding%2C%0A%7D%3B%0Aconst%20struct%20nt_control%20ASlider_2%20%3D%20%7B%0A%20%20%20%20.electrodes%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BASlider_2_controls%5B0%5D%2C%0A%20%20%20%20.control_params.aslider%20%3D%20%26amp%3Bnt_control_aslider_ASlider_2%2C%0A%20%20%20%20.interface%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3Bnt_control_aslider_interface%2C%0A%7D%3B%0Aconst%20struct%20nt_control%20ARotary_3%20%3D%20%7B%0A%20%20%20%20.electrodes%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BARotary_3_controls%5B0%5D%2C%0A%20%20%20%20.control_params.arotary%20%3D%20%26amp%3Bnt_control_arotary_ARotary_3%2C%0A%20%20%20%20.interface%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3Bnt_control_arotary_interface%2C%0A%7D%3B%0Aconst%20struct%20nt_electrode%20*const%20nt_tsi_module_electrodes%5B%5D%20%3D%20%7B%26amp%3BEl_1%2C%20%26amp%3BEl_2%2C%20%26amp%3BEl_3%2C%20%20%26amp%3BEl_4%2C%20%20%26amp%3BEl_5%2C%20%20%26amp%3BEl_6%2C%20%26amp%3BEl_7%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26amp%3BEl_8%2C%20%26amp%3BEl_9%2C%20%26amp%3BEl_10%2C%20%26amp%3BEl_11%2C%20%26amp%3BEl_12%2C%20NULL%7D%3B%0Aconst%20struct%20nt_electrode%20*const%20nt_tsi_module_xtalk_electrodes%5B%5D%20%3D%20%7B%26amp%3BEl_3%2C%20%20%26amp%3BEl_4%2C%20%20%26amp%3BEl_5%2C%20%20%26amp%3BEl_6%2C%20NULL%7D%3B%0Aconst%20struct%20nt_module%20nt_tsi_module%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7B%0A%20%20%20%20.interface%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3Bnt_module_tsi_interface%2C%0A%20%20%20%20.wtrmark_hi%20%20%20%20%20%20%20%20%20%3D%2065535%2C%0A%20%20%20%20.wtrmark_lo%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.config%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20(void%20*)%26amp%3Btsi_hw_config%2C%0A%20%20%20%20.instance%20%20%20%20%20%20%20%20%20%20%20%3D%200%2C%0A%20%20%20%20.electrodes%20%20%20%20%20%20%20%20%20%3D%20%26amp%3Bnt_tsi_module_electrodes%5B0%5D%2C%0A%20%20%20%20.safety_interface%20%20%20%3D%20%26amp%3Bnt_safety_interface%2C%20%20%20%20%0A%20%20%20%20.safety_params.gpio%20%3D%20(void%20*)%26amp%3Bmy_safety_params%2C%0A%20%20%20%20.recalib_config%20%20%20%20%20%3D%20(void%20*)%26amp%3Brecalib_configuration%2C%0A%20%20%20%20.elec_random_order%20%20%3D%20true%2C%0A%7D%3B%0Aconst%20struct%20nt_control%20*const%20System_0_controls%5B%5D%20%3D%20%7B%26amp%3BKeypad_1%2C%20%26amp%3BASlider_2%2C%20%26amp%3BARotary_3%2C%20NULL%7D%3B%0Aconst%20struct%20nt_module%20*const%20System_0_modules%5B%5D%20%20%20%3D%20%7B%26amp%3Bnt_tsi_module%2C%20NULL%7D%3B%0Aconst%20struct%20nt_system%20System_0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%7B%0A%20%20%20%20.time_period%20%20%20%20%20%20%20%20%20%20%20%20%3D%205%2C%0A%20%20%20%20.init_time%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20400%2C%0A%20%20%20%20.safety_period_multiple%20%3D%200%2C%0A%20%20%20%20.safety_crc_hw%20%20%20%20%20%20%20%20%20%20%3D%20true%2C%0A%20%20%20%20.controls%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BSystem_0_controls%5B0%5D%2C%0A%20%20%20%20.modules%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%26amp%3BSystem_0_modules%5B0%5D%2C%0A%20%20%20%20.xtalk_interface%20%20%20%20%20%20%20%20%3D%20%26amp%3Bnt_system_xtalk_interface%2C%0A%20%20%20%20.xtalk_params%20%20%20%20%20%20%20%20%20%20%20%3D%20(void%20*)%26amp%3Bmy_xtalk_params%2C%0A%20%20%20%20.xtalk_electrodes%20%20%20%20%20%20%20%3D%20%26amp%3Bnt_tsi_module_xtalk_electrodes%5B0%5D%2C%0A%7D%3B%0Avoid%20nt_enable(void)%0A%7B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_1%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_2%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_3%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_4%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_5%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_6%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_7%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_8%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_9%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_10%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_11%2C%200)%3B%0A%20%20%20%20nt_electrode_enable(%26amp%3BEl_12%2C%200)%3B%0A%20%20%20%20nt_control_enable(%26amp%3BKeypad_1)%3B%0A%20%20%20%20nt_control_enable(%26amp%3BASlider_2)%3B%0A%20%20%20%20nt_control_enable(%26amp%3BARotary_3)%3B%0A%7D%0A%0A%2F%2F%20Following%20functions%20are%20generate%2C%20copy%20them%20to%20your%20application%20and%20implement%20there%20behaviour%20of%20events%0A%2F*%20Call%20on%20the%20TSI%20CNTR%20overflow%2016-bit%20range%20(65535)%20*%2F%0A%2F*void%20system_0_callback_template(uint32_t%20event%2C%20union%20nt_system_event_context%20*%20context)%0A%7B%0A%20%20switch(event)%0A%20%20%7B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_OVERRUN%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_DATA_READY%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_MODULE_DATA_READY%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_DATA_OVERFLOW%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_SIGNAL_LOW%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_SIGNAL_HIGH%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_ELEC_SHORT_VDD%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_ELEC_SHORT_GND%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%20%20case%20NT_SYSTEM_EVENT_ELEC_SHORT_ADJ%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20break%3B%0A%20%20%7D%0A%7D%0A*%2F%0A%0A%2F*static%20void%20Keypad_1_callback_template(const%20struct%20nt_control%20*control%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20enum%20nt_control_keypad_event%20event%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20uint32_t%20index)%0A%20%7B%0A%20%20%20switch(event)%0A%20%20%20%7B%0A%20%20%20case%20NT_KEYPAD_RELEASE%3A%0A%20%20%20%20%20switch%20(index)%20%7B%0A%20%20%20%20%20%20%20%20%20case%200%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20case%201%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20case%203%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%7D%0A%20%20%20%20%20break%3B%0A%20%20%20case%20NT_KEYPAD_TOUCH%3A%0A%20%20%20%20%20switch%20(index)%20%7B%0A%20%20%20%20%20%20%20%20%20case%200%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20case%201%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20case%203%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20%7D%0A%20%20%20%20%20break%3B%0A%20%20%20%7D%0A%20%7D%0A%20*%2F%0A%0A%2F*static%20void%20ASlider_2_callback_template(const%20struct%20nt_control%20*control%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20enum%20nt_control_aslider_event%20event%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20uint32_t%20position)%0A%20%7B%0A%20switch(event)%0A%20%20%20%20%20%7B%0A%20%20%20%20%20case%20NT_ASLIDER_MOVEMENT%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20case%20NT_ASLIDER_ALL_RELEASE%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20case%20NT_ASLIDER_INITIAL_TOUCH%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%7D%0A%20%7D%0A%20*%2F%0A%0A%2F*static%20void%20ASlider_2_callback_template(const%20struct%20nt_control%20*control%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20enum%20nt_control_aslider_event%20event%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20uint32_t%20position)%0A%20%7B%0A%20switch(event)%0A%20%20%20%20%20%7B%0A%20%20%20%20%20case%20NT_ASLIDER_MOVEMENT%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20case%20NT_ASLIDER_ALL_RELEASE%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%20%20case%20NT_ASLIDER_INITIAL_TOUCH%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%2F%2F%20your%20code%0A%20%20%20%20%20break%3B%0A%20%20%20%7D%0A%20%7D%0A%20*%2F%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E8%AA%B0%E3%81%8B%E3%81%8C%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%81%BE%E3%81%99%E3%81%8B%E3%80%81%E3%81%AA%E3%81%9C%E3%81%93%E3%82%8C%E3%81%8C%E8%B5%B7%E3%81%93%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8B%3F%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fc-pwmxy87654%2FNXP-TOUCH-SOFTWARE%2Fpd-p%2FNXP-TOUCH-SOFTWARE%22%20class%3D%22lia-product-mention%22%20data-product%3D%223556-1%22%20target%3D%22_blank%22%3ENXP-TOUCH-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%3C%2FA%3E%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fc-pwmxy87654%2FFRDM-TOUCH%2Fpd-p%2FFRDM-TOUCH%22%20class%3D%22lia-product-mention%22%20data-product%3D%223558-1%22%20target%3D%22_blank%22%3EFRDM-TOUCH%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1942434%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EFreedom%E9%96%8B%E7%99%BA%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EKinetis%20E%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E3%83%BB%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1943300%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3AUSAFA%E3%82%AD%E3%83%BC%E6%A4%9C%E5%87%BA%E5%99%A8%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E3%82%BF%E3%83%83%E3%83%81%E3%82%BB%E3%83%B3%E3%82%B7%E3%83%B3%E3%82%B0%E3%81%AE%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1943300%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BB%A5%E5%89%8D%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%A7%E3%82%BF%E3%83%83%E3%83%81%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84%E7%90%86%E7%94%B1%E3%81%AF%E3%80%81%E3%82%BF%E3%83%83%E3%83%81%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AB%E3%80%8CnewCalc%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E6%96%B0%E3%81%97%E3%81%84%E8%A8%AD%E5%AE%9A%E3%81%8C%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3Econst%20tsi_config_t%20tsi_hw_config%3B%0Atypedef%20struct%0A%7B%0A%20%20%20%20tsi_selfCap_config_t%20configSelfCap%3B%20%20%2F*!%26lt%3B%20Hardware%20configuration%20for%20self%20capacitance%20measurement%20*%2F%0A%20%20%20%20tsi_mutualCap_config_t%20configMutual%3B%20%2F*!%26lt%3B%20Hardware%20configuration%20for%20mutual%20capacitance%20measurement%20*%2F%0A%20%20%20%20uint16_t%20thresl%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F*!%26lt%3B%20Low%20threshold%20for%20out-of-range%20interrupt%20(wake-up%20from%20low-power)%20*%2F%0A%20%20%20%20uint16_t%20thresh%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F*!%26lt%3B%20High%20threshold%20for%20out-of-range%20interrupt%20(wake-up%20from%20low-power)%20*%2F%0A%20%20%20%20bool%20newCalc%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F*!%26lt%3B%20Use%20new%20calculation%20for%20Self%20cap%20*%2F%20%20%0A%7D%20tsi_config_t%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%E3%81%9D%E3%81%97%E3%81%A6%E3%80%81%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A7%E3%81%AF%E3%80%8Ctrue%E3%80%8D%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E3%81%93%E3%81%AE%E3%81%9F%E3%82%81%E3%80%81%E7%89%A9%E4%BA%8B%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%93%E3%82%8C%E3%82%92%E3%80%8Cfalse%E3%80%8D%E3%81%AB%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%82%BF%E3%83%83%E3%83%81%E3%81%8C%E6%AD%A3%E5%B8%B8%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E5%A7%8B%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%80%8C%E7%9C%9F%E5%AE%9F%E3%80%8D%E3%81%8C%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E5%BD%B1%E9%9F%BF%E3%82%92%E4%B8%8E%E3%81%88%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%81%E8%AA%B0%E3%81%8B%E3%81%8C%E3%81%9D%E3%82%8C%E3%82%92%E8%AA%AC%E6%98%8E%E3%81%A7%E3%81%8D%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AB%E5%82%99%E3%81%88%E3%81%A6%E3%80%81%E6%9C%AC%E5%BD%93%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A4%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E