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.

FDC2212: FDC2212 example code support

Part Number: FDC2212
Other Parts Discussed in Thread: TIDA-01409, MSP430G2553, FDC2214EVM

Dear Experts,

I tried to develop the code for  the FDC2212 and take tida-01409 example code for my reference.

Here, I want to have your kindly assistance:

1. In this example code, the sensor is using the single end design(channel 0) or two channel(channel 0&1)?

2. In the flow chart, it mentioned that the it also detect the key if exist or not, but i can't find it in the code.

Article name: Automotive Capacitive Kick-to-Open Reference Design, Section 3.1.2(page.13)

/*** USCI master library ************************************************************

In this file the usage of the USCI I2C master library without DMA support is 
shown. This library uses pointers to specify what data is to be sent. 

When calling the TI_USCI_I2C_receive or TI_USCI_I2C_transmit routines 
the number of bytes, which are to be transmitted or received have to be passed as 
well as a pointer to a data field, that contains(or stores) the data.

This code checks if there is a slave with address 0x50 is connected to the I2C
bus and if the slave device is present, bytes are received and transmitted.

Uli Kretzschmar
MSP430 Systems
Freising

Added FDC2212-Q1 code for TIDA-01409 Capacitive Kick-to-Open Reference Design
 
*******************************************************************************/
#include "msp430g2553.h"
#include "TI_USCI_I2C_master.h"

#define DATA_CH0_MSB_REG 0x00
#define DATA_CH0_LSB_REG 0x01
#define DATA_CH1_MSB_REG 0x02
#define DATA_CH1_LSB_REG 0x03
#define ISPEED 0x55
#define MARGIN 500


unsigned char timercounter;
unsigned char array[3] = {0x00, 0x00, 0x00 };
unsigned char store[10] = { 0xff, 0xff };
unsigned char LSB_Channel_0[2] = { 0x0, 0x0};
unsigned char MSB_Channel_0[2] = { 0x0, 0x1};
unsigned char LSB_Channel_1[2] = { 0x0, 0x2};
unsigned char MSB_Channel_1[2] = { 0x0, 0x3};
unsigned char MUX_CNFG[2] = {'M','C'};
unsigned char RCOUNT_0[2] = {'R','0'};
unsigned char RCOUNT_1[2] = {'R','1'};
unsigned char SCOUNT_0[2] = {'S','0'};
unsigned char SCOUNT_1[2] = {'S','0'};
unsigned char IDRIVE_0[3] = {0x1E,0x60,0x00};
unsigned char IDRIVE_1[3] = {0x1F,0x60,0x00};
unsigned char CK_DIV_0[2] = {'C','D'};
unsigned char CK_DIV_1[2] = {'c','d'};
unsigned char ERR_CNFG[2] = {'E','C'};
unsigned char CONFIG[2]   = {'C','F'};
unsigned short DataChannel_0_MSB ;
unsigned short DataChannel_0_LSB ;
unsigned long  DataChannel_0 ;
unsigned short DataChannel_1_MSB ;
unsigned short DataChannel_1_LSB ;
unsigned long  DataChannel_1 ;
unsigned long Measurement1;
unsigned long Measurement2;
unsigned long Measurement3;



void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WatchDogTimer

  // Set up the GPIO pins for the TIDA-01409 board

  P1DIR |= BIT1;                            // P1.1 is an output (unused pin)
  P1DIR |= BIT2;                            // P1.2 is an output (ADDR)
  P1DIR |= BIT4;                            // P1.4 is an output (Shutdown)
  P1OUT &= ~0x10;                           // Set P1.4 low so Shutdown is LOW
  P1OUT &= ~BIT2;                           // Set P1.2 low so ADDR is LOW and FDC2212 address is 0x2a
