This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR2676: Only some channels shown in data visualization

Part Number: MSP430FR2676

Hi all,

I am encountering a problem where in case I set up a button arrangement or as in this case, a touchpad with more than 5 or 6 channels, not all the channels are shown in the bar chart, oscilloscope or channel table. In this case I am working with a 5 RX 5 TX touchpad, which makes 25 channels, and only 5 are shown. Here are the screenshots of the configuration. Any help is appreciated, thanks in advance.

Best regards,

JV

Screenshot 1

Screenshot 2

Screenshot 3

  • Hi Javier,

    Unfortunately the links to your screenshots cannot be opened here at TI for security reasons.  You can paste the images using the Insert option below here on the E2E page.

    Is your trackpad square or round?

    Typically when this happens the project in the GUI and code programmed into the MSP430 are somehow different.  What this means is, when the MSP430 is reporting the measurements for each TX and RX node (sensor element), the the measurement cycle and sensor element to match what the GUI thinks it should be.

    Did you create the touchpad in the GUI and generated the code and configuration file (CAPT_UserConfig), then layout your trackpad using the connections in the configuration file?  Did you modify any part of the CAPT_UserConfig.c file by hand?

  • Hello Dennis,

    Sorry for the late response. My trackpad is square, 5 by 5, 5 TX 5 RX in mutual configuration. I did create the touchpad in the GUI, inserted the MCU, used the auto-assign function and then wire the touchpad accordingly. I have not modify in any shape or form the configuration file or any file. I did some tests with other button configurations and the same happens: with every configuration that exceeds a certain quantity of used channels I cannot visualize the values. Find attached the screenshots. Thanks in advance.

    JV

  • Hi Javier,

    This is quite strange.  It appears that only the first measurement cycle (E00 - E04) is being measured.  I have attached a copy of a 5X5 configuration file.  Check line 706, .ui8NrOfCycles = 10.  Do you see same in your CAPT_UserConfig.c file?

  • Hi Dennis,

    In my case is in line 647, ui8NrOfCycles = 10. I can't see the configuration file you have attached, is it in that message? If you could send me one I could check if there are any differences. Below my configuration file.

    Best regards,

    JV

    7444.CAPT_UserConfig.c
    /* --COPYRIGHT--,BSD
     * Copyright (c) 2017, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     * --/COPYRIGHT--*/
    
    
    // Generated by Captivate Design Center v1_83_00_08 on Tue May 14 10:30:19 CEST 2024
    
    
    //*****************************************************************************
    // CAPT_UserConfig.c
    //
    // \version 1.83.00.05
    // Released on May 15, 2020
    //
    //*****************************************************************************
    
    //*****************************************************************************
    //
    // NOTE: This is an automatically generated source code file!  The Captivate
    // Design Center generates the User Configuration file automatically based
    // upon the sensor layout that was created.
    //
    // Changes to this file will be OVERWRITTEN if a you select
    // "Update Existing Project" under "Generate Source Code" in the Design Center.
    //
    // To avoid interference with the code generation process, keep ALL application
    // code external to this file.
    //
    //*****************************************************************************
    
    #include "CAPT_UserConfig.h"
    
    //*****************************************************************************
    //
    //! Captivate Element Definitions
    //! All elements in this application are defined below.
    //! Each element has 3 components:
    //!  1) a raw count array (One index per freq. scanned) (uint16_t)
    //!  2) a tuning array (One index per freq. scanned) (tCaptivateElementTuning)
    //!  3) a element structure (tElement)
    //
    //*****************************************************************************
    // Sensor: TKP00, Element: E00
    uint16_t TKP00_E00_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E00_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E00 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E00_RawCnts,
        .pTuning = TKP00_E00_Tuning,
    };
    
    // Sensor: TKP00, Element: E01
    uint16_t TKP00_E01_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E01_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E01 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E01_RawCnts,
        .pTuning = TKP00_E01_Tuning,
    };
    
    // Sensor: TKP00, Element: E02
    uint16_t TKP00_E02_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E02_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E02 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E02_RawCnts,
        .pTuning = TKP00_E02_Tuning,
    };
    
    // Sensor: TKP00, Element: E03
    uint16_t TKP00_E03_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E03_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E03 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E03_RawCnts,
        .pTuning = TKP00_E03_Tuning,
    };
    
    // Sensor: TKP00, Element: E04
    uint16_t TKP00_E04_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E04_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E04 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E04_RawCnts,
        .pTuning = TKP00_E04_Tuning,
    };
    
    // Sensor: TKP00, Element: E05
    uint16_t TKP00_E05_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E05_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E05 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E05_RawCnts,
        .pTuning = TKP00_E05_Tuning,
    };
    
    // Sensor: TKP00, Element: E06
    uint16_t TKP00_E06_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E06_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E06 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E06_RawCnts,
        .pTuning = TKP00_E06_Tuning,
    };
    
    // Sensor: TKP00, Element: E07
    uint16_t TKP00_E07_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E07_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E07 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E07_RawCnts,
        .pTuning = TKP00_E07_Tuning,
    };
    
    // Sensor: TKP00, Element: E08
    uint16_t TKP00_E08_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E08_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E08 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E08_RawCnts,
        .pTuning = TKP00_E08_Tuning,
    };
    
    // Sensor: TKP00, Element: E09
    uint16_t TKP00_E09_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E09_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E09 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 2,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E09_RawCnts,
        .pTuning = TKP00_E09_Tuning,
    };
    
    // Sensor: TKP00, Element: E10
    uint16_t TKP00_E10_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E10_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E10 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 1,
        .ui8RxPin = 0,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E10_RawCnts,
        .pTuning = TKP00_E10_Tuning,
    };
    
    // Sensor: TKP00, Element: E11
    uint16_t TKP00_E11_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E11_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E11 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 1,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E11_RawCnts,
        .pTuning = TKP00_E11_Tuning,
    };
    
    // Sensor: TKP00, Element: E12
    uint16_t TKP00_E12_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E12_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E12 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 1,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E12_RawCnts,
        .pTuning = TKP00_E12_Tuning,
    };
    
    // Sensor: TKP00, Element: E13
    uint16_t TKP00_E13_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E13_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E13 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 1,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E13_RawCnts,
        .pTuning = TKP00_E13_Tuning,
    };
    
    // Sensor: TKP00, Element: E14
    uint16_t TKP00_E14_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E14_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E14 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 1,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E14_RawCnts,
        .pTuning = TKP00_E14_Tuning,
    };
    
    // Sensor: TKP00, Element: E15
    uint16_t TKP00_E15_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E15_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E15 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E15_RawCnts,
        .pTuning = TKP00_E15_Tuning,
    };
    
    // Sensor: TKP00, Element: E16
    uint16_t TKP00_E16_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E16_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E16 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E16_RawCnts,
        .pTuning = TKP00_E16_Tuning,
    };
    
    // Sensor: TKP00, Element: E17
    uint16_t TKP00_E17_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E17_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E17 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E17_RawCnts,
        .pTuning = TKP00_E17_Tuning,
    };
    
    // Sensor: TKP00, Element: E18
    uint16_t TKP00_E18_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E18_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E18 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E18_RawCnts,
        .pTuning = TKP00_E18_Tuning,
    };
    
    // Sensor: TKP00, Element: E19
    uint16_t TKP00_E19_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E19_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E19 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E19_RawCnts,
        .pTuning = TKP00_E19_Tuning,
    };
    
    // Sensor: TKP00, Element: E20
    uint16_t TKP00_E20_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E20_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E20 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E20_RawCnts,
        .pTuning = TKP00_E20_Tuning,
    };
    
    // Sensor: TKP00, Element: E21
    uint16_t TKP00_E21_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E21_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E21 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E21_RawCnts,
        .pTuning = TKP00_E21_Tuning,
    };
    
    // Sensor: TKP00, Element: E22
    uint16_t TKP00_E22_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E22_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E22 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E22_RawCnts,
        .pTuning = TKP00_E22_Tuning,
    };
    
    // Sensor: TKP00, Element: E23
    uint16_t TKP00_E23_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E23_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E23 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E23_RawCnts,
        .pTuning = TKP00_E23_Tuning,
    };
    
    // Sensor: TKP00, Element: E24
    uint16_t TKP00_E24_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning TKP00_E24_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement TKP00_E24 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 2,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = TKP00_E24_RawCnts,
        .pTuning = TKP00_E24_Tuning,
    };
    
    
    //*****************************************************************************
    //
    //! Captivate Time Cycle Definitions
    //! All time cycles in this application are defined below.  Time cycles are
    //! groups of elements that are measured together in parallel in one time slot.
    //! Each cycle has 2 components:
    //!  1) an element pointer array to the member elements (tElement*)
    //!  2) a cycle structure (tCycle)
    //
    //*****************************************************************************
    // Time Cycle: TKP00_C00
    tElement* TKP00_C00_Elements[4] =
    {
        &TKP00_E00,
        &TKP00_E01,
        &TKP00_E02,
        &TKP00_E03,
    };
    tCycle TKP00_C00 =
    {
        .ui8NrOfElements = 4,
        .pElements = TKP00_C00_Elements,
    };
    
    // Time Cycle: TKP00_C01
    tElement* TKP00_C01_Elements[1] =
    {
        &TKP00_E04,
    };
    tCycle TKP00_C01 =
    {
        .ui8NrOfElements = 1,
        .pElements = TKP00_C01_Elements,
    };
    
    // Time Cycle: TKP00_C02
    tElement* TKP00_C02_Elements[4] =
    {
        &TKP00_E05,
        &TKP00_E06,
        &TKP00_E07,
        &TKP00_E08,
    };
    tCycle TKP00_C02 =
    {
        .ui8NrOfElements = 4,
        .pElements = TKP00_C02_Elements,
    };
    
    // Time Cycle: TKP00_C03
    tElement* TKP00_C03_Elements[1] =
    {
        &TKP00_E09,
    };
    tCycle TKP00_C03 =
    {
        .ui8NrOfElements = 1,
        .pElements = TKP00_C03_Elements,
    };
    
    // Time Cycle: TKP00_C04
    tElement* TKP00_C04_Elements[4] =
    {
        &TKP00_E10,
        &TKP00_E11,
        &TKP00_E12,
        &TKP00_E13,
    };
    tCycle TKP00_C04 =
    {
        .ui8NrOfElements = 4,
        .pElements = TKP00_C04_Elements,
    };
    
    // Time Cycle: TKP00_C05
    tElement* TKP00_C05_Elements[1] =
    {
        &TKP00_E14,
    };
    tCycle TKP00_C05 =
    {
        .ui8NrOfElements = 1,
        .pElements = TKP00_C05_Elements,
    };
    
    // Time Cycle: TKP00_C06
    tElement* TKP00_C06_Elements[4] =
    {
        &TKP00_E15,
        &TKP00_E16,
        &TKP00_E17,
        &TKP00_E18,
    };
    tCycle TKP00_C06 =
    {
        .ui8NrOfElements = 4,
        .pElements = TKP00_C06_Elements,
    };
    
    // Time Cycle: TKP00_C07
    tElement* TKP00_C07_Elements[1] =
    {
        &TKP00_E19,
    };
    tCycle TKP00_C07 =
    {
        .ui8NrOfElements = 1,
        .pElements = TKP00_C07_Elements,
    };
    
    // Time Cycle: TKP00_C08
    tElement* TKP00_C08_Elements[4] =
    {
        &TKP00_E20,
        &TKP00_E21,
        &TKP00_E22,
        &TKP00_E23,
    };
    tCycle TKP00_C08 =
    {
        .ui8NrOfElements = 4,
        .pElements = TKP00_C08_Elements,
    };
    
    // Time Cycle: TKP00_C09
    tElement* TKP00_C09_Elements[1] =
    {
        &TKP00_E24,
    };
    tCycle TKP00_C09 =
    {
        .ui8NrOfElements = 1,
        .pElements = TKP00_C09_Elements,
    };
    
    
    //*****************************************************************************
    //
    //! Captivate Sensor Definitions
    //! All sensors in this application are defined below.  Sensors are
    //! groups of time cycles that utilize raw measurement data to create an
    //! abstract sensor type, such as a button, slider, wheel, or prox sensor.
    //! Each sensor has 3 components:
    //!  1) a cycle pointer array to the member time cycles (tCycle*)
    //!  2) a sensor-specific parameter structure (tGenericSensorParams)
    //!  3) a sensor structure (tSensor)
    //
    //*****************************************************************************
    //Sensor: TKP00
    const tCycle* TKP00_Cycles[10] =
    {
        &TKP00_C00,
        &TKP00_C01,
        &TKP00_C02,
        &TKP00_C03,
        &TKP00_C04,
        &TKP00_C05,
        &TKP00_C06,
        &TKP00_C07,
        &TKP00_C08,
        &TKP00_C09,
    };
    
    tElement TKP00_NA =
    {
        .filterCount.ui16Natural = 0,
        .LTA.ui16Natural = 0,
    };
    
    tElement* TKP00_Elements[5][5] =
    {
        { &TKP00_E00, &TKP00_E01, &TKP00_E02, &TKP00_E03, &TKP00_E04, },
        { &TKP00_E05, &TKP00_E06, &TKP00_E07, &TKP00_E08, &TKP00_E09, },
        { &TKP00_E10, &TKP00_E11, &TKP00_E12, &TKP00_E13, &TKP00_E14, },
        { &TKP00_E15, &TKP00_E16, &TKP00_E17, &TKP00_E18, &TKP00_E19, },
        { &TKP00_E20, &TKP00_E21, &TKP00_E22, &TKP00_E23, &TKP00_E24, },
    };
    
    uint16_t ui16TKP00SumX[5];
    uint16_t ui16TKP00SumY[5];
    tTrackPadSensorParams TKP00_Params =
    {
        .pvProcessSensor = NULL,
        .pvProcessGesture = NULL,
        .bReseed = false,
        .ui8Gesture = 0xFF,
        .bPresentTouch = false,
        // Trackpad matrics
        .ui8TotalColumns = 5,
        .ui8TotalRows = 5,
        .pMatrix = TKP00_Elements[0],
        .pSumX = ui16TKP00SumX,
        .pSumY = ui16TKP00SumY,
        // Size and resolution
        .ui16Resolution_X = 1000,
        .ui16Resolution_Y = 1000,
        // Trims
        .ui16UpperTrim_X = 1000,
        .ui16LowerTrim_X = 0,
        .ui16UpperTrim_Y = 1000,
        .ui16LowerTrim_Y = 0,
        // Filtering
        .bFilterType = eDynamic,
        .bFilterEnable = true,
        .ui16DynamicFilterHighSpeed = 150,
        .ui16DynamicFilterLowSpeed = 10,
        .ui8DynamicFilterLowSpeedBeta = 10,
        .ui8StaticFilterBeta = 80,
        .ui16RejectionThreshold = 0,
        // Gesture parameters
        .ui16TapTime_Min = 4,
        .ui16TapTime_Max = 16,
        .ui16SwipeTime_Max = 30,
        .ui16DoubleTapTime_Max = 20,
        .ui16TapHoldTime_Min = 40,
        .ui16SwipeDistance_Min = 150,
    };
    
    tSensor TKP00 =
    {
        // Basic Properties
        .TypeOfSensor = eTrackpad,
        .SensingMethod = eProjected,
        .DirectionOfInterest = eDOIUp,
        .pvCallback = NULL,
        .ui8NrOfCycles = 10,
        .pCycle = TKP00_Cycles,
        .pSensorParams = (tGenericSensorParams*)&TKP00_Params,
        // Conversion Control Parameters
        .ui16ConversionCount = 500,
        .ui16ConversionGain = 100,
        .ui8FreqDiv = 2,
        .ui8ChargeLength = 0,
        .ui8TransferLength = 0,
        .bModEnable = false,
        .ui8BiasControl = 3,
        .bCsDischarge = true,
        .bLpmControl = false,
        .ui8InputSyncControl = 0,
        .bTimerSyncControl = false,
        .bIdleState = true,
        // Tuning  Parameters
        .ui16ProxThreshold = 10,
        .ui16NegativeTouchThreshold = 30,
        .ui16ErrorThreshold = 8191,
        .ui16TimeoutThreshold = 65535,
        .ProxDbThreshold.DbIn = 1,
        .ProxDbThreshold.DbOut = 0,
        .TouchDbThreshold.DbIn = 1,
        .TouchDbThreshold.DbOut = 0,
        .bCountFilterEnable = false,
        .ui8CntBeta = 1,
        .bSensorHalt = false,
        .bPTSensorHalt = true,
        .bPTElementHalt = true,
        .ui8LTABeta = 7,
        .bReCalibrateEnable = true,
    };
    
    
    #if (CAPT_CONDUCTED_NOISE_IMMUNITY_ENABLE==true)
    //*****************************************************************************
    //
    //! \var g_EMCConfig
    //! This structure stores the EMC configuration for this application.
    //
    //*****************************************************************************
    const tEMCConfig g_EMCConfig =
    {
    	// Conversion Style
    	.selfModeConversionStyle = CAPT_SELF_MODE_CONVERSION_STYLE,
    	.projModeConversionStyle = CAPT_PROJ_MODE_CONVERSION_STYLE,
    	
    	// Oversampling Style
    	.selfModeOversamplingStyle = CAPT_SELF_MODE_OVERSAMPLING_STYLE,
    	.projModeOversamplingStyle = CAPT_PROJ_MODE_OVERSAMPLING_STYLE,
    	
    	// Jitter Filter Enable
    	.bJitterFilterEnable = true,
    	
    	// Noise Thresholds and Calibration Noise Limits
    	.ui8NoiseThreshold = CAPT_NOISE_THRESHOLD,
    	.ui16CalibrationNoiseLimit = CAPT_CALIBRATION_NOISE_LIMIT,
    	.ui8CalibrationTestSampleSize = 8,
    		
    	// Dynamic Threshold Adjustment Parameters
    	.bEnableDynamicThresholdAdjustment = CAPT_DYNAMIC_THRESHOLD_ADJUSTMENT,
    	.ui8MaxRelThreshAdj = 76,
    	.ui8NoiseLevelFilterEntryThresh = 40,
    	.ui8NoiseLevelFilterExitThresh = 0,
    	.ui8NoiseLevelFilterDown = 6,
    	.ui8NoiseLevelFilterUp = 1,
    	.coeffA = _IQ31(0.0065),
    	.coeffB = _IQ31(0.050)
    };
    #endif
    
    //*****************************************************************************
    //
    //! \var g_pCaptivateSensorArray
    //! This array allows for indexed access to any
    //! sensor in the configuration.
    //
    //*****************************************************************************
    tSensor* g_pCaptivateSensorArray[CAPT_SENSOR_COUNT] =
    {
        &TKP00,
    };
    
    
    //*****************************************************************************
    //
    //! \var g_uiApp
    //! This structure stores the global settings for this application.
    //
    //*****************************************************************************
    tCaptivateApplication g_uiApp =
    {
        .state = eUIActive,
    	.pSensorList = &g_pCaptivateSensorArray[0],
        .ui8NrOfSensors = CAPT_SENSOR_COUNT,
        .ui8AppLPM = CAPT_LOW_POWER_MODE,
        .bElementDataTxEnable = true,
        .bSensorDataTxEnable = true,
        .ui16ActiveModeScanPeriod = 33,
        .ui16WakeOnProxModeScanPeriod = 100,
        .ui16InactivityTimeout = 32,
        .ui8WakeupInterval = 5,
    };
    

  • Hi Javier,

    I super apologize for not responding sooner.

    Here is my configuration file -> 

    1884.CAPT_UserConfig.c
    /* --COPYRIGHT--,BSD
     * Copyright (c) 2016, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     * --/COPYRIGHT--*/
    
    
    // Generated by Captivate Design Center v1_50_00_00 on Wed Sep 13 17:20:23 CDT 2017
    
    
    //*****************************************************************************
    // CAPT_UserConfig.c
    //
    // \version 1.10.03.04
    // Released on July 12, 2017
    //
    //*****************************************************************************
    
    //*****************************************************************************
    //
    // NOTE: This is an automatically generated source code file!  The Captivate
    // Design Center generates the User Configuration file automatically based
    // upon the sensor layout that was created.
    //
    // Changes to this file will be OVERWRITTEN if a you select
    // "Update Existing Project" under "Generate Source Code" in the Design Center.
    //
    // To avoid interference with the code generation process, keep ALL application
    // code external to this file.
    //
    //*****************************************************************************
    
    #include "CAPT_UserConfig.h"
    
    //*****************************************************************************
    //
    //! Captivate Element Definitions
    //! All elements in this application are defined below.
    //! Each element has 3 components:
    //!  1) a raw count array (One index per freq. scanned) (uint16_t)
    //!  2) a tuning array (One index per freq. scanned) (tCaptivateElementTuning)
    //!  3) a element structure (tElement)
    //
    //*****************************************************************************
    // Sensor: Mode, Element: E00
    uint16_t Mode_E00_RawCnts[CAPT_SELF_FREQ_CNT];
    tCaptivateElementTuning Mode_E00_Tuning[CAPT_SELF_FREQ_CNT];
    tElement Mode_E00 =
    {
        .ui8RxPin = 1,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = Mode_E00_RawCnts,
        .pTuning = Mode_E00_Tuning,
    };
    
    // Sensor: Trackpad, Element: E00
    uint16_t Trackpad_E00_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E00_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E00 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 1,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E00_RawCnts,
        .pTuning = Trackpad_E00_Tuning,
    };
    
    // Sensor: Trackpad, Element: E01
    uint16_t Trackpad_E01_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E01_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E01 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 1,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E01_RawCnts,
        .pTuning = Trackpad_E01_Tuning,
    };
    
    // Sensor: Trackpad, Element: E02
    uint16_t Trackpad_E02_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E02_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E02 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 1,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E02_RawCnts,
        .pTuning = Trackpad_E02_Tuning,
    };
    
    // Sensor: Trackpad, Element: E03
    uint16_t Trackpad_E03_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E03_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E03 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 1,
        .ui8RxPin = 3,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E03_RawCnts,
        .pTuning = Trackpad_E03_Tuning,
    };
    
    // Sensor: Trackpad, Element: E04
    uint16_t Trackpad_E04_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E04_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E04 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 1,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E04_RawCnts,
        .pTuning = Trackpad_E04_Tuning,
    };
    
    // Sensor: Trackpad, Element: E05
    uint16_t Trackpad_E05_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E05_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E05 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E05_RawCnts,
        .pTuning = Trackpad_E05_Tuning,
    };
    
    // Sensor: Trackpad, Element: E06
    uint16_t Trackpad_E06_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E06_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E06 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E06_RawCnts,
        .pTuning = Trackpad_E06_Tuning,
    };
    
    // Sensor: Trackpad, Element: E07
    uint16_t Trackpad_E07_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E07_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E07 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 2,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E07_RawCnts,
        .pTuning = Trackpad_E07_Tuning,
    };
    
    // Sensor: Trackpad, Element: E08
    uint16_t Trackpad_E08_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E08_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E08 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 2,
        .ui8RxPin = 3,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E08_RawCnts,
        .pTuning = Trackpad_E08_Tuning,
    };
    
    // Sensor: Trackpad, Element: E09
    uint16_t Trackpad_E09_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E09_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E09 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 2,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E09_RawCnts,
        .pTuning = Trackpad_E09_Tuning,
    };
    
    // Sensor: Trackpad, Element: E10
    uint16_t Trackpad_E10_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E10_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E10 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E10_RawCnts,
        .pTuning = Trackpad_E10_Tuning,
    };
    
    // Sensor: Trackpad, Element: E11
    uint16_t Trackpad_E11_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E11_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E11 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E11_RawCnts,
        .pTuning = Trackpad_E11_Tuning,
    };
    
    // Sensor: Trackpad, Element: E12
    uint16_t Trackpad_E12_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E12_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E12 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E12_RawCnts,
        .pTuning = Trackpad_E12_Tuning,
    };
    
    // Sensor: Trackpad, Element: E13
    uint16_t Trackpad_E13_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E13_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E13 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 3,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E13_RawCnts,
        .pTuning = Trackpad_E13_Tuning,
    };
    
    // Sensor: Trackpad, Element: E14
    uint16_t Trackpad_E14_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E14_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E14 =
    {
        .ui8TxPin = 3,
        .ui8TxBlock = 3,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E14_RawCnts,
        .pTuning = Trackpad_E14_Tuning,
    };
    
    // Sensor: Trackpad, Element: E15
    uint16_t Trackpad_E15_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E15_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E15 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E15_RawCnts,
        .pTuning = Trackpad_E15_Tuning,
    };
    
    // Sensor: Trackpad, Element: E16
    uint16_t Trackpad_E16_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E16_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E16 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E16_RawCnts,
        .pTuning = Trackpad_E16_Tuning,
    };
    
    // Sensor: Trackpad, Element: E17
    uint16_t Trackpad_E17_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E17_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E17 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E17_RawCnts,
        .pTuning = Trackpad_E17_Tuning,
    };
    
    // Sensor: Trackpad, Element: E18
    uint16_t Trackpad_E18_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E18_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E18 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 3,
        .ui8RxPin = 3,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E18_RawCnts,
        .pTuning = Trackpad_E18_Tuning,
    };
    
    // Sensor: Trackpad, Element: E19
    uint16_t Trackpad_E19_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E19_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E19 =
    {
        .ui8TxPin = 2,
        .ui8TxBlock = 3,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E19_RawCnts,
        .pTuning = Trackpad_E19_Tuning,
    };
    
    // Sensor: Trackpad, Element: E20
    uint16_t Trackpad_E20_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E20_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E20 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 3,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E20_RawCnts,
        .pTuning = Trackpad_E20_Tuning,
    };
    
    // Sensor: Trackpad, Element: E21
    uint16_t Trackpad_E21_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E21_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E21 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 2,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E21_RawCnts,
        .pTuning = Trackpad_E21_Tuning,
    };
    
    // Sensor: Trackpad, Element: E22
    uint16_t Trackpad_E22_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E22_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E22 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 0,
        .ui8RxBlock = 1,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E22_RawCnts,
        .pTuning = Trackpad_E22_Tuning,
    };
    
    // Sensor: Trackpad, Element: E23
    uint16_t Trackpad_E23_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E23_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E23 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 3,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E23_RawCnts,
        .pTuning = Trackpad_E23_Tuning,
    };
    
    // Sensor: Trackpad, Element: E24
    uint16_t Trackpad_E24_RawCnts[CAPT_MUTUAL_FREQ_CNT];
    tCaptivateElementTuning Trackpad_E24_Tuning[CAPT_MUTUAL_FREQ_CNT];
    tElement Trackpad_E24 =
    {
        .ui8TxPin = 1,
        .ui8TxBlock = 3,
        .ui8RxPin = 1,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = Trackpad_E24_RawCnts,
        .pTuning = Trackpad_E24_Tuning,
    };
    
    
    //*****************************************************************************
    //
    //! Captivate Time Cycle Definitions
    //! All time cycles in this application are defined below.  Time cycles are
    //! groups of elements that are measured together in parallel in one time slot.
    //! Each cycle has 2 components:
    //!  1) an element pointer array to the member elements (tElement*)
    //!  2) a cycle structure (tCycle)
    //
    //*****************************************************************************
    // Time Cycle: Mode_C00
    tElement* Mode_C00_Elements[1] =
    {
        &Mode_E00,
    };
    tCycle Mode_C00 =
    {
        .ui8NrOfElements = 1,
        .pElements = Mode_C00_Elements,
    };
    
    // Time Cycle: Trackpad_C00
    tElement* Trackpad_C00_Elements[4] =
    {
        &Trackpad_E00,
        &Trackpad_E01,
        &Trackpad_E02,
        &Trackpad_E03,
    };
    tCycle Trackpad_C00 =
    {
        .ui8NrOfElements = 4,
        .pElements = Trackpad_C00_Elements,
    };
    
    // Time Cycle: Trackpad_C01
    tElement* Trackpad_C01_Elements[1] =
    {
        &Trackpad_E04,
    };
    tCycle Trackpad_C01 =
    {
        .ui8NrOfElements = 1,
        .pElements = Trackpad_C01_Elements,
    };
    
    // Time Cycle: Trackpad_C02
    tElement* Trackpad_C02_Elements[4] =
    {
        &Trackpad_E05,
        &Trackpad_E06,
        &Trackpad_E07,
        &Trackpad_E08,
    };
    tCycle Trackpad_C02 =
    {
        .ui8NrOfElements = 4,
        .pElements = Trackpad_C02_Elements,
    };
    
    // Time Cycle: Trackpad_C03
    tElement* Trackpad_C03_Elements[1] =
    {
        &Trackpad_E09,
    };
    tCycle Trackpad_C03 =
    {
        .ui8NrOfElements = 1,
        .pElements = Trackpad_C03_Elements,
    };
    
    // Time Cycle: Trackpad_C04
    tElement* Trackpad_C04_Elements[4] =
    {
        &Trackpad_E10,
        &Trackpad_E11,
        &Trackpad_E12,
        &Trackpad_E13,
    };
    tCycle Trackpad_C04 =
    {
        .ui8NrOfElements = 4,
        .pElements = Trackpad_C04_Elements,
    };
    
    // Time Cycle: Trackpad_C05
    tElement* Trackpad_C05_Elements[1] =
    {
        &Trackpad_E14,
    };
    tCycle Trackpad_C05 =
    {
        .ui8NrOfElements = 1,
        .pElements = Trackpad_C05_Elements,
    };
    
    // Time Cycle: Trackpad_C06
    tElement* Trackpad_C06_Elements[4] =
    {
        &Trackpad_E15,
        &Trackpad_E16,
        &Trackpad_E17,
        &Trackpad_E18,
    };
    tCycle Trackpad_C06 =
    {
        .ui8NrOfElements = 4,
        .pElements = Trackpad_C06_Elements,
    };
    
    // Time Cycle: Trackpad_C07
    tElement* Trackpad_C07_Elements[1] =
    {
        &Trackpad_E19,
    };
    tCycle Trackpad_C07 =
    {
        .ui8NrOfElements = 1,
        .pElements = Trackpad_C07_Elements,
    };
    
    // Time Cycle: Trackpad_C08
    tElement* Trackpad_C08_Elements[4] =
    {
        &Trackpad_E20,
        &Trackpad_E21,
        &Trackpad_E22,
        &Trackpad_E23,
    };
    tCycle Trackpad_C08 =
    {
        .ui8NrOfElements = 4,
        .pElements = Trackpad_C08_Elements,
    };
    
    // Time Cycle: Trackpad_C09
    tElement* Trackpad_C09_Elements[1] =
    {
        &Trackpad_E24,
    };
    tCycle Trackpad_C09 =
    {
        .ui8NrOfElements = 1,
        .pElements = Trackpad_C09_Elements,
    };
    
    
    //*****************************************************************************
    //
    //! Captivate Sensor Definitions
    //! All sensors in this application are defined below.  Sensors are
    //! groups of time cycles that utilize raw measurement data to create an
    //! abstract sensor type, such as a button, slider, wheel, or prox sensor.
    //! Each sensor has 3 components:
    //!  1) a cycle pointer array to the member time cycles (tCycle*)
    //!  2) a sensor-specific parameter structure (tGenericSensorParams)
    //!  3) a sensor structure (tSensor)
    //
    //*****************************************************************************
    //Sensor: Mode
    const tCycle* Mode_Cycles[1] =
    {
        &Mode_C00,
    };
    
    tButtonSensorParams Mode_Params;
    tSensor Mode =
    {
        // Basic Properties
        .TypeOfSensor = eButtonGroup,
        .SensingMethod = eSelf,
        .DirectionOfInterest = eDOIDown,
        .pvCallback = NULL,
        .ui8NrOfCycles = 1,
        .pCycle = Mode_Cycles,
        .pSensorParams = (tGenericSensorParams*)&Mode_Params,
        // Conversion Control Parameters
        .ui16ConversionCount = 150,
        .ui16ConversionGain = 150,
        .ui8FreqDiv = 2,
        .ui8ChargeLength = 0,
        .ui8TransferLength = 0,
        .bModEnable = false,
        .ui8BiasControl = 3,
        .bCsDischarge = true,
        .bLpmControl = false,
        .ui8InputSyncControl = 0,
        .bTimerSyncControl = false,
        .bIdleState = true,
        // Tuning  Parameters
        .ui16ProxThreshold = 10,
        .ui16NegativeTouchThreshold = 20,
        .ui16ErrorThreshold = 8191,
        .ui16TimeoutThreshold = 1000,
        .ProxDbThreshold.DbIn = 1,
        .ProxDbThreshold.DbOut = 0,
        .TouchDbThreshold.DbIn = 1,
        .TouchDbThreshold.DbOut = 0,
        .bCountFilterEnable = true,
        .ui8CntBeta = 1,
        .bSensorHalt = false,
        .bPTSensorHalt = true,
        .bPTElementHalt = true,
        .ui8LTABeta = 7,
        .bReCalibrateEnable = true,
    };
    
    //Sensor: Trackpad
    const tCycle* Trackpad_Cycles[10] =
    {
        &Trackpad_C00,
        &Trackpad_C01,
        &Trackpad_C02,
        &Trackpad_C03,
        &Trackpad_C04,
        &Trackpad_C05,
        &Trackpad_C06,
        &Trackpad_C07,
        &Trackpad_C08,
        &Trackpad_C09,
    };
    
    tElement* Trackpad_Elements[5][5] =
    {
        { &Trackpad_E00, &Trackpad_E01, &Trackpad_E02, &Trackpad_E03, &Trackpad_E04, },
        { &Trackpad_E05, &Trackpad_E06, &Trackpad_E07, &Trackpad_E08, &Trackpad_E09, },
        { &Trackpad_E10, &Trackpad_E11, &Trackpad_E12, &Trackpad_E13, &Trackpad_E14, },
        { &Trackpad_E15, &Trackpad_E16, &Trackpad_E17, &Trackpad_E18, &Trackpad_E19, },
        { &Trackpad_E20, &Trackpad_E21, &Trackpad_E22, &Trackpad_E23, &Trackpad_E24, },
    };
    
    uint16_t ui16TrackpadSumX[5];
    uint16_t ui16TrackpadSumY[5];
    tTrackPadSensorParams Trackpad_Params =
    {
        .pvProcessSensor = NULL,
        .pvProcessGesture = NULL,
        .bReseed = false,
        .ui8Gesture = 0xFF,
        .bPresentTouch = false,
        .ui8TotalColumns = 5,
        .ui8TotalRows = 5,
        .pMatrix = Trackpad_Elements[0],
        .pSumX = ui16TrackpadSumX,
        .pSumY = ui16TrackpadSumY,
        .ui16Resolution_X = 1000,
        .ui16Resolution_Y = 1000,
        .ui16LowerTrim_X = 0,
        .ui16UpperTrim_X = 1000,
        .ui16LowerTrim_Y = 0,
        .ui16UpperTrim_Y = 1000,
        .ui16TopSpeed = 150,
        .ui16BottomSpeed = 10,
        .ui8LowerBeta = 10,
        .ui8TrackPadSensorBeta = 80,
        .ui16TapTime_Min = 4,
        .ui16TapTime_Max = 16,
        .ui16SwipeTime_Max = 10,
        .ui16DoubleTapTime_Max = 10,
        .ui16TapHoldTime_Min = 40,
        .ui16SwipeDistance_Min = 10,
        .bTrackPadFilterType = eDynamic,
        .bTrackPadFilterEnable = true,
    };
    
    tSensor Trackpad =
    {
        // Basic Properties
        .TypeOfSensor = eTrackpad,
        .SensingMethod = eProjected,
        .DirectionOfInterest = eDOIUp,
        .pvCallback = NULL,
        .ui8NrOfCycles = 10,
        .pCycle = Trackpad_Cycles,
        .pSensorParams = (tGenericSensorParams*)&Trackpad_Params,
        // Conversion Control Parameters
        .ui16ConversionCount = 250,
        .ui16ConversionGain = 125,
        .ui8FreqDiv = 2,
        .ui8ChargeLength = 0,
        .ui8TransferLength = 0,
        .bModEnable = false,
        .ui8BiasControl = 3,
        .bCsDischarge = true,
        .bLpmControl = false,
        .ui8InputSyncControl = 0,
        .bTimerSyncControl = false,
        .bIdleState = true,
        // Tuning  Parameters
        .ui16ProxThreshold = 20,
        .ui16NegativeTouchThreshold = 20,
        .ui16ErrorThreshold = 8191,
        .ui16TimeoutThreshold = 65535,
        .ProxDbThreshold.DbIn = 1,
        .ProxDbThreshold.DbOut = 1,
        .TouchDbThreshold.DbIn = 1,
        .TouchDbThreshold.DbOut = 1,
        .bCountFilterEnable = true,
        .ui8CntBeta = 1,
        .bSensorHalt = false,
        .bPTSensorHalt = true,
        .bPTElementHalt = true,
        .ui8LTABeta = 7,
        .bReCalibrateEnable = true,
    };
    
    
    #if (CAPT_CONDUCTED_NOISE_IMMUNITY_ENABLE==true)
    //*****************************************************************************
    //
    //! \var g_EMCConfig
    //! This structure stores the EMC configuration for this application.
    //
    //*****************************************************************************
    const tEMCConfig g_EMCConfig =
    {
    	// Conversion Style
    	.selfModeConversionStyle = eMultiFrequency,
    	.projModeConversionStyle = eMultiFrequencyWithOutlierRemoval,
    	
    	// Oversampling Style
    	.selfModeOversamplingStyle = eNoOversampling,
    	.projModeOversamplingStyle = eNoOversampling,
    	
    	// Jitter Filter Enable
    	.bJitterFilterEnable = true,
    	
    	// Noise Thresholds and Calibration Noise Limits
    	.ui8NoiseThreshold = 20,
    	.ui16CalibrationNoiseLimit = 10,
    	.ui8CalibrationTestSampleSize = 8,
    		
    	// Dynamic Threshold Adjustment Parameters
    	.bEnableDynamicThresholdAdjustment = true,
    	.ui8MaxRelThreshAdj = 76,
    	.ui8NoiseLevelFilterEntryThresh = 40,
    	.ui8NoiseLevelFilterExitThresh = 0,
    	.ui8NoiseLevelFilterDown = 6,
    	.ui8NoiseLevelFilterUp = 1,
    	.coeffA = _IQ31(0.0065),
    	.coeffB = _IQ31(0.050)
    };
    #endif
    
    //*****************************************************************************
    //
    //! \var g_pCaptivateSensorArray
    //! This array allows for indexed access to any
    //! sensor in the configuration.
    //
    //*****************************************************************************
    tSensor* g_pCaptivateSensorArray[CAPT_SENSOR_COUNT] =
    {
        &Mode,
        &Trackpad,
    };
    
    
    //*****************************************************************************
    //
    //! \var g_uiApp
    //! This structure stores the global settings for this application.
    //
    //*****************************************************************************
    tCaptivateApplication g_uiApp =
    {
        .state = eUIActive,
    	.pSensorList = &g_pCaptivateSensorArray[0],
        .ui8NrOfSensors = CAPT_SENSOR_COUNT,
        .ui8AppLPM = LPM3_bits,
        .bElementDataTxEnable = true,
        .bSensorDataTxEnable = true,
        .ui16ActiveModeScanPeriod = 20,
        .ui16WakeOnProxModeScanPeriod = 100,
        .ui16InactivityTimeout = 32,
        .ui8WakeupInterval = 5,
    };
    

    I also noticed in your screen shot the 5 channels are running at 250 conversion count, yet your CAPT_UserConfig.c file shows TKP00.ui16ConversionCount = 500?

  • Hi Dennis,

    No problem. Yes, they are different, I did try changing the conversion count from the program shown in the screenshots to the config file sent in case that was affecting somehow. I have tested multiple new projects from scratch, in the configuration by default and changing configuration parameters and still no luck.

    I've been comparing both config files and apart from the Captivate version I don't see any significant variations. The time cycles are set the same and the element definition is the same as well, some variations I guess come from the version difference. Is there access somewhere to the v1.5 of Captivate, just to do a kick check on if it could be affecting it? I'm starting to run out of ideas, apart from that I was thinking about it maybe being a defect in the board itself. I have tested doing a project from scratch in another PC with ver. 18.3 with the same outcome.

  • Hi Javier,

    Captivate GUI 1.83.00.08 is the latest and does work for me.

    Ok, let's try a couple of things...

    In your CAPT_UserConfig.c, change the number of cycles on line 657 from 10 to 1 (.ui8NrOfCycles = 1).  In theory the GUI is only being sent the first cycle so you should only see 4 elements.  Touch the corresponding 4 elements on your trackpad to verify this is true.  

    Next on line 573, comment out TKP00_C00 and TKP00_C01, as shown below.  Change .ui8NrOfCycles = 2.  Try this and see first if _C02 and _C03 elements are displayed and in which position in the bars.

    //Sensor: TKP00
    const tCycle* TKP00_Cycles[10] =
    {
    //&TKP00_C00,
    //&TKP00_C01,
    &TKP00_C02,
    &TKP00_C03,
    &TKP00_C04,

  • Hi Javier,

    Captivate GUI 1.83.00.08 is the latest and does work for me.

    Ok, let's try a couple of things...

    In your CAPT_UserConfig.c, change the number of cycles on line 657 from 10 to 1 (.ui8NrOfCycles = 1).  In theory the GUI is only being sent the first cycle so you should only see 4 elements.  Touch the corresponding 4 elements on your trackpad to verify this is true.  

    Next on line 573, comment out TKP00_C00 and TKP00_C01, as shown below.  Change .ui8NrOfCycles = 2.  Try this and see first if _C02 and _C03 elements are displayed and in which position in the bars.

    //Sensor: TKP00
    const tCycle* TKP00_Cycles[10] =
    {
    //&TKP00_C00,
    //&TKP00_C01,
    &TKP00_C02,
    &TKP00_C03,
    &TKP00_C04,

    Also, do you have a Saleae logic probe?  I'm working on an extension that can decode the protocol being used to send data from the MSP430 and the GUI.  I can give you a copy to try and see what data is being sent.  Or, you can capture a couple of seconds worth of the data and send me your .sal file.  I can open it and scan for this issue.  Let me know.

**Attention** This is a public forum