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.

TDC7200: tdc7200

Part Number: TDC7200
Other Parts Discussed in Thread: TDC7201, TDC7201-ZAX-EVM

Hi, 

I have the same/similar issue in my custom design (TDC7201) based off the TDC7201-ZAX-EVM module. I can read and write registers just fine, and the TDCx_INT_STATUS to becomes 0x19 after sending a signal (0b00011001 i.e. Measurement has completed, Measurement has started, No overflow detected (CLOCK_CNTR_OVF_INT), No overflow detected (COARSE_CNTR_OVF_INT) , and Interrupt detected - New Measurement has been completed (NEW_MEAS_INT). My printed readout is as follows. 

Set OSC_ENABLE as Digital Output
Set OSC_ENABLE to high to enable TDC Clock
Set TDC_ENABLE as Digital Output
Ensure TDC_ENABLE is low until ready to enable TDC chip
Set CS lines as high outputs
Ensured CS lines are not enabled
Set TDC_ENABLE to high to enable TDC Chip
SPI Bus Opened
Data at TDC1_CALIBRATION1 location 0x1B is 000000
Data at TDC2_CALIBRATION1 location 0x1B is 000000
Data at TDC1_CALIBRATION2 location 0x1C is 000000
Data at TDC2_CALIBRATION2 location 0x1C is 000000
Writing to TDC1_CONFIG2 location 0x01 41C0
Writing to TDC2_CONFIG2 location 0x01 41C0
Writing to TDC1_INT_MASK location 0x03 4307
Writing to TDC2_INT_MASK location 0x03 4307
Data at TDC1_CONFIG1 location 0x00 is 00
Data at TDC2_CONFIG1 location 0x00 is 00
Data at TDC1_CONFIG2 location 0x01 is C0
Data at TDC2_CONFIG2 location 0x01 is C0
Data at TDC1_INT_STATUS location 0x02 is 00
Data at TDC2_INT_STATUS location 0x02 is 00
Data at TDC1_INT_MASK location 0x03 is 07
Data at TDC1_INT_MASK location 0x03 is 07
Writing to TDC1_CONFIG1 location 0x00 40C1
Writing to TDC2_CONFIG1 location 0x00 40C1
START signal sent
Data at TDC1_TIME1 location 0x10 is 000584
Data at TDC1_CLOCK_COUNT1 location 0x11 is 000000
Data at TDC1_Calibration1 location 0x1B is 000000
Data at TDC1_Calibration2 location 0x1C is 000000
Data at TDC2_TIME1 location 0x10 is 0005E7
Data at TDC2_CLOCK_COUNT1 location 0x11 is 000000
Data at TDC2_Calibration1 location 0x1B is 000000
Data at TDC2_Calibration2 location 0x1C is 000000
Data at TDC1_INT_STATUS location 0x02 is 19
Data at TDC2_INT_STATUS location 0x02 is 19
Data at TDC1_CONFIG1 location 0x00 is C0
Data at TDC2_CONFIG1 location 0x00 is C0
Data at TDC1_COARSE_CNTR_OVF_H location 0x04 is FF
Data at TDC1_COARSE_CNTR_OVF_L location 0x05 is FF
Data at TDC2_COARSE_CNTR_OVF_H location 0x04 is FF
Data at TDC2_COARSE_CNTR_OVF_L location 0x05 is FF

You can see my question with the following search: TDC7201: No Data at TDCx_Calibration1 (1Bh) and TDCx_Calibration2 (1Ch)

Unfortunately I haven't been able to solve it yet. Is there any other reason that I haven't been able to find which would disable or reset the TDCx_CALIBRATION (1 and 2) registers? Such as locked memory, or other other reasons? 

Thanks, 

Logan

  • Logan,

    Let me review your register setting and get back to you on your issue.
  • Hi Bharat, 

    I was able to solve this last night. My registers didn't change at all in finding the solution, however my sequencing and timing did. I can't say for sure, but what seemed to be the problem was the pulse signal was sent. I had based the signal being sent off of timing (by waiting long enough for the TRIGG signal to arrive) vs actually checking to see whether the TRIGG was sent. It seems like waiting too long before sending the pulse or not reacting to the TRIGG signal fast enough caused the CAL registers to not write or overwrite to 0x000000. 

    TDCx_CONFIG1 0x00 = 0xC1 (I had also tried 0x41)
    TDCx_CONFIG2 0x01 = 0xC0 (I had also tried 0x40)
    TDCx_INT_STATUS 0x02 = starts as 0x00 after signal went to 0x19
    TDCx_INT_MASK 0x03 = 0x07
    ***The rest of the registers were kept as default***
    TDCx_TIME1 0x10 = received values everytime
    TDCx_CLOCK_COUNT1 0x11 = did not received values (as expected because I was in measurement mode 1)
    TDCx_CALIBRATION1 0x1B = 0x000000 (before changing code), received values after changing code
    TDCx_CALIBRATION2 0x1C = 0x000000 (before changing code), received values after changing code

    After lots of different trials and testing and the modification of my code to ensure that the TRIGG signal had been received and immediately go into sending my pulse the problem was solved. 


    Thanks, 

    Logan