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.

how to install software tdc 7200 eval board(snac068e)

Other Parts Discussed in Thread: TDC7200, TDC7200EVM

i am unable to install software tdc 7200 eval board(snac068e). when i try to install this software i says how do you want open this file. 

please help me regarding this issue as soon as possible.

thanks

 

  • Deepika,


    I've moved this post to the Ultrasonic Sensing Forum. I believe that questions for the TDC7200 are now answered here.


    Joseph Wu
  • Deepika,

    My guess is there is some security control in your browser is stripping off the zip file extension. Please add ".zip" to the file name and open it.

    Thanks,
    Vishy
  • thanks for replying. i have installed software. 

    now my second problem is that i want to communicate tdc7200 evalution  board with arduino instead of your MSP430 Touch pad.i have made a c code on arduino software using spi interfacing. but i am unable tor read registers of tdc7200 it shows zero values in registers.

    plz help me to solve regarding this issuue. i am pasting my c code below.

      
    //Add the SPI library so we can communicate with the TDC7200 Device
    #include <SPI.h>
    
    //Assign the Chip Select signal to pin 10.
    const int CS=10;        //arduino pin (output)---------------cs----6(J2) TDC 7200 Eval Board pin
    //static const uint8_t  MOSI=11;     //arduino pin (output)---------------DIN----12(J2) TDC 7200 Eval Board pin
    //static const uint8_t  MISO=12;     //arduino pin (input)---------------DOUT----14(J2) TDC 7200 Eval Board pin
    //static const uint8_t SCK  = 13;    //arduino pin (output)---------------SCLK----13(J1) TDC 7200 Eval Board pin
    const int ENABLE=9;   //arduino pin (output)---------------ENABLE----3(J1) TDC 7200 Eval Board pin
    const int TRIG=8;     //arduino pin (input) ---------------TRIG----4(J2) TDC 7200 Eval Board pin
    const int INT=7;     //arduino pin (input)---------------INT----16(J2) TDC 7200 Eval Board pin
    const int reset_pin=6; //reset pin
    const int START=5;
    const int STOP_=4;
    const byte READ = 0b00000000;     // tdc7200's (auto increment=0+read=0) command
    const byte WRITE = 0b01000000;   // tdc7200's (auto increment=0+write=1) command
    long int CLOCKperiod = 8000000;
    float TOF;
    float calCount;
    unsigned int CALIBRATION2_PERIODS =2;
    char values;
    int CALIBRATION1_Data_Received;
    int CALIBRATION2_Data_Received;
    int TIME1;
    float norm_LSB;
    
    
    //---------------------------------ADDRESS ASSIGNMENT OF TDC 7200 REGISTERS-------------------------------------------------------------------------------------------------
    char CONFIG1_address = 0x00;           //Address of Configuration Register1
    char CONFIG2_address = 0x01;          //Address of Configuration Register2
    char INT_STATUS_address = 0x02;      //Address of INT_STATUS
    char INT_MASK_address = 0x03;       //Address of INT_MASK
    char TIME1_address = 0x10;         //Address of TIME1 Register
    char CALIBRATION1_address = 0x1B; //Address of CALIBRATION1 Register
    char CALIBRATION2_address = 0x1C; //Address of CALIBRATION2 Register
    //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    void setup()
    { 
      //Initiate an SPI communication instance.
      SPI.begin();
      //Configure the SPI connection for the ADXL345.
      SPI.setDataMode(SPI_MODE1);
      //Create a serial connection to display the data on the terminal.
      Serial.begin(115200);
      
      //Set up the Chip Select pin to be an output from the Arduino. --------------------OUTPUT SIGNALS FROM ARDUINO--------------------------------------------------------------------
      pinMode(CS, OUTPUT);
     // pinMode(MOSI, OUTPUT);
      //pinMode(SCK, OUTPUT);
      pinMode(reset_pin, OUTPUT);  
      pinMode(START, OUTPUT);
      pinMode(STOP, OUTPUT);
      pinMode(ENABLE, OUTPUT);  //-------------------------------------------------------------------------------------------------------------------------------------------------------
      
     // pinMode(MISO, INPUT); //----------------------------------------- INPUT SIGNALS TO ARDUINO ------------------------------------------------------------------------------------------
      pinMode(TRIG, INPUT);
      pinMode(INT, INPUT);  //----------------------------------------------------------------------------------------------------------------------------------------------------------
      
      //Before communication starts, the Chip Select pin needs to be set high.
      digitalWrite(CS, HIGH);
      digitalWrite(reset_pin,HIGH);
      digitalWrite(ENABLE,HIGH);
      
      //---------------------------------initial settings of registers-------------------------------------------------------------------------------------------------------------------
      //Put the Configuration Register1 in measurement mode1 with no effect on measurement
         writeRegister(CONFIG1_address, 0x00);
      //Put the Configuration Register2 in measuring 2 CLOCK periods, Measurement Cycle only, Single Stop
         writeRegister(CONFIG2_address, 0x00);  //Configuration Register2 settings
      //Put the Interrupt Status Register in Measurement has completed, Measurement has started (START signal received), Interrupt detected – New Measurement has been completed
         writeRegister(INT_STATUS_address, 0x19); //Interrupt Status Register settings
      //Put the Interrupt mask Register in New Measurement Interrupt enabled
          writeRegister(INT_MASK_address, 0x01); //Interrupt mask Register settings
          reset();
    }
    //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    //------------------------------------------------resetting tdc7200 device------------------------------------------------------------------------------------------------------------
    void reset()
    {
       digitalWrite(reset_pin,HIGH);
       digitalWrite(ENABLE,HIGH);
       writeRegister(CONFIG1_address, 0x00);
       writeRegister(CONFIG2_address, 0x00);
       writeRegister(INT_STATUS_address, 0x19);
       writeRegister(INT_MASK_address, 0x01);
      }
    //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    void loop()
    {
      digitalWrite(ENABLE,LOW); // 1. After powering up the device, the EN pin needs to be low
       //Put the Configuration Register1 in measurement mode1 with Start New Measurement. 
        writeRegister(CONFIG1_address, 0x01); // 3.  After the start new measurement bit START_MEAS has been set in the CONFIG1 register
        
        if (digitalRead (TRIG)==HIGH) //TDC7200generates a trigger signal on the TRIGG pin
        {
           digitalWrite(START,HIGH); //the TDC7200 enables the START pin and waits to receive the START pulse edge.
           digitalWrite(START,LOW);
           }
            if (digitalRead(INT)==LOW)  //TDC will signal to the MCU via interrupt (INTB pin) that there are new measurement results waiting in the registers.
             {
                 CALIBRATION1_Data_Received = readRegister(0x1B, 3);
                 CALIBRATION2_Data_Received = readRegister(0x1C, 3 );
                   TIME1= readRegister(0x10, 3);
               //Print the results to the terminal. 
               Serial.println(CALIBRATION1_Data_Received, DEC);
               Serial.println(CALIBRATION1_Data_Received, DEC);
               Serial.println(CALIBRATION2_Data_Received, DEC);
               Serial.println(TIME1, DEC);
             }
    //------------------------------------------------------------time of flight (TOF)calculation of tdc7200-------------------------------------------------------------------------------------  
      calCount = (CALIBRATION2_Data_Received-CALIBRATION1_Data_Received)/(CALIBRATION2_PERIODS -1);
      norm_LSB = 1/(CLOCKperiod*calCount);
      TOF =  (TIME1)*(norm_LSB);
      
       Serial.println(calCount);
       Serial.println(norm_LSB);
       Serial.println(TOF);
      } 
    //------------------------------------------------Read from  registers of tdc7200---------------------------------------------------------------------------------------------------------
    unsigned int readRegister(byte thisRegister, int bytesToRead)
    {
      byte inByte = 0;           // incoming byte from the SPI
      unsigned int result = 0;   // result to return
      
      // tdc7200 expects the register name in the upper 6 bits of the byte. So shift the bits left by two bits:
     // thisRegister = thisRegister << 2;
      // now combine the address and the command  byte (auto increment bit and Read=0)into one byte
      byte dataToSend = thisRegister | READ;
      // take the chip select low to select the device:
      digitalWrite(CS, LOW);
      // send the device the register you want to read:
      SPI.transfer(dataToSend);
      // send a value of 0 to read the first byte returned:
      result = SPI.transfer(0x00);
      // decrement the number of bytes left to read:
      bytesToRead--;
      // if you still have another byte to read:
      if (bytesToRead > 0) {
        // shift the first byte left, then get the second byte:
        result = result << 8;
        inByte = SPI.transfer(0x00);
        // combine the byte you just got with the previous one:
        result = result | inByte;
        // decrement the number of bytes left to read:
        bytesToRead--;
      }
      // take the chip select high to de-select:
      digitalWrite(CS, HIGH);
      // return the result:
      return (result);
    }
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    //--------------------------------------------This function will write a value to a register on the tdc7200 device--------------------------------------------------------
    
    void writeRegister(byte thisRegister, byte thisValue) 
    {
    
      //tdc7200 expects the register address in the upper 6 bits
      // of the byte. So shift the bits left by two bits:
     // thisRegister = thisRegister << 2;
      // now combine the register address and the command byte (auto increment bit and write=1)into one byte:
      byte dataToSend = thisRegister | WRITE;
      // take the chip select low to select the device:
      digitalWrite(CS, LOW);
      SPI.transfer(dataToSend); //Send register location
      SPI.transfer(thisValue);  //Send value to record into register
      // take the chip select high to de-select:
      digitalWrite(CS, HIGH);
    }
    //----------------------------------------------------------------------------------------------------------------------------------------------------------------------
    

    MSP430

  • Please probe the SPI bus and check if the Chip Select, Clock, Data In and Data Out signals are happening. Is the CS going down? Do you see the clock from MCU happening? Do you see the address written correctly? Please attach a scope shot.

    Check all the connections between Arduino and TDC7200EVM. Make sure power is there. Also, check if the TDC7200EVM 8MHz clock is happening. What's the supply voltage for Arduino? TDC7200 cannot take 5V signals.
    Thanks,
    Vishy
  • thanks for replying me. i will send you snap shot soon. i am giving tdc7200 eval board 3.3 V from arduino. 

    now today i am trying to connect your MSP430 launch padwith tdc7200 eval board. but com port is not detecting. iam sending you a snap shot of this.MSP430 snap shot.docx

  • Please check this user guid

    www.ti.com/.../snau177

    Section 5 explains installing the GUI , uploading firmware to the launch pad, and checking the connection.

    Thanks,
    Vishy
  • hi Vishy,

                  can you tell me if i am measuring time between start to multiple stop pulses. if after coming my first stop pulse if there comes returns spurious pulse in between second stop pulse. tell me how i will know this is spurious pulse and how to remove this spurious pulse. and how will i get output signals after start and stop pulses. please reply as soon as possible.

  • TDC7200 has a feature to blank or ignore stop pulses for a defined period using CLOCK_CNTR_STOP_MASK_H/L registers. In this case, TDC7200 will start looking for STOP pulses after this defined period. This period is applied after START is received so TDC7200 will ignore any STOP pulses occurring from START to the expiration of this period. It cannot be used for in-between STOP pulses.

    Thanks,
    vishy
  • thanks for replying me. i have already posted my arduino spi code. i am able to write registers using spi from arduino to tdc 7200. and viewed these signals on scopes. but i am unable to read spi registers. it sends only zero. plz help me how to read spi registers. 

    thanks

  • Please check the MSP430 sample code released with the TDC7200EVM GUI. You can find the TDC7200EVM firmware source code in the following folder

    C:\Program Files (x86)\Texas Instruments\TDC720xEVM\Firmware

    For use with launchpad you can get TI CCS toolset free and launchpad has built-in JTAG so you can download and debug through the USB port itself. The zip file has project files for CCS as well as IAR. You will find a basic spi read/write project that illustrates TDC7200 register read/write from MSP430.

    You can see some general getting started tips here

    e2e.ti.com/.../520659

    Thanks.
  • I had used the same code but when i unmask MOSI and MISO i'm getting an error which shows redefinition error and also while i let the program dump on to my arduino board and run it i'm able to see the output with an unknown script on serial monitor.Would you please help me out to resolve my problem

  • Hi sir i want to use this code for Arduino uno with acam GP22 TDC can you tell me what all to be modified
  • I am trying to use the GP22 Time to Digital coverter . In can anyone tell how this code works means will it send any signal to TDC to start the counter ,Stop.  How to send a signal to laser and TDC to start the pulse using this code please help me 

    I want to implement this can anyone say how to use this code