//  P1OUT |= BIT2;                            // Set P1.2 high so ADDR is HIGH and FDC2212 address is 0x2b
  P2DIR |= BIT1;                            // Set P2.1 as an output
  P2DIR |= BIT2;                            // Set P2.2 as an output
  P2DIR |= BIT5;                            // Set P2.5 as an output
  P2OUT |= BIT5;                            // Set P2.5 high to pull up SDA and SCL

  BCSCTL1 = CALBC1_8MHZ;                    //
  DCOCTL = CALDCO_8MHZ;                     //

  _EINT();                                  // Enable interrupts


  //      if ( TI_USCI_I2C_slave_present(0x2a) ) ;
  //
  //    Prepare to write to the FDC2212-Q1 registers
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);  // init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz


  //    Write to the RCOUNT registers for Channel 0 and Channel 1
  array[0] = 0x08;  array[1]=0x12;    array[2]= 0x34;     // RCOUNT = ffff
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array

  array[0] = 0x09;                      // register address for RCOUNT_CH1
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array, consisting of the register address plus two data bytes


  //    Write to the ERROR_CONFIG register
  array[0] = 0x19;  array[1]=0x30;    array[2]= 0x00;     // disable all the error reports
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array


  //    Write to the SETTLECOUNT registers
  array[0] = 0x10;  array[1]=0x04;    array[2]= 0x00;     // SETTLECOUNT = 0400
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array

  array[0] = 0x11;                      // register address for SETTLECOUNT_CH1
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array (register address plus two data bytes)


  //    Write to the CLOCK_DIVIDERS registers
  array[0] = 0x14;  array[1]=0x10;    array[2]= 0x01;     // CLOCK_DIVIDERS FIN_SEL=2, FREF_DIVIDER=1
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array

  array[0] = 0x15;                      // register address for CLOCK_DIVIDERS_CH1
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array (register address plus two data bytes)


  //    Write to the DRIVE_CURRENT registers
  array[0] = 0x1E;  array[1]=0x88;    array[2]= 0x00;     // see current drive table p.36 of FDC2212-Q1 datasheet
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,IDRIVE_0);     // transmit the first three bytes from array

  array[0] = 0x1F;                      // register address for DRIVE_CURRENT_CH1
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,IDRIVE_1);     // transmit the first three bytes from array (register address plus two data bytes)


  //    Write to the MUX_CONFIG register
  array[0] = 0x1B;  array[1]=0x02;    array[2]= 0x0D;     // see p.35 of FDC2212-Q1 datasheet
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,IDRIVE_1);        // transmit the first three bytes from array


  //    Write to the CONFIG register    // Last of the set-up write commands
  array[0] = 0x1A;  array[1]=0x5e;    array[2]= 0x01;     // see p.34 of FDC2212-Q1 datasheet
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array


  // Read the CONFIG_MUX register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x1b;                      // register for Device ID
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,MUX_CNFG);      // receive 2 bytes from slave


  // Read the RCOUNT_0 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x08;                      // register for Device ID
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);    // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,RCOUNT_0);     // receive 2 bytes from slave


  // Read the RCOUNT_1 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x09;                      // register for Device ID
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,RCOUNT_1);     // receive 2 bytes from slave


  // Read the SCOUNT_0 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x10;                      // register for Device ID
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);    // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,SCOUNT_0);     // receive 2 bytes from slave


  // Read the SCOUNT_1 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x11;                      // register for Device ID
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);    // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,SCOUNT_1);     // receive 2 bytes from slave


  // Read the IDRIVE_0 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x1E;                      // register for Device ID
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,&IDRIVE_0[1]);      // receive 2 bytes from slave


  // Read the IDRIVE_1 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x1F;                      // register for Device ID
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,&IDRIVE_1[1]);      // receive 2 bytes from slave


  // Read the CLOCK_DIVIDERS_CH0 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x14;                      // register for CLOCK_DIVIDERS_CH0
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,CK_DIV_0);      // receive 2 bytes from slave


  // Read the CLOCK_DIVIDERS_CH1 register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x15;                      // register for CLOCK_DIVIDERS_CH0
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,CK_DIV_1);      // receive 2 bytes from slave


  // Read the ERROR_CONFIG register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x19;                      // register for ERROR_CONFIG
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,ERR_CNFG);      // receive 2 bytes from slave


  // Read the CONFIG register
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
  array[0] = 0x1a;                      // register for CONFIG
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
  while ( TI_USCI_I2C_notready() );     // wait for bus to be free
  TI_USCI_I2C_receive(2,CONFIG);        // receive 2 bytes from slave

                                          // begin the looping
  for(;;){
/*
      // Read the device ID - should be 0x3055 (0U)
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);  // init transmitting to slave
      array[0] = 0x7f;                      // register for Device ID
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED);   // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,&store[2]);         // receive 2 bytes from slave


      // Read the Manufacture ID - should be 0x5449 (TI)
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);  // init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x7e;                      // register for Manufacturer ID
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED);   // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,&store[4]);         // receive 2 bytes from slave


      //    Write to the CONFIG register    // continuously read Channel 0
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
      array[0] = 0x1A;  array[1]=0x1e;    array[2]= 0x01;     // see p.34 of FDC2212-Q1 datasheet
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array

      // Read the CONFIG register
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
      array[0] = 0x1a;                      // register for CONFIG
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,CONFIG);        // receive 2 bytes from slave


      // Read the MSB of Channel 0 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);  // init transmitting to slave 2a
      array[0] = 0x00;                      // register for DATA_CH0    MSB of channel 0 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED);   // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,MSB_Channel_0); // receive 2 bytes from FDC
      DataChannel_0_MSB = MSB_Channel_0[0] * 256 + MSB_Channel_0[1];

      // Read the LSB of Channel 0 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
      array[0] = 0x01;                      // register for DATA_CH0_LSB    LSB of channel 0 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,LSB_Channel_0); // receive 2 bytes from FDC
      DataChannel_0_LSB = LSB_Channel_0[0] * 256 + LSB_Channel_0[1];

      __delay_cycles(1000);

      //    Write to the CONFIG register    // continuously read Channel 1
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
      array[0] = 0x1A;  array[1]=0x5e;    array[2]= 0x01;     // see p.34 of FDC2212-Q1 datasheet
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(3,array);        // transmit the first three bytes from array

      // Read the CONFIG register
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a
      array[0] = 0x1a;                      // register for CONFIG
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,CONFIG);        // receive 2 bytes from slave
*/
      // Measurement 1 ************
      P2OUT &= ~BIT1;                       // Turn off the Green LED
      P2OUT |= BIT2;                        // Turn on the RED LED
      __delay_cycles(10000000);

      // Read the MSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x02;                      // register for DATA_CH1    MSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,MSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_MSB = MSB_Channel_1[0] * 256 + MSB_Channel_1[1];

      // Read the LSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x03;                      // register for DATA_CH1_LSB    LSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,LSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_LSB = LSB_Channel_1[0] * 256 + LSB_Channel_1[1];

      DataChannel_0 = DataChannel_0_MSB * 65536 + DataChannel_0_LSB ;
//      DataChannel_1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;
      Measurement1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;

      // Read the MSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x02;                      // register for DATA_CH1    MSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,MSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_MSB = MSB_Channel_1[0] * 256 + MSB_Channel_1[1];

      // Read the LSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x03;                      // register for DATA_CH1_LSB    LSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,LSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_LSB = LSB_Channel_1[0] * 256 + LSB_Channel_1[1];

      DataChannel_0 = DataChannel_0_MSB * 65536 + DataChannel_0_LSB ;
//      DataChannel_1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;
      Measurement1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;

      // Measurement 2 ************
      P2OUT &= ~BIT2;                       // Turn off the Red LED
      __delay_cycles(10000000);
      P2OUT |= BIT1;                        // Turn on the Green LED
      __delay_cycles(10000000);

      // Read the MSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x02;                      // register for DATA_CH0    MSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,MSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_MSB = MSB_Channel_1[0] * 256 + MSB_Channel_1[1];

      // Read the LSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x03;                      // register for DATA_CH0_LSB    LSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,LSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_LSB = LSB_Channel_1[0] * 256 + LSB_Channel_1[1];

      DataChannel_0 = DataChannel_0_MSB * 65536 + DataChannel_0_LSB ;
      DataChannel_1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;
      Measurement2 = DataChannel_1;
      // Read the MSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x02;                      // register for DATA_CH0    MSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,MSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_MSB = MSB_Channel_1[0] * 256 + MSB_Channel_1[1];

      // Read the LSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x03;                      // register for DATA_CH0_LSB    LSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,LSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_LSB = LSB_Channel_1[0] * 256 + LSB_Channel_1[1];

      DataChannel_0 = DataChannel_0_MSB * 65536 + DataChannel_0_LSB ;
      DataChannel_1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;
      Measurement2 = DataChannel_1;
      P2OUT &= ~BIT1;
      P2OUT &= ~BIT2;
      __delay_cycles(10000000);


      // Measurement 3 ************
      P2OUT |= BIT1;                        // Turn on the Green LED
      P2OUT |= BIT2;                        // Turn on the RED LED
      __delay_cycles(10000000);

      // Read the MSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x02;                      // register for DATA_CH0    MSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,MSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_MSB = MSB_Channel_1[0] * 256 + MSB_Channel_1[1];

      // Read the LSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x03;                      // register for DATA_CH0_LSB    LSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,&array[0]);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,&LSB_Channel_1[0]); // receive 2 bytes from FDC
      DataChannel_1_LSB = LSB_Channel_1[0] * 256 + LSB_Channel_1[1];

      DataChannel_0 = DataChannel_0_MSB * 65536 + DataChannel_0_LSB ;
      DataChannel_1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;
      Measurement3 = DataChannel_1;
      P2OUT |= BIT1;                        // Turn on the Green LED
      P2OUT |= BIT2;                        // Turn on the RED LED
//      __delay_cycles(10000000);

      // Read the MSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x02;                      // register for DATA_CH0    MSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,array);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,MSB_Channel_1); // receive 2 bytes from FDC
      DataChannel_1_MSB = MSB_Channel_1[0] * 256 + MSB_Channel_1[1];

      // Read the LSB of Channel 1 Data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmitinit(0x2a,ISPEED);// init transmitting to slave 2a with baud rate SMCLK / 3f (3f = 63) that is, 8 MHz / 63 = 126 kHz
      array[0] = 0x03;                      // register for DATA_CH0_LSB    LSB of channel 1 data
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_transmit(1,&array[0]);        // transmit the first byte from array

      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receiveinit(0x2a,ISPEED); // init receiving with USCI
      while ( TI_USCI_I2C_notready() );     // wait for bus to be free
      TI_USCI_I2C_receive(2,&LSB_Channel_1[0]); // receive 2 bytes from FDC
      DataChannel_1_LSB = LSB_Channel_1[0] * 256 + LSB_Channel_1[1];

      DataChannel_0 = DataChannel_0_MSB * 65536 + DataChannel_0_LSB ;
      DataChannel_1 = DataChannel_1_MSB * 65536 + DataChannel_1_LSB ;
      Measurement3 = DataChannel_1;

      P2OUT &= ~BIT1;                           // turn off Green LED
      P2OUT &= ~BIT2;                           // turn off Red LED

      __delay_cycles(5000000);

      if((Measurement1 > (Measurement2 + MARGIN)) && (Measurement3 > (Measurement2 + MARGIN))){
          P2OUT |= BIT1;
          __delay_cycles(2000000);
          P2OUT &= ~BIT1;
          __delay_cycles(2000000);
          P2OUT |= BIT1;
          __delay_cycles(2000000);
          P2OUT &= ~BIT1;
          __delay_cycles(2000000);
          P2OUT |= BIT1;
          __delay_cycles(2000000);
          P2OUT &= ~BIT1;
          __delay_cycles(2000000);
          P2OUT |= BIT1;
          __delay_cycles(2000000);
          P2OUT &= ~BIT1;
          __delay_cycles(2000000);
      }
      else{
          P2OUT |= BIT2;
          __delay_cycles(2000000);
          P2OUT &= ~BIT2;
          __delay_cycles(2000000);
          P2OUT |= BIT2;
          __delay_cycles(2000000);
          P2OUT &= ~BIT2;
          __delay_cycles(2000000);
          P2OUT |= BIT2;
          __delay_cycles(2000000);
          P2OUT &= ~BIT2;
          __delay_cycles(2000000);
          P2OUT |= BIT2;
          __delay_cycles(2000000);
          P2OUT &= ~BIT2;
          __delay_cycles(2000000);
      }                                         // end of if-else loop

      __delay_cycles(3000000);

    }                                           // end of for loop
  
 LPM3;                                          // low power mode 3

}

tidud21.pdf

3. In the code, i think there have 3 measurements and take 3 results as the determine the gesture or not, but it can't find it in the article, may i have some help to know why this design?

Thanks for your kindly help,

Best regards,

Lin

  • Hi Lin,

    Thank you for posting.

    user6529956 said:

    1. In this example code, the sensor is using the single end design(channel 0) or two channel(channel 0&1)?

    TIDA-01409 uses a single-ended sensor configuration.

    user6529956 said:

    2. In the flow chart, it mentioned that the it also detect the key if exist or not, but i can't find it in the code.

    The sample code checks to see if there is a controller (key) with address 0x50 connected to the IC bus. If the controller device is present, bytes are then received and transmitted. This statement can be seen in line 84.

    user6529956 said:

    3. In the code, i think there have 3 measurements and take 3 results as the determine the gesture or not, but it can't find it in the article, may i have some help to know why this design?

    It is my understanding that the sample code uses all 3 measurements and compares them against each other to ensure accurate detection of the gesture (see line 594). 

    Best regards,

    Nicole

  • Thanks for Nicole reply,

    1. TIDA-01409 uses a single-ended sensor configuration. => May i know what's difference with the two sensor ended configuration? Is it possible to apply in the commercial market? May you please share your experience for us?

    2.  The sample code checks to see if there is a controller (key) with address 0x50 connected to the I2­C bus. If the controller device is present, bytes are then received and transmitted. This statement can be seen in line 84. 

     In my code line 84 is  //      if ( TI_USCI_I2C_slave_present(0x2a) ); -> it looks like the commented, so we don't apply it in the example code or i got the wrong example code?

    3. It is my understanding that the sample code uses all 3 measurements and compares them against each other to ensure accurate detection of the gesture (see line 594).  => Agree with you, i am also confusing about why it measure two times in the every measurement(measurement 1&2&3) and why the margin value was set to the 500? Is it accountable or test via real case?

    Best regards,

    Lin

  • Hi Lin,

    In a single-ended configuration a conductive plate is connected to IN0. In a two sensor, or differential sensor configuration, one conductive plate is connected to IN0 and the second conductive plate is connected to IN0B.

    The differential sensor configuration performs better in systems that require high sensitivity at close proximity. This information, as well as corresponding figures, can be found in section 10.1.1 of the FDC2212 datasheet.

    However, I am not very familiar with the construction of the TIDA-01409 sample code. I will reach out internally to get more information regarding this sample code, and I will hopefully have more details by this Tuesday.

    Thank you for your patience.

    Best regards,

    Nicole

  • Hi Lin,

    I was able to get further clarification on the sample code. Regarding your previous questions:

    • You have the correct sample code, however, line 84 was commented out for functional testing. It can be un-commented for practical testing purposes, when it is necessary to detect the presence of a key.
    • The data register is read twice to make sure that the device has updated. This was found to be the solution in order to correctly read the output buffer.

    Best regards,

    Nicole

  • Dear Nicole,

    Appreciate for your clear explanation.

    1. May i  know if the TIDA-01409 can only apply with the external power supply or also using the USB will also work?

    2. According to "TIDA-01409 bare bones demo", LED sequence is as follows:

     First samples are recorded when only the red LED is illuminated.

     Second samples are recorded when only the green LED is illuminated.

     Third samples are recorded when both red and green LEDs are illuminated.

     After the third batch of samples are recorded, the decision is indicated by: o Blinking red LED indicates second sample was not closer than first and third samples o Blinking green LED indicates second sample was closer than first and third samples (valid gesture)

    ++ May i know the green and red led should be in the evaluation board  LED1(Port1.0) and LED2(Port1.6) ?

    => But in the code line 589, 590, the code is match with the LED1&2?

    P2OUT &= ~BIT1; // turn off Green LED
    P2OUT &= ~BIT2; // turn off Red LED

    Best regards,

    Lin

  • Hi Lin,

    user6529956 said:

    1. May i  know if the TIDA-01409 can only apply with the external power supply or also using the USB will also work?

    You will need to use an external power supply with TIDA-01409. The operational power supply voltage range is 4 to 16 V. More information can be found in section 3.2.1.2 (page 17) of the TIDA-01409 user guide. 

    Additionally, the red and green LEDs are labelled as LED1 and LED2 on the MSP430G2553 LaunchPad, respectively. P2.1 corresponds to the green LED and P2.2 corresponds to the red LED.

    Best regards,

    Nicole

  • Hi Nicole,

    Thanks again for your promptly reply.

    I am a little confused about  the MSP430G2553 launchpad which I only have this(MSP-EXP430G2).

    May you please guide me what is the difference between this two? And  if I need to apply in the TIDA-01409, what should I modified to fit it?

    Thanks again,

    Best regards,

    Lin

  • Hi Lin,

    My apologies for any confusion. It is the same board, the MSP-EXP430G2 is the product name for the MSP430G2553 LaunchPad that is used in TIDA-01409. 

    Best regards,

    Nicole

  • Hi Nicole,

    Thanks for your update, it's clear for me.

    I want to have your help to know more detail about the PIN definition in TIDA-01409.

    (1) According to your answer from previous one,

    Additionally, the red and green LEDs are labelled as LED1 and LED2 on the MSP430G2553 LaunchPad, respectively. P2.1 corresponds to the green LED and P2.2 corresponds to the red LED

    => I can understand the code meaning, but is it match with your EXP430G2?

    In my version, P1.0 is the Led1, P1.6 is the Led2. In your version, the Led1 on P2.1,Led2 on P2.2?

    (2) what's the pin definition for the I2C for SDA and SCL in the TIDA-01409?

    According to the page11 of  tidud21.pdf, the SDA and SCL should be connect to the J3 and it should connect to the MSP430 P1.6 and P1.7.

    But i did not find P1.6 and P1.7 in the example code, but it define the P2.5 as pull high in the Pin3 of J3.

    Is it the match between the example code with the circuit pin definition, is this example code can really work? or just only show the basic function?

    (3) If there there have the delta, may you please guild me how to modified the code?

    Thanks and wish you have a good day. 

    Best regards,

    Lin

    6864.tidud21.pdftidud21.pdf

  • Hi Lin,

    I am not very familiar with the code structure for TIDA-01409. If you are encountering issues involving the red and green LEDs, it is possible that they should be defined according to the pins that you have on your board.

    You are correct that the TIDA-01409 user guide states that SCL is connected on pin J3-4 and SDA is connected on J3-5, corresponding to P1.6 and P1.7. This should be the same as it is in the sample code. If it is different in the code, you will need to change the pin definitions to match the hardware and the TIDA-01409 user guide.

    Best regards,

    Nicole

  • Hi Nicole,

    I think my question just very simple, you said that i have the correct the sample code and correct the development board(EXP430G2).

    Why the example code which not match with the development board?

    Because i have the TIDA-01409 and EXP430G2 at my hand, i wan to demo to my boss and want to convince him to apply this FDC.

    Therefore, i need your help to finish the presentation and apply it in the next new vehicle publish this March. 

    From you:

    Additionally, the red and green LEDs are labelled as LED1 and LED2 on the MSP430G2553 LaunchPad, respectively. P2.1 corresponds to the green LED and P2.2 corresponds to the red LED.

    => I know the example using the P2.1 and P2.2 as the indicator, so should i modified to P1.0 and P1.6 if my LED in the EXP430G2?

    (2) what's the pin definition for the I2C for SDA and SCL in the TIDA-01409?

    According to the page11 of  tidud21.pdf, the SDA and SCL should be connect to the J3 and it should connect to the MSP430 P1.6 and P1.7.

    But i did not find P1.6 and P1.7 in the example code, but it define the P2.5 as pull high in the Pin3 of J3.

    => May you please show me how to define the pin if we need to apply the i2C?

    Thanks for your help,

    Best regards,

    Lin

  • Hi Lin,

    I am not familiar with the development of the sample code and cannot speak as to why it may differ from the hardware pins. Please modify the sample code to match the correct LED pins on your board (P1.0 and P1.6 as you mentioned). 

    To enable I2C communication, J3-3 needs to be set to a logic high. This corresponds to P2.5 on the microcontroller. In line 76 of the sample code, P2.5 is set high to enable I2C communication. This is correct and does not need to be modified, because setting P2.5 high will enable I2C communication.

    Best regards,

    Nicole

  • Hi Nicole,

    May i know who should be familiar with the example code and may i have the support?

    If i follow the example code and TIDA-01409, most of the pin not match.

    I don't believe this is the TIDA-01409 example code.

    May you please help to get the correct code for matching the TIDA-01409?

    Thanks,

    Best regards,

    Lin  

  • Hi Lin,

    You have the correct sample code for TIDA-01409. However, the design and code are provided only as a reference for development, and the fully assembled board is not available for order. If it is found during testing that changes need to be made to either the hardware or software, it will be the responsibility of the developer.

    Best regards,

    Nicole

  • Hi Nicole,

    I followed the BOM and schematic to have the same TIDA-014109 assembled board here.

    That's why i have some many question.

    And i really need your help to have the FAE to support me.

    Do you know how can i get the support?

    Best regards,

    Lin

  • Hi Lin,

    I am working with local FAE support, and they should be reaching out to you next week. In the meantime, you can reach out to your local TI representative and they should be able to connect you directly to local contact.

    Best regards,

    Nicole

  • Hello Nicole,

    Thanks for this arrangement, i really need the help.

    May i know if there have any contact number to proactively to contact them?

    Beside, "FDC2212 PIn6" Shutdown Input which normal working at the "LOW" or "HIGH"?

    In the example code, the PIN6 set to the low from the beginning.

    Thanks for your kindly help!

    Best regards,

    Lin

  • Hello Lin,

    The code provided is an example code and our original authors for the code are not in TI anymore. The code provided is an example and is as is.
    To reach out to your sales account from TI please have your local TI contact be contacted and here are some additional resources to help you here

    Apart from the sample code, you also need the firmware. The zipped file does not provide any firmware you would have to generate the firmware. This also needs to considered. 

    As I see this process is a bit of inconvenience and I notice that you need to do a demo and the software is a gating item have you considered using the FDC2212 EVM The EVM does come with a GUI that has capability to tweak the registers ? Would this help ?

    The other suggestion I have is that, since the request is for software and code modification using code composer studio.. Would you consider reaching out to the MSP microcontroller forum to get some guidance on the software implementation ?

    How would you like to proceed here...

  • Hello Arjun,

    Thanks for your reply.

    The code provided is an example code and our original authors for the code are not in TI anymore. The code provided is an example and is as is.
    To reach out to your sales account from TI please have your local TI contact be contacted and here are some additional resources to help you here.

    => If there have the direct phone number for me as the reference?

    Apart from the sample code, you also need the firmware. The zipped file does not provide any firmware you would have to generate the firmware. This also needs to considered. 

    => What do you mean that the firmware? I have the TIDA-01409 the board and the MSPG2 development board also the example code, what else should i have?

    As I see this process is a bit of inconvenience and I notice that you need to do a demo and the software is a gating item have you considered using the FDC2212 EVM The EVM does come with a GUI that has capability to tweak the registers ? Would this help ?

    =>Agree with you, if we have the EVM board, it will more efficiency. But i am curious about the if FDC2212 also can using the EVM board? 

    The other suggestion I have is that, since the request is for software and code modification using code composer studio.. Would you consider reaching out to the MSP microcontroller forum to get some guidance on the software implementation ?

    => so fat is fine for me to complier, but i am not sure if the code and hardware can fit or not..

    Best regards,

    Lin

  • Hi Lin,

    You will need to reach out to the TI representative that has been assigned to your company account. Unfortunately, a direct phone number cannot be linked on E2E. Additionally, a field applications engineer should be reaching out to you shortly.

    As Arjun mentioned, the TIDA is provided as a reference for design and does not include any firmware that may be required. It seems that a simpler option at this point may be the FDC2214EVM, which has a GUI which will allow for a quick demo.

    Best regards,

    Nicole

  • Hello Nicole,

    Appreciate for your fully support.

    But i am still struggling with TIDA-01419 solution.

    1. What's the correct the code for the TIDA-01419 which they show in the report?

    And i still need your fully support to know how to correctly to setup the parameter for the FDC2212.

    2. More the info for me, if my CJ5Z-14F680-F(motion sensor) only apply single wire, what should i connect to IN0A or IN0B(if channel 0 usage)?

    -> And If IN0A apply the sensor, what should i do for the IN0B(keep floating or should be connect to ground)?

    3. Need your kindly contact if the Christian Hemitscheck if can get more info about the code?

    Best regards,

    Lin

  • Hello Lin,

    It is my understanding that someone from the field has already reached out to you, and I believe it would be best to continue this dialogue via email. If necessary, please ask your field representative to set up a meeting so that we may resolve this issue as quickly as possible.

    Best regards,

    Nicole

  • Hello Nicole ,

    I am working on a project similar with kick to open.I found that document 

    TI Designs: TIDA-01409 Automotive Capacitive Kick-to-Open Reference Design.

    I want to use this board shematic and source code.

    We have our design custom board similar with TIDA-01409 and I am using it now.I can get values and make configuration with succesfully.

    I have struggled with Water effect.

    In this document it seems like handled.So I need the source code that shows me how it is done.

    I assembled the board on a plastic box.When I drop water on this box the values are changing like approaching human hand.This values changes only the dropping time.İf water stays there values are stable and sensor still detech proximity of human hand.

    But this water drip time effect make my sensor detect a human hand detection.

    I need the source code to get how to clear this effect.

    The source above does not include this algoritm.

    Can you guide me to handle this effect please.

    Regards.

    Emre OZDEMIR 

    Electronic Engineer.

  • Hello Emre,

    To make sure that your question is readily visible to others, please create a new post with any questions regarding this reference design.

    Best regards,

    Nicole