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: fluctuating measurements

Part Number: TDC7200
Other Parts Discussed in Thread: , MSP430F5529

Hello all,

I am using TDC7200EVM connect with MPS430F559. In TDC7200 datasheet, it says the resolution is 55ps. However, my measurement is very fluctuating. These are specs i used:

START: 1 MHz pulses, 50 Ohms, 1.65V, offset 850 mV, 10% duty cycle, phase 0 degree.

STOP: exact same with START

CLOCK: external clock 10Mhz from Signal generator (4V)

I attached the measurement file here, can somebody explain to me why it's jumping up to 100ns? Also, I expect to see 0 time difference between signals. Thank you.

tdc data.pdf

  • There are a few things to note:
    a) TDC7200 measurement range differs between Mode 1 and Mode 2
    Mode 1 minimum duration you can measure is 12ns
    Mode 2 minimum duration is 2 x Reference clock period. So for 8MHz reference clock, you are looking at 250ns minimum.

    Therefore device cannot register the STOP edge if it occurs at the same time as the START edge.
    b) Rise time and jitter of the START/STOP edges also contribute. For example a Tek AFG3102C has 250ps rms jitter. This adds to the error in addition to the rise time.
    c) The cables you connect to the START/STOP SMA inputs must be of the same length. Otherwise, the difference in cable length contributes to delay as well.
    d) There's an automatic calibration that takes place after every measurement in which the reference clock is used to calibration the 55ps resolution. If the reference clock is not accurate, stable and jitter free it contributes to the error as well. If you really need very accurate timing use a very low jitter bench clock like like Stanford Research Systems.
    e) We do not recommend free running START/STOP edges. Sometimes the START edge can occur at the same time or before trigger and the device can miss it causing incorrect results. There's a typical 5ns TRIG to START time (DS page 6). Gate the START/STOP edges so they occur only after the trigger.
    f) Please upload the register settings to double check.

    Thanks,
    Vishy
  • Vishy,

    Thank you for your help. I am using the crystal clock 8MHz provided on the evaluation board (TDC7200). I also adjusted the leading and trailing time to 5ns (smallest I could adjusted). However, I still can see the fluctuation. I attached here couple of data files. The time it measured is very accurate. But once in a while there will be a spike in the time measured. I noticed that these spikes are pretty much the Clock Period+time difference between start and stop instead of just Time difference between Start and Stop. Please let me know what could be the problem. Here are specs I used:

    START: 3.3Vpp, offset 1.65V, Pulse, 10% duty, 40Khz / 100Khz / 1Mhz

    STOP: 3.3Vpp, offset 1.65V, Pulse, 10% duty, 40Khz / 100Khz / 1Mhz

    CLOCK: crystal 8Mhz on EVM board

    TextFileGraph_1Mhz_mode1_forum.xlsxTextFileGraph_100k_mode1.xlsx

  • sorry, i meant from what i observed in the data files, the time spikes i saw are = period of the Start signal + the time difference. I do not know why there is this thing.
  • I think this issue is related to the device missing the Start edge because it occurs at the same time as the trigger. Do you have a free running start/stop inputs? See Item (e) explained above.

    Thanks,
    Vishy
  • Vishy,

    Thanks for your help. I am sending signals to only Start and Stop. I am using TDC7200 EVM attached with the MSP430F5529 lauch pad. I do not see how can I access TRIG pin. I am using TDC72XX GUI to control from it and I do not see the option to work with the TRIG signal. Is there another way besides actually programming it from MSP430 microcontroller on that MSP430 launch pad?

    Lac

  • TRIG signal is generated by TDC7200 whenever start measurement bit is set to start a new measurement. It's available on the board at test point TP3. You should use this signal to trigger your start/stop function generator. You can see the following document Figure 10 (page 9) for an example
    www.ti.com/.../snaa288.pdf

    Thanks,
    Vishy
  • Thank you for your help. We got it working perfectly now.

    I just have one more last question for you. I have the source code of TDC7200-1000 I from your answer in another forum topic. I wonder is there a way to just plug the usb in and data will dump right out to the terminal without going to the GUI and hit GRAPH. I am planning to modify your code to load the configuration that I want and I do not want to open GUI everytime. 

    I suspect I have to fix the somewhere in the main function about the HostCommand(). Please give me some hints if you can. I would be very appreciated. Thank you.

  • The firmware for TDC7200EVM should be part of the following GUI install folder

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

    You can check this link for getting started instructions on the EVM firmware (explained with TDC1000-TDC7200EVM but applies to TDC7200EVM as well)

    e2e.ti.com/.../520659

    The code snippet below is from file "host_interface.c"
    case Command_Start_TOF_Graph:
    {
    tof_graph_state = 1;
    host_response = 1;
    break;
    }

    On a start graph command, a "tof_graph_state" variable is set. If you set this as part of the main, recompile and load, the TDC7200 would work with the default register settings and start dumping code via USB. You have to modify the function TI_TDC720x_reg_init in main.c if you want to have registers initiliazed differently. The default trigger period (how often start measure bit is set to trigger a measurement) is selected through timer_trigger_freq variable (units of 100ms interval) in timer_queue.c

    Thanks,
    Vishy
  • Vishy, 

    Thank you so much for your help. I got data dump directly on UART, however, there are some severe problems:

    1. It crashes after 2,3 minutes of running

    2. I thought I can decrease the baudrate so I changed UCAxMCTL = (UCBRF_0| UCBRS_6) // for 9600 baud and ofc UART_BAUDRATE = 9600. I got data but it still crashed, plus it did not print all number after the decimal places (Very weird). Also, I am using these register values from page 16 on this document   In there, I see that in order to run 38400, we need UCBRS_1 not UCBRS_3, however you had UCBRS_3 and it appears to show data with this baudrate. I am not sure now how to change baudrate.

    3. I do not seem to be able to change SMCLK_FREQ, no matter how much I change it stays at 4MHz. The max system clock is 25MHz, is there anyway I can change to this? Is that because of the power that limited the clock rate?

    Thank you