The TDC7201 is designed for use with ultrasonic, laser and radar range finding equipment using time-of-flight technique. The TDC7201 has two built-in Time-to-Digital Converters (TDCs) that can be used to measure distance down to 4 cm and up to several kilometers using a simple architecture, which eliminates the need to use expensive FPGAs or processors.
Each TDC performs the function of a stopwatch and measures the elapsed time (time-of-flight or TOF) between a START pulse and up to five STOP pulses. The ability to measure simultaneously and individually on two pairs of START and STOP pins using two built-in TDCs offers high flexibility in time measurement design.
The device has an internal self-calibrated time base which compensates for drift over time and temperature. Self-calibration enables time-to-digital conversion accuracy in the order of picoseconds. This accuracy makes the TDC7201 ideal for range finder applications.
When placed in the Autonomous Multi-Cycle Averaging Mode, the TDC7201 device can be optimized for low system power consumption, which is ideal for battery-powered flow meters. In this mode, the host can go to sleep to save power and wake up when interrupted by the TDC upon completion of the measurement sequence.
PART NUMBER | PACKAGE | BODY SIZE (NOM) |
---|---|---|
TDC7201 | nFBGA (25) | 4.00 mm × 4.00 mm |
DATE | REVISION | NOTES |
---|---|---|
May 2016 | * | Initial release. |
PIN | TYPE | DESCRIPTION | |
---|---|---|---|
NO. | NAME | ||
A1 | START1 | Input | START signal for TDC1 |
A2 | TRIGG1 | Output | Trigger output signal for TDC1 |
A3 | ENABLE | Input | Enable signal to TDC |
A4 | VREG1 | Output | LDO output terminal for external decoupling cap |
A5 | SCLK | Input | SPI clock |
B1 | STOP1 | Input | STOP signal for TDC1 |
B2 | GND1 | Ground | Ground |
B3 | INTB1 | Output | Interrupt to MCU for TDC1, active low (open drain) |
B4 | VDD1 | Power | Supply input |
B5 | CSB1 | Input | SPI chip select for TDC1, active low |
C1 | CLOCK | Input | Clock input to TDC |
C2 | DNC | — | Do not connect |
C3 | DNC | — | Do not connect |
C4 | VDD2 | Power | Supply input |
C5 | DOUT1 | Output | SPI data output for TDC1 |
D1 | START2 | Input | START signal for TDC2 |
D2 | TRIGG2 | Output | Trigger output signal for TDC2 |
D3 | INTB2 | Output | Interrupt to MCU for TDC2, active low (open drain) |
D4 | DNC | — | Do not connect |
D5 | DIN | Input | SPI data input |
E1 | STOP2 | Input | STOP signal for TDC2 |
E2 | GND2 | Ground | Ground |
E3 | DOUT2 | Output | SPI data output for TDC2 |
E4 | VREG2 | Output | LDO output terminal for external decoupling cap |
E5 | CSB2 | Input | SPI chip select for TDC2, active low |
MIN | MAX | UNIT | ||||
---|---|---|---|---|---|---|
VDD | Supply voltage | –0.3 | 3.9 | V | ||
VI | Voltage on VREG1, VREG2 pins | –0.3 | 1.65 | V | ||
Terminal input voltage on any other pin | –0.3 | VDD + 0.3 | ||||
VDIFF_IN | |Voltage differential| between any two input terminals | 3.9 | V | |||
VIN_GND_VDD | |Voltage differential| between any input terminal and GND or VDD | 3.9 | V | |||
II | Input current at any pin | –5 | 5 | mA | ||
TA | Ambient temperature | –40 | 125 | °C | ||
Tstg | Storage temperature | –55 | 150 | °C |
VALUE | UNIT | |||
---|---|---|---|---|
V(ESD) | Electrostatic discharge | Human-body model (HBM), per ANSI/ESDA/JEDEC JS-001(1) | ±1000 | V |
Charged-device model (CDM), per JEDEC specification JESD22-C101(2) | ±250 |
MIN | NOM | MAX | UNIT | ||
---|---|---|---|---|---|
VDD | Supply voltage | 2 | 3.6 | V | |
VI | Terminal voltage | 0 | VDD | V | |
VIH | Voltage input high | 0.7 × VDD | 3.6 | V | |
VIL | Voltage input low | 0 | 0.3 × VDD | V | |
FCALIB_CLK | Frequency (reference or calibration clock) | 1 (1) | 8 | 16 | MHz |
tCLOCK | Time period (reference or calibration clock) | 62.5 | 125 | 1000 | ns |
DUTYCLOCK | Input clock duty cycle | 50% | |||
TIMING REQUIREMENTS: Measurement Mode 1(1)(2)(3) | |||||
T1Min_STARTSTOP | Minimum time between start and stop signal | 12 | ns | ||
T1Max_STARTSTOP | Maximum time between start and stop signal | 2000 | ns | ||
T1Min_STOPSTOP | Minimum time between 2 stop signals | 67 | ns | ||
T1Max_LASTSTOP | Maximum time between start and last stop signal | 2000 | ns | ||
TIMING REQUIREMENTS: Measurement Mode 2(1)(2)(3) | |||||
T2Min_STARTSTOP | Minimum time between start and stop signal | 2 × tCLOCK | s | ||
T2Max_STARTSTOP | Maximum time between start and stop signal | (216-2) × tCLOCK | s | ||
T2Min_STOPSTOP | Minimum time between 2 stop signals | 2 × tCLOCK | s | ||
T2Max_LASTSTOP | Maximum time between start and last stop signal | (216-2) × tCLOCK | s | ||
TIMING REQUIREMENTS: ENABLE INPUT | |||||
TREN | Rise time for enable signal (20% to 80%) | 1 to 100 | ns | ||
TFEN | Fall time for enable signal (20% to 80%) | 1 to 100 | ns | ||
TIMING REQUIREMENTS: START1, STOP1, CLOCK, START2, STOP2 | |||||
TRST, TFST | Maximum rise, fall time for START, STOP signals (20% to 80%) |
1 | ns | ||
TRXCLK, TFXCLK | Maximum rise, fall time for external CLOCK (20% to 80%) |
1 | ns | ||
TIMING REQUIREMENTS: TRIGG1, TRIGG2 | |||||
TTRIG1START1 | Time from TRIG1 to START1 | 5 | ns | ||
TTRIG2START2 | Time from TRIG2 to START2 | 5 | ns | ||
TIMING REQUIREMENTS: Measurement Mode 1 Combined Operation(4) | |||||
T1STARTSTOP_Comb_Min | Minimum time between START and STOP signal combined | 0.25 | ns | ||
TEMPERATURE | |||||
TA | Ambient temperature | –40 | 85 | °C | |
TJ | Junction temperature | –40 | 85 | °C |
THERMAL METRIC(1) | TDC7201 | UNIT | |
---|---|---|---|
ZAX (nFBGA) | |||
25 PINS | |||
RθJA | Junction-to-ambient thermal resistance | 155.1 | °C/W |
RθJC(top) | Junction-to-case (top) thermal resistance | 109.5 | °C/W |
RθJB | Junction-to-board thermal resistance | 114.1 | °C/W |
ψJT | Junction-to-top characterization parameter | 20.8 | °C/W |
ψJB | Junction-to-board characterization parameter | 110.6 | °C/W |
PARAMETER | TEST CONDITIONS | MIN | TYP | MAX | UNIT | |||
---|---|---|---|---|---|---|---|---|
TDC CHARACTERISTICS | ||||||||
LSB | Resolution | Single shot measurement | 55 | ps | ||||
TACC-2 | Accuracy (Mode 2)(1) | CLOCK = 8 MHz, Jitter (RMS) < 1 ps, Stability < 5 ppm | 28 | ps | ||||
TSTD-2 | Standard Deviation (Mode 2) | Measured time = 100 µs | 50 | ps | ||||
Measured time = 1 µs | 35 | ps | ||||||
OUTPUT CHARACTERISTICS: TRIGG1, TRIGG2, INTB1, INTB2, DOUT1, DOUT2 | ||||||||
VOH | Output voltage high | Isource = –2 mA | 2.31 | 2.95 | V | |||
VOL | Output voltage low | Isink = 2 mA | 0.35 | 0.99 | V | |||
INPUT CHARACTERISTICS: START1, STOP1, START2, STOP2, CSB1, CSB2 | ||||||||
Cin | Input capacitance(2) | 4 | pF | |||||
INPUT CHARACTERISTICS: ENABLE, CLOCK, DIN, SCLK | ||||||||
Cin | Input capacitance(2) | 8 | pF | |||||
POWER CONSUMPTION(3) (see Measurement Mode 1 and Measurement Mode 2) | ||||||||
Ish | Shutdown current | EN = LOW | 0.6 | µA | ||||
IQA | Quiescent Current A | EN = HIGH; TDC running | 2.7 | mA | ||||
IQB | Quiescent Current B | EN = HIGH; TDC OFF, Clock Counter running | 140 | µA | ||||
IQC | Quiescent Current C | EN = HIGH; measurement stopped, SPI communication only | 175 | µA | ||||
IQD | Quiescent Current D | EN = HIGH, TDC OFF, counter stopped, no communication | 100 | µA |
MIN | NOM | MAX | UNIT | |||
---|---|---|---|---|---|---|
TIMING REQUIREMENTS: START1, STOP1, START2, STOP2, CLOCK | ||||||
PWSTART | Pulse width for Start Signal | 10 | ns | |||
PWSTOP | Pulse width for Stop Signal | 10 | ns | |||
SERIAL INTERFACE TIMING CHARACTERISTICS (VDD = 3.3 V, fSCLK = 25 MHz) (See Figure 1) | ||||||
fSCLK | SCLK frequency | 25 | MHz | |||
t1 | SCLK period | 40 | ns | |||
SERIAL INTERFACE TIMING CHARACTERISTICS (VDD = 3.3 V, fSCLK = 20 MHz) (See Figure 1) | ||||||
t1 | SCLK period | 50 | ns | |||
t2 | SCLK High Time | 16 | ns | |||
t3 | SCLK Low Time | 16 | ns | |||
t4 | DIN setup time | 5 | ns | |||
t5 | DIN hold time | 5 | ns | |||
t6 | CSB1 or CSB2 fall to SCLK rise | 6 | ns | |||
t7 | Last SCLK rising edge to CSB1 or CSB2 rising edge | 6 | ns | |||
t8 | Minimum pause time (CSB high) | 40 | ns | |||
t9 | Clk fall to DOUT1 or DOUT2 bus transition | 12 | ns |
PARAMETER | TEST CONDITIONS | MIN | TYP | MAX | UNIT | |
---|---|---|---|---|---|---|
WAKE UP TIME | ||||||
TWAKEUP_PERIOD | Time to be ready for measurement | LSB within 0.3% of settled value | 300 | µs |
The TDC7201 has two built-in TDCs with the capability to simultaneously and individually measure time delay on two pairs of START and STOP pins. Each TDC is a stopwatch that measures time between a single event (edge on START pin) and multiple subsequent events (edge on STOP pin). An event from a START pulse to a STOP pulse is also known as time-of-flight, or TOF for short. The TDC has an internal time base that is used to measure time with accuracy in the order of picoseconds. This accuracy makes the TDC7201 ideal for applications such as drones and range finders, which require high accuracy in the picoseconds range.
NOTE
In rest of the documentation, we use TDCx to refer each TDC of the TDC7201, where x = 1, 2. Also, the prefix TDCx is used in register names to identify the TDC the register belongs to. Further the associated START, STOP, TRIGG, CSB, DOUT, and INTB pins of TDCx are represented as STARTx, STOPx, TRIGGx, CSBx, DOUTx, and INTBx.
NOTE
Do not tie together VREG1 and VREG2.
The LDO (low-dropout) is an internal supply voltage regulator for the TDC7201. Each of the two TDC cores of the TDC7201 has its own dedicated LDO. No external circuitry needs to be connected to the output of this regulator other than the mandatory external decoupling capacitor on VREG1 and VREG2.
Recommendations for the decoupling capacitor parameters:
The TDC7201 needs an external reference clock connected to the CLOCK pin. This external clock input serves as the reference clock for both TDCs of the TDC7201. The external CLOCK is used to calibrate the internal time base accurately and therefore, the measurement accuracy is heavily dependent on the external CLOCK accuracy. This reference clock is also used by all digital circuits inside the device; thus, CLOCK has to be available and stable at all times when the device is enabled (ENABLE = HIGH).
Figure 20 shows the typical effect of the external CLOCK frequency on the measurement uncertainty. With a reference clock of 1 MHz, the standard deviation of a set of measurement results is approximately 243 ps. As the reference clock frequency is increased, the standard deviation (or measurement uncertainty) reduces. Therefore, using a reference clock of 16 MHz is recommended for optimal performance.
Time measurements by each TDCx of the TDC7201 rely on two counters: the Coarse Counter and the Clock Counter. The Coarse Counter counts the number of times the ring oscillator (the TDCx’s core time measurement mechanism) wraps, which is used to generate the results in the TDCx_TIME1 to TDCx_TIME6 registers.
The Clock Counter counts the number of integer clock cycles between START and STOP events and is used in Measurement Mode 2 only. The results for the Clock Counter are displayed in the TDCx_CLOCK_COUNT1 to TDCx_CLOCK_COUNT5 registers.
Once the coarse counter value has reached the corresponding value of the Coarse Counter Overflow registers, then its interrupt bit will be set to 1. In other words, if (TDCx_TIMEn / 63) ≥ COARSE_CNTR_OVF, then COARSE_CNTR_OVF_INT = 1 (this interrupt bit is located in the TDCx_INT_STATUS register).
TDCx_COARSE_CNTR_OVF = (TDCx_COARSE_CNTR_OVF_H x 28 + TDCx_COARSE_CNTR_OVF_L), where TDCx_TIMEn refers to the TDCx_TIME1 to TDCx_TIME6 registers.
Similarly, once the clock counter value has reached the corresponding value of the Clock Counter Overflow registers, then its interrupt bit will be set to 1. In other words, if TDCx_CLOCK_COUNTn > TDCx_CLOCK_CNTR_OVF, then CLOCK_CNTR_OVF_INT = 1 (this interrupt bit is located in the INT_STATUS register).
TDCx_CLOCK_CNTR_OVF = (TDCx_CLOCK_CNTR_OVF_H × 28 + TDCx_CLOCK_CNTR_OVF_L), where TDCx_CLOCK_COUNTn refers to the TDCx_CLOCK_COUNT1 to TDCx_CLOCK_COUNT5 registers.
As soon as there is an overflow detected, the running measurement will be terminated immediately.
The values in the Clock Counter STOP Mask registers define the end of the mask window. The Clock Counter STOP Mask value will be referred to as TDCx_CLOCK_CNTR_STOP_MASK = (TDCx_CLOCK_CNTR_STOP_MASK_H x 28 + TDCx_CLOCK_CNTR_STOP_MASK_L).
The Clock Counter is started by the first rising edge of the external CLOCK after the START signal (see Figure 23). All STOP signals occurring before the value set by the TDCx_CLOCK_CNTR_STOP_MASK registers will be ignored. This feature can be used to help suppress wrong or unwanted STOP trigger signals.
For example, assume the following values:
In this example, the TDC7201 will provide a TDCx_CLOCK_COUNT1 of approximately 152 (19 μs / tCLOCK), and TDCx_CLOCK_COUNT2 of approximately 952 (119 μs / tCLOCK). If the user sets TDCx_CLOCK_CNTR_STOP_MASK anywhere between 152 and 952, then the 1st STOP will be ignored and 2nd STOP will be measured.
The Clock Counter Overflow value (TDCx_CLOCK_CNTR_OVF_H × 28 + TDCx_CLOCK_CNTR_OVF_L) should always be higher than the Clock Counter STOP Mask value (TDCx_CLOCK_CNTR_STOP_MASK_H × 28 + TDCx_CLOCK_CNTR_STOP_MASK_L). Otherwise, the Clock Counter Overflow Interrupt will be set before the STOP mask time expires, and the measurement will be halted.
The ENABLE pin is used as a reset to all digital circuits in the TDC7201. Therefore, it is essential that the ENABLE pin sees a positive edge after the device has powered up. It is also important to ensure that there are no transients (such as glitches) on the ENABLE pin; such glitches could cause the device to reset
The time measurements performed by each TDCx of the TDC7201 are based on an internal time base which is represented as the LSB value of the TDCx_TIME1 to TDCx_TIME6 results registers. The typical LSB value can be seen in Electrical Characteristics. However, the actual value of the LSB can vary depending on environmental variables (temperature, systematic noise, and so forth). This variation can introduce significant error into the measurement result. There is also an offset error in the measurement due to certain internal delays in the device.
In order to compensate for these errors and to calculate the actual LSB value, calibration needs to be performed. The TDCx calibration consists of two measurement cycles of the external CLOCK. The first is a measurement of a single clock cycle period of the external clock; the second measurement is for the number of external CLOCK periods set by the CALIBRATION2_PERIODS in the TDCx_CONFIG2 register. The results from the calibration measurements are stored in the TDCx_CALIBRATION1 and TDCx_CALIBRATION2 registers.
The two-point calibration is used to determine the actual LSB in real time in order to convert the TDCx_TIME1 to TDCx_TIME6 results from number of delays to a real TOF number. Calibration is automatic and performed every time after a measurement and before measurement completion interrupt is sent to the MCU through INTBx pin. Only if a measurement is interrupted (for example, due to counter overflow or missing STOP signal), calibration is not performed. As discussed in the next sections, the calibrations will be used for calculating TOF in measurement modes 1 and 2.
In measurement mode 1, as shown in Figure 21, each TDCx of the TDC7201 performs the entire counting from START to the last STOP using its internal ring oscillator plus coarse counter. This method is recommended for measuring shorter time durations of < 2000 ns. TI does not recommend using measurement mode 1 for measuring time > 2000 ns because this decreases accuracy of the measurement (as shown in Figure 22).
For measurement mode 1, the TOF between the START to the nth STOP can be calculated using Equation 1:
where
For example, assume the time-of-flight between the START to the 1st STOP is desired, and the following readouts were obtained:
Therefore, the calculation for time-of-flight is:
In measurement mode 2, the internal ring oscillator of each TDCx of the TDC7201 is used only to count fractional parts of the total measured time. As shown in Figure 23, the internal ring oscillator starts counting from when it receives the START signal until the first rising edge of the CLOCK. Then, the internal ring oscillator switches off, and the Clock counter starts counting the clock cycles of the external CLOCK input until a STOP pulse is received. The internal ring oscillator again starts counting from the STOP signal until the next rising edge of the CLOCK.
The TOF between the START to the nth STOP can be calculated using Equation 2:
where
For example, assume the time-of-flight between the START to the 1st STOP is desired, and the following readouts were obtained:
Therefore, the calculation for time-of-flight is:
For one STOP, each TDCx of the TDC7201 performs the measurement by counting from the START signal to the STOP signal. If no STOP signal is received, either the Clock Counter or Coarse Counter will overflow and will generate an interrupt (see Coarse and Clock Counters Overflow). If no START signal is received, the timer waits indefinitely for a START signal to arrive.
For multiple STOPs, each TDCx performs the measurement by counting from the START signal to the last STOP signal. All earlier STOP signals are captured and stored into the corresponding Measurement Results registers (TDCx_TIME1 to TDCx_TIME6, TDCx_CLOCK_COUNT1 to TDCx_CLOCK_COUNT5, TDCx_CALIBRATION1, TDCx_CALIBRATION2). The minimum time required between two consecutive STOP signals is defined in the Recommended Operating Conditions table. The device can be programmed to measure up to 5 STOP signals by setting the NUM_STOP bits in the TDCx_CONFIG2 register.
In the Multi-Cycle Averaging Mode, the TDC7201 will perform a series of measurements on its own and will only send an interrupt to the MCU (for example, MSP430, C2000, and so forth) for wake up after the series has been completed. While waiting, the MCU can remain in sleep mode during the whole cycle (as shown in Figure 24).
Multi-Cycle Averaging Mode Setup and Conditions:
This mode allows multiple measurements without MCU interaction, thus optimizing power consumption for the overall system.
In order to achieve the highest measurement accuracy, having the same edge polarity for the START and STOP input signals is highly recommended. Otherwise, slightly different propagation delays due to symmetry shift between the rising and falling edge configuration will impact the measurement accuracy.
For highest measurement accuracy in measurement mode 2, TI recommends to choose for the START and STOP signal the rising edge. This is done by setting the START_EDGE and STOP_EDGE bits in the TDCx_CONFIG1 register to 0.
The TDC7201 has two built-in TDCs with the capability to simultaneously and individually measure time delay on two pairs of START and STOP pins. Each TDCx is a stopwatch that measures time between a single event (edge on STARTx pin) and multiple subsequent events (edge on STOPx pin). The measurement sequence for each TDCx is as follows:
NOTE
Pins VDD1 and VDD2 must be tied together at the board level and supplied from the same source.
NOTE
INTBx must be utilized to determine TDCx measurement completion; polling the TDCx_INT_STATUS register to determine measurement completion is NOT recommended as it will interfere with the TDCx measurement.
The two TDCs of TDC7201 can be used independently to measure TOF. When used independently, the TDCx operation is as explained in the measurement sequence steps above. In this case, each TDCx has dedicated START, STOP inputs and measures their STARTx to STOPx time individually when the START_MEAS bit in the TDCx_CONFIG1 register is set. The MCU has to set up, control, and read the results from the two TDCs individually through the master SPI interface. To set up the registers and read back measurement results of TDCx, MCU needs to perform SPI read and write transactions with corresponding CSBx asserted.
NOTE
START1, STOP1 and START2, STOP2 inputs can be separate from different sources or can be identical with START1 connected to START2 and STOP1 connected to STOP2. In the latter case, when the TDCx inputs are connected together and the TDCx register setup is identical, then both the TDCs measure the same input in parallel and this can be used to achieve finer resolution. By measuring the same time with both TDCs and taking the average, the LSB resolution is halved.
The required wait time following the rising edge of the ENABLE pin of the TDC7201 is defined by three key times, as shown in Figure 25. All three times relate to the startup of the TDCx’s internal dedicated LDO, which is power gated when the device is disabled for optimal power consumption. The first parameter, T1SPI_RDY, is the time after which the SPI interface is accessible. The second (T2LDO_SET1) parameter and third (T3LDO_SET2) parameter are related to the performance of a measurement made while the internal LDO is settling. The LDO supplies the TDC7201’s time measurement device, and a change in voltage on its supply during a measurement translates directly to an inaccuracy. It is therefore recommended to wait until the LDO is settled before time measurement begins.
The first time period relating to the measurement accuracy is T2LDO_SET1, the LDO settling time 1. This is the time after which the LDO has settled to within 0.3% of its final value. A 0.3% error translates to a worst case time error (due to the LDO settling) of 0.3% × tCLOCK, which is 375 ps in the case of an 8-MHz reference clock, or 187.5 ps if a 16-MHz clock is used. Finally, the time T3LDO_SET2 is the time after which the LDO has settled to its final value. For best performance, TI recommends that a time measurement is not started before T3LDO_SET2 to allow the LDO to fully settle. Typical times for these parameters are: T1SPI_RDY is 100 µs, for T2LDO_SET1 is 300 µs, and for T3LDO_SET2 is 1.5 ms.
The serial interface consists of data input (DIN), data output (DOUTx), serial interface clock (SCLK), and chip select bar (CSBx). The serial interface is used to configure the TDC7201 parameters available in various configuration registers.
The two TDCs of TDC7201 share the serial interface DIN and SCLK pins but support dedicated CSB and DOUT pins. Registers of the TDCx are selected for read/write access when their corresponding dedicated CSBx pin is asserted. By connecting together DOUT1 and DOUT2, a single SPI master interface of the MCU can be used to access both the TDC register sets by asserting the corresponding CSBx. Alternatively, by keeping DOUT1 and DOUT2 separate, data can be read out of the TDCs in parallel using their dedicated DOUTx pins. This doubles the data readout throughput but requires a second dedicated SPI interface of the MCU.
The communication on the SPI bus supports write and read transactions. A write transaction consists of a single write command byte, followed by single data byte. A read transaction consists of a single read command byte followed by 8 or 24 SCLK cycles. The write and read command bytes consist of a 1-bit auto-increment bit, a 1-bit read or write instruction, and a 6-bit register address. Figure 26 shows the SPI protocol for a transaction involving one byte of data (read or write).
CSBx is an active-low signal and needs to be low throughout a transaction. That is, CSBx should not pulse between the command byte and the data byte of a single transaction.
De-asserting CSBx always terminates an ongoing transaction, even if it is not yet complete. Re-asserting CSBx will always bring the device into a state ready for the next transaction, regardless of the termination status of a previous transaction.
Registers of the TDCx are selected for read/write access when their corresponding dedicated CSBx pin is asserted.
SPI clock can idle high or low. TI recommends to keep SCLK as clean as possible to prevent glitches from corrupting the SPI frame.
Data In (DIN) is driven by the SPI master by sending the command and the data byte to configure the TDC7201.
Data Out (DOUTx) is driven by the TDC7201 when the SPI master initiates a read transaction with CSBx asserted. When the TDC7201 is not being read out, the DOUT pin is in high impedance mode and is undriven.
Registers of the TDCx are selected for read/write access when their corresponding dedicated CSBx pin is asserted. By connecting together DOUT1 and DOUT2, a single SPI master interface of the MCU can be used to access both the TDC register sets by asserting the corresponding CSBx. Alternatively, by keeping DOUT1 and DOUT2 separate, data can be read out of the TDCs in parallel using their dedicated DOUTx pins. This doubles the data readout throughput but requires a second dedicated SPI interface of the MCU.
Access to the TDCx internal registers can be done through the serial interface formed by pins CSBx (Chip Select - active low), SCLK (serial interface clock), DIN (data input), and DOUTx (data out).
Serial shift of bits into the TDCx is enabled when CSBx is low. Serial data DIN is latched (MSB received first, LSB received last) at every rising edge of SCLK when CSBx is active (low). The serial data is loaded into the register with the last data bit SCLK rising edge when CSBx is low. In the case that the word length exceeds the register size, the excess bits are ignored. The interface can work with SCLK frequency from 25 MHz down to very low speeds (a few Hertz) and even with a non-50% duty-cycle SCLK.
The SPI transaction is divided in two main portions:
When writing to a register with unused bits, these should be set to 0.
Address and Control (A7 - A0) | |||||||
---|---|---|---|---|---|---|---|
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
Auto Increment | RW | Register Address | |||||
0: OFF 1: ON |
Read = 0 Write = 1 |
00 h up to 3Fh |
When the Auto Increment Mode is OFF, only the register indicated by the Register Address will be accessed, all cycles beyond the register length will be ignored. When the Auto Increment is ON, the register of the Register Address is accessed first, then without interruption, subsequent registers are accessed.
The Auto Increment Mode can be either used to access the configuration (TDCx_CONFIG1 and TDCx_CONFIG2) and status (TDCx_INT_STATUS) registers, or for the Measurement Results registers (TDCx_TIME1 to TDCx_TIME6, TDCx_CLOCK_COUNT1 to TDCx_CLOCK_COUNT5, TDCx_CALIBRATION1, TDCx_CALIBRATION2). As both register block use registers with different length, it is not possible to access all registers of the device within one single access cycle.
After power up (VDD supplied, ENABLE Pin low to high transition) the internal registers are initialized with the default value. Disabling the part by pulling ENABLE pin to GND will set the device into total shutdown. As the internal LDO is turned off settings in the register will be lost. The device initializes the registers with default values with the next enable (ENABLE pin to VDD).
REGISTER ADDRESS | REGISTER NAME | REGISTER DESCRIPTION | SIZE (BITS) | RESET VALUE |
---|---|---|---|---|
00h | TDCx_CONFIG1 | Configuration Register 1 | 8 | 00h |
01h | TDCx_CONFIG2 | Configuration Register 2 | 8 | 40h |
02h | TDCx_INT_STATUS | Interrupt Status Register | 8 | 00h |
03h | TDCx_INT_MASK | Interrupt Mask Register | 8 | 07h |
04h | TDCx_COARSE_CNTR_OVF_H | Coarse Counter Overflow Value High | 8 | FFh |
05h | TDCx_COARSE_CNTR_OVF_L | Coarse Counter Overflow Value Low | 8 | FFh |
06h | TDCx_CLOCK_CNTR_OVF_H | CLOCK Counter Overflow Value High | 8 | FFh |
07h | TDCx_CLOCK_CNTR_OVF_L | CLOCK Counter Overflow Value Low | 8 | FFh |
08h | TDCx_CLOCK_CNTR_STOP_MASK_H | CLOCK Counter STOP Mask High | 8 | 00h |
09h | TDCx_CLOCK_CNTR_STOP_MASK_L | CLOCK Counter STOP Mask Low | 8 | 00h |
10h | TDCx_TIME1 | Measured Time 1 | 24 | 00_0000h |
11h | TDCx_CLOCK_COUNT1 | CLOCK Counter Value | 24 | 00_0000h |
12h | TDCx_TIME2 | Measured Time 2 | 24 | 00_0000h |
13h | TDCx_CLOCK_COUNT2 | CLOCK Counter Value | 24 | 00_0000h |
14h | TDCx_TIME3 | Measured Time 3 | 24 | 00_0000h |
15h | TDCx_CLOCK_COUNT3 | CLOCK Counter Value | 24 | 00_0000h |
16h | TDCx_TIME4 | Measured Time 4 | 24 | 00_0000h |
17h | TDCx_CLOCK_COUNT4 | CLOCK Counter Value | 24 | 00_0000h |
18h | TDCx_TIME5 | Measured Time 5 | 24 | 00_0000h |
19h | TDCx_CLOCK_COUNT5 | CLOCK Counter Value | 24 | 00_0000h |
1Ah | TDCx_TIME6 | Measured Time 6 | 24 | 00_0000h |
1Bh | TDCx_CALIBRATION1 | Calibration 1, 1 CLOCK Period | 24 | 00_0000h |
1Ch | TDCx_CALIBRATION2 | Calibration 2, 2/10/20/40 CLOCK Periods | 24 | 00_0000h |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
FORCE_CAL | PARITY_EN | TRIGG_EDGE | STOP_EDGE | START_EDGE | MEAS_MODE | START_MEAS | |
R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7 | FORCE_CAL | R/W | 0 |
0: Calibration is automatic and performed every time after a measurement. Only if a measurement is interrupted (for example, due to counter overflow or missing STOP signal), calibration is not performed. 1: Calibration is always performed at the end (for example, after a counter overflow) even if a measurement is interrupted. |
6 | PARITY_EN | R/W | 0 |
0: Parity bit for Measurement Result Registers* disabled (Parity Bit always 0) 1: Parity bit for Measurement Result Registers enabled (Even Parity) *The Measurement Results registers are the TDCx_TIME1 to TDCx_TIME6, TDCx_CLOCK_COUNT1 to TDCx_CLOCK_COUNT5, TDCx_CALIBRATION1, TDCx_CALIBRATION2 registers. |
5 | TRIGG_EDGE | R/W | 0 |
0: TRIGG is output as a Rising edge signal 1: TRIGG is output as a Falling edge signal |
4 | STOP_EDGE | R/W | 0 |
0: Measurement is stopped on Rising edge of STOP signal 1: Measurement is stopped on Falling edge of STOP signal |
3 | START_EDGE | R/W | 0 |
0: Measurement is started on Rising edge of START signal 1: Measurement is started on Falling edge of START signal |
[2:1] | MEAS_MODE | R/W | b00 | 00: Measurement Mode 1 (for expected time-of-flight < 2000 ns). 01: Measurement Mode 2 (recommended) 10, 11: Reserved for future functionality |
0 | START_MEAS | R/W | 0 |
Start New Measurement: 0: No effect 1: Start New Measurement. Writing a 1 will clear all bits in the Interrupt Status Register and Start the measurement (by generating a TRIGG signal) and will reset the content of all Measurement Results registers (TDCx_TIME1 to TDCx_TIME6, TDCx_CLOCK_COUNT1 to TDCx_CLOCK_COUNT5, TDCx_CALIBRATION1, TDCx_CALIBRATION2) to 0. |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CALIBRATION2_PERIODS | AVG_CYCLES | NUM_STOP | |||||
R/W-0 | R/W-1 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
[7:6] | CALIBRATION2_PERIODS | R/W | b01 |
00: Calibration 2 - measuring 2 CLOCK periods 01: Calibration 2 - measuring 10 CLOCK periods 10: Calibration 2 - measuring 20 CLOCK periods 11: Calibration 2 - measuring 40 CLOCK periods |
[5:3] | AVG_CYCLES | R/W | b000 |
000: 1 Measurement Cycle only (no Multi-Cycle Averaging Mode) 001: 2 Measurement Cycles 010: 4 Measurement Cycles 011: 8 Measurement Cycles 100: 16 Measurement Cycles 101: 32 Measurement Cycles 110: 64 Measurement Cycles 111: 128 Measurement Cycles |
[2:0] | NUM_STOP | R/W | b000 |
000: Single Stop 001: Two Stops 010: Three Stops 011: Four Stops 100: Five Stops 101, 110, 111: No Effect. Single Stop |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Reserved | MEAS_ COMPLETE_ FLAG |
MEAS_STARTED_ FLAG |
CLOCK_ CNTR_ OVF_INT |
COARSE_CNTR_ OVF_INT |
NEW_MEAS_ INT |
||
R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7 - 5 | Reserved | R/W | b000 |
|
4 | MEAS_COMPLETE_FLAG | R/W | 0 |
Writing a 1 will clear the status 0: Measurement has not completed 1: Measurement has completed (same information as NEW_MEAS_INT) |
3 | MEAS_STARTED_FLAG | R/W | 0 |
Writing a 1 will clear the status 0: Measurement has not started 1: Measurement has started (START signal received) |
2 | CLOCK_CNTR_OVF_INT | R/W | 0 |
Requires writing a 1 to clear interrupt status 0: No overflow detected 1: Clock overflow detected, running measurement will be stopped immediately |
1 | COARSE_CNTR_OVF_INT | R/W | 0 |
Requires writing a 1 to clear interrupt status 0: No overflow detected 1: Coarse overflow detected, running measurement will be stopped immediately |
0 | NEW_MEAS_INT | R/W | 0 |
Requires writing a 1 to clear interrupt status 0: Interrupt not detected 1: Interrupt detected – New Measurement has been completed |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Reserved | CLOCK_CNTR _OVF_MASK |
COARSE_CNTR _OVF_MASK |
NEW_MEAS _MASK |
||||
R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-1h | R/W-1h | R/W-1h |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7 - 3 | Reserved | R/W | b0'0000 | |
2 | CLOCK_CNTR_OVF_MASK | R/W | 1 |
0: CLOCK Counter Overflow Interrupt disabled 1: CLOCK Counter Overflow Interrupt enabled |
1 | COARSE_CNTR_OVF_MASK | R/W | 1 |
0: Coarse Counter Overflow Interrupt disabled 1: Coarse Counter Overflow Interrupt enabled |
0 | NEW_MEAS_MASK | R/W | 1 |
0: New Measurement Interrupt disabled 1: New Measurement Interrupt enabled |
A disabled interrupt will no longer be visible on the device pin (INTB). The interrupt bit in the TDCx_INT_STATUS register will still be active.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
COARSE_CNTR_OVF_H | |||||||
R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7-0 | COARSE_CNTR_OVF_H | R/W | FFh | Coarse Counter Overflow Value, upper 8 Bit |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
COARSE_CNTR_OVF_L | |||||||
R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7-0 | COARSE_CNTR_OVF_L | R/W | FFh |
Coarse Counter Overflow Value, lower 8 Bit Note: Do not set COARSE_CNTR_OVF_L to 1. |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CLOCK_CNTR_OVF_H | |||||||
R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7-0 | CLOCK_CNTR_OVF_H | R/W | FFh | CLOCK Counter Overflow Value, upper 8 Bit |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CLOCK_CNTR_OVF_L | |||||||
R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7-0 | CLOCK_CNTR_OVF_L | R/W | FFh | CLOCK Counter Overflow Value, lower 8 Bit |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CLOCK_CNTR_STOP_MASK_H | |||||||
R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7-0 | CLOCK_CNTR_STOP_MASK_H | R/W | 00h | CLOCK Counter STOP Mask, upper 8 Bit |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CLOCK_CNTR_STOP_MASK_L | |||||||
R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
7-0 | CLOCK_CNTR_STOP_MASK_L | R/W | 00h | CLOCK Counter STOP Mask, lower 8 Bit |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | TIME1: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity Bit | R | 0 | Parity Bit |
22-0 | TIME1 | R | 00 0000h | 23 bits, TIME1 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | CLOCK_COUNT1 | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity Bit | R | 0 | Parity Bit |
22-16 | Not Used | R | 00h | 7 bits, these bits will be used in Multi-Cycle Averaging Mode in order to allow higher averaging results. |
15-0 | CLOCK_COUNT1 | R | 0000h | 16 bits, CLOCK_COUNT1 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | TIME2: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity Bit | R | 0 | Parity Bit |
22-0 | TIME2 | R | 00 0000h | 23 bits, TIME2 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | CLOCK_COUNT2 | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity Bit |
22-16 | Not Used | R | 00h | 7 bits, these bits will be used in Multi-Cycle Averaging Mode in order to allow higher averaging results. |
15-0 | CLOCK_COUNT2 | R | 0000h | 16 bits, CLOCK_COUNT2 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | TIME3: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity Bit |
22-0 | TIME3 | R | 00 0000h | 23 bits, TIME3 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | CLOCK_COUNT3 | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity bit |
22-16 | Not Used | R | 00h | 7 bits, these bits will be used in Multi-Cycle Averaging Mode in order to allow higher averaging results. |
15-0 | CLOCK_COUNT3 | R | 0000h | 16 bits, CLOCK_COUNT3 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | TIME4: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity Bit |
22-0 | TIME4 | R | 00 0000h | 23 bits, TIME4 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | CLOCK_COUNT4 | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity bit |
22-16 | Not Used | R | 00h | 7 bits, these bits will be used in Multi-Cycle Averaging Mode in order to allow higher averaging results. |
15-0 | CLOCK_COUNT4 | R | 0000h | 16 bits, CLOCK_COUNT4 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | TIME5: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity Bit |
22-0 | TIME5 | R | 00 0000h | 23 bits, TIME5 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | CLOCK_COUNT5 | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity bit |
22-16 | Not Used | R | 00h | 7 bits, these bits will be used in Multi-Cycle Averaging Mode in order to allow higher averaging results. |
15-0 | CLOCK_COUNT5 | R | 0000h | 16 bits, CLOCK_COUNT5 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | TIME6: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity bit | R | 0 | Parity Bit |
22-0 | TIME6 | R | 00 0000h | 23 bits, TIME6 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | CALIBRATION1: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity BIt | R | 0 | Parity Bit |
22-0 | CALIBRATION1 | R | 00 0000h | 23 bits, Calibration 1 measurement result |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Parity Bit | CALIBRATION2: 23 bit integer value (Bit 22: MSB, Bit 0: LSB) | ||||||||||||||||||||||
R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 | R-0 |
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset |
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
23 | Parity BIt | R | 0 | Parity Bit |
22-0 | CALIBRATION2 | R | 00 0000h | 23 bits, Calibration 2 measurement result |
NOTE
Information in the following applications sections is not part of the TI component specification, and TI does not warrant its accuracy or completeness. TI’s customers are responsible for determining suitability of components for their purposes. Customers should validate and test their design implementation to confirm system functionality.
The TDC7201 is targeted for the TOF measurement of laser pulses. Laser based time-of-flight applications demand picosecond accuracy plus the ability to measure very short durations. The TDC7201 is highly suited for such applications with its wide measurement range of 0.25 ns to 8 ms and high accuracy of 28 ps. It has a single shot resolution of 55 ps which is equivalent to 0.825 cm.
The TDC7201 can be used in TOF laser range finders to measure distance to a target. Besides surveying and navigation, distance measurement using TOF laser range finders is used for collision avoidance and safety in a number of systems like drones, robotics, and autonomous vehicles. A block diagram of TOF laser range finders is shown in Figure 50. The system consists of a laser pulse emitter or transmitter, an echo receiver, and a TDC. In this system, TDC7201 can measure the round trip time between a light pulse emission and its echo from the target. The light pulse transmitter triggers the TDC7201 measurement by providing the start input and the receiver stops the TDC7201. Using the equation D = C × TOF / 2, where C is the speed of light, the distance D to the target can be calculated once the TOF is known. A TOF of 0.67 ns is equivalent to 10 cm range and 1 cm accuracy corresponds to 67 ps.
The TOF measurement design is driven by the extreme low measurement range and high accuracy constraints. The TDC7201 has two built-in TDCs to achieve a low measurement range of 4 cm (equivalent to a 0.25 ns TOF). The TDC7201 with its single shot resolution of 55 ps (which is equivalent to 0.825 cm) and built-in averaging of up to 128 samples can enable applications to achieve millimeter or even sub-millimeter precision.
The minimum time measurable in measurement mode 1 is 12 ns. It is feasible to do measurements down to 0.25 ns using the TDC7201 in what is called combined measurement mode. In combined measurement mode, START1 and START2 are connected together:
An illustration of this combined measurement mode is shown in Figure 51 and Figure 52. It is necessary that the REFERENCE_START pulse is generated at least 12 ns before the LIDAR_START pulse. The REFERENCE_START could be generated by the MCU or by some other timing circuit.
Figure 53 and Figure 54 show a TOF measurement of 0.25ns using the TDC7201 in combined measurement mode. A Tektronix DTG5078 based test setup was used to generate the TDC7201 START, STOP inputs.
A stable, known reference clock is crucial to the ability to measure time, regardless of the time measuring device. Two parameters of a clock source primarily affect the ability to measure time: accuracy and jitter. The following subsection will discuss recommendations for the CLOCK in order to increase accuracy and reduce jitter.
CLOCK sources are typically specified with an accuracy value as the clock period is not exactly equal to the nominal value specified. For example, an 8-MHz clock reference may have a 20-ppm accuracy. The true value of the clock period therefore has an error of ±20 ppm, and the real frequency is in the range 7.99984 MHz to 8.00016 MHz [8 MHz ± (8 MHz) x (20/106)].
If the clock accuracy is at this boundary, but the reference time used to calculate the time of flight relates to the nominal 8-MHz clock period, then the time measured will be affected by this error. For example, if the time period measured is 50 µs, and the 8-MHz reference clock has +50 ppm of error in frequency, but the time measured refers to the 125-ns period (1/8 MHz), then the 50 µs time period will have an error of 50 µs x 50/1000000 = 2.5 ns.
In summary, a clock inaccuracy translates proportionally to a time measurement error.
Clock jitter introduces uncertainty into a time measurement, rather than inaccuracy. As shown in Figure 55, the jitter accumulates on each clock cycle so the uncertainty associated to a time measurement is a function of the clock jitter and the number of clock cycles measured.
Clock_Jitter_Uncertainty = (√n) × (θJITTER), where n is the number of clock cycles counted, and θJITTER is the cycle-to-cycle jitter of the clock.
For example, if the time measured is 50 μs using an 8-MHz reference clock, n = 50 μs/(1/8 MHz) = 400 clock cycles. If the RMS cycle-to-cycle jitter, θJITTER = 10 ps, then the RMS uncertainty introduced in a single measurement is in the order of (√n) × (θJITTER) = 200 ps.
Because the effect of jitter is random, averaging or accumulating time results reduces the effect of the uncertainty introduced. If the time is measured m times and the result is averaged, then the uncertainty is reduced to: Clock_Jitter_Uncertainty = (√n) × (θJITTER) / (√m).
For example, if 64 averages are performed in the example above, then the jitter-related uncertainty is reduced to 25 ps RMS.
The analog circuitry of the TDC7201 is designed to operate from an input voltage supply range between 2 V and 3.6 V. TI recommends to place a 100-nF ceramic bypass capacitor to ground as close as possible to the VDD pins. In addition, an electrolytic or tantalum capacitor with value greater than 1 µF is recommended. The bulk capacitor does not need to be in close vicinity with the TDC7201 and could be close to the voltage source terminals or at the output of the voltage regulators powering the TDC7201.