Managed to substantially decrease the delay measurements' standard deviation. Initially, I used the GPIO output speed very high as the TDC7200 specifies nominal 1 ns rise times for START/STOP/CLOCK signals. Playing around with the GPIO output speeds, I noticed that very high significantly affects the standard deviation, see attached plot. The plot includes values from the datasheet's Fig. 17, which is still better than my measurement results. I've also attached the raw measurement data.
Haven't had a chance to investigate with a probe and scope yet, but I'll use speed setting high for now.
TDC7200+MCU signal configuration:
* START, STOP, and CLOCK signals generated by STM32G474 (on Nucleo-G474RE board)
* TDC7200 mounted on Nucleo-G474RE via minimal breakout board
* STM32 PLL clock (160 MHz) generated from external 24 MHz crystal (via HSE input)
* TDC7200 CLOCK frequency is 10 MHz (160 MHz PLL clock divided by 16 and output on MCO pin)
* START and STOP generated by 32-bit timer (TIM2) running at 160 MHz, i.e., 6.25 ns resolution
* measured 100000 iterations for each combinations of configured TIM2 delay between start and stop signals (see file names; delay in multiples of TIM2 clock cycle)
Raw measurement results:
delay(ns), gpio_ospeed, mu(ns), sigma(ns), num_errors, num_valid, num_3sigma, num_5sigma
12.50, 0, 12.81, 0.217, 0, 100000, 0, 0
12.50, 1, 13.30, 0.075, 0, 100000, 5746, 0
12.50, 2, 13.27, 0.054, 0, 100000, 5228, 1
12.50, 3, 13.26, 0.042, 0, 100000, 3660, 0
18.75, 0, 19.16, 0.208, 0, 100000, 0, 0
18.75, 1, 19.55, 0.054, 0, 100000, 3886, 29
18.75, 2, 19.55, 0.059, 0, 100000, 3491, 0
18.75, 3, 19.54, 0.045, 0, 100000, 3438, 0
50.00, 0, 50.37, 0.227, 0, 100000, 0, 0
50.00, 1, 50.72, 0.064, 0, 100000, 2821, 1
50.00, 2, 50.71, 0.055, 0, 100000, 1896, 0
50.00, 3, 50.71, 0.047, 0, 100000, 359, 0
150.00, 0, 150.47, 0.233, 0, 100000, 22, 0
150.00, 1, 150.77, 0.115, 0, 100000, 549, 0
150.00, 2, 150.75, 0.101, 0, 100000, 572, 0
150.00, 3, 150.78, 0.114, 0, 100000, 29, 0
250.00, 0, 250.40, 0.242, 0, 100000, 131, 0
250.00, 1, 250.74, 0.132, 0, 100000, 929, 3
250.00, 2, 250.73, 0.130, 0, 100000, 998, 0
250.00, 3, 250.81, 0.192, 0, 100000, 0, 0
500.00, 0, 500.16, 0.258, 0, 100000, 1793, 16
500.00, 1, 500.52, 0.240, 0, 100000, 2278, 16
500.00, 2, 500.49, 0.241, 0, 100000, 2287, 10
500.00, 3, 500.74, 0.426, 0, 100000, 0, 0
750.00, 0, 750.14, 0.398, 0, 100000, 1596, 11
750.00, 1, 750.48, 0.326, 0, 100000, 2480, 141
750.00, 2, 750.46, 0.324, 0, 100000, 2477, 126
750.00, 3, 750.82, 0.655, 0, 100000, 0, 0
2000.00, 0, 1999.79, 0.547, 0, 100000, 586, 162
2000.00, 1, 2000.11, 0.520, 0, 100000, 561, 196
2000.00, 2, 2000.09, 0.520, 0, 100000, 594, 190
2000.00, 3, 2000.36, 1.209, 0, 100000, 3406, 1