nRF5x Clock Skew Demo

Overview

This sample uses the API for correlating time sources to measure the skew between HFCLK (used for the CPU) and LFCLK (used for system time).

The CONFIG_APP_ENABLE_HFXO Kconfig option can be select to configure the high frequency clock to use a crystal oscillator rather than the default RC oscillator. (Capabilities like Bluetooth that require an accurate high-frequency clock generally enable this source automatically.) The relative error is significantly lower when HFXO is enabled.

Requirements

This application uses any nRF51 DK or nRF52 DK board for the demo.

Building, Flashing and Running

west build -b nrf52dk_nrf52840 samples/boards/nrf/clock_skew
west flash

Running:

Sample Output

*** Booting Zephyr OS build zephyr-v2.4.0-693-g4a3275faf567  ***
Power-up clocks: LFCLK[ON]: Running LFXO ; HFCLK[OFF]: Running HFINT
Start TIMER_0: 0
Timer-running clocks: LFCLK[ON]: Running LFXO ; HFCLK[OFF]: Running HFINT
Checking TIMER_0 at 16000000 Hz against ticks at 32768 Hz
Timer wraps every 268 s

Ty  Latest           Base             Span             Err
HF  00:00:00.015667
LF  00:00:00.404296
Started sync: 0

Ty  Latest           Base             Span             Err
HF  00:00:10.001151  00:00:00.015667  00:00:09.985483
LF  00:00:10.413818  00:00:00.404296  00:00:10.009521  00:00:00.024038
Skew 0.997599 ; err 2401411 ppb

Ty  Latest           Base             Span             Err
HF  00:00:19.997456  00:00:00.015667  00:00:19.981788
LF  00:00:20.434265  00:00:00.404296  00:00:20.029968  00:00:00.048180
Skew 0.997595 ; err 2405464 ppb

Ty  Latest           Base             Span             Err
HF  00:00:29.993845  00:00:00.015667  00:00:29.978178
LF  00:00:30.454650  00:00:00.404296  00:00:30.050354  00:00:00.072176
Skew 0.997598 ; err 2401828 ppb

Ty  Latest           Base             Span             Err
HF  00:00:39.986181  00:00:00.015667  00:00:39.970514
LF  00:00:40.475036  00:00:00.404296  00:00:40.070739  00:00:00.100225
Skew 0.997499 ; err 2501189 ppb

Ty  Latest           Base             Span             Err
HF  00:00:49.981516  00:00:00.015667  00:00:49.965848
LF  00:00:50.495422  00:00:00.404296  00:00:50.091125  00:00:00.125277
Skew 0.997499 ; err 2501010 ppb

Ty  Latest           Base             Span             Err
HF  00:00:59.976042  00:00:00.015667  00:00:59.960375
LF  00:01:00.515808  00:00:00.404296  00:01:00.111511  00:00:00.151136
Skew 0.997486 ; err 2514243 ppb
...
Ty  Latest           Base             Span             Err
HF  00:01:59.935661  00:00:00.015667  00:01:59.919994
LF  00:02:00.638153  00:00:00.404296  00:02:00.233856  00:00:00.313862
Skew 0.997390 ; err 2610445 ppb
...
Ty  Latest           Base             Span             Err
HF  00:04:59.769166  00:00:00.015667  00:04:59.753498
LF  00:05:01.005279  00:00:00.404296  00:05:00.600982  00:00:00.847484
Skew 0.997181 ; err 2819240 ppb
...
Ty  Latest           Base             Span             Err
HF  00:09:59.513787  00:00:00.015667  00:09:59.498119
LF  00:10:01.617156  00:00:00.404296  00:10:01.212860  00:00:01.714741
Skew 0.997148 ; err 2852201 ppb
...
Ty  Latest           Base             Span             Err
HF  00:30:08.384536  00:00:00.015667  00:30:08.368868
LF  00:30:14.084594  00:00:00.404296  00:30:13.680297  00:00:05.311429
Skew 0.997072 ; err 2928495 ppb
...
Ty  Latest           Base             Span             Err
HF  00:59:57.353602  00:00:00.015667  00:59:57.337934
LF  01:00:07.734375  00:00:00.404296  01:00:07.330078  00:00:09.992144
Skew 0.997230 ; err 2770006 ppb
...
Ty  Latest           Base             Span             Err
HF  02:59:33.181323  00:00:00.015667  02:59:33.165656
LF  03:00:03.434265  00:00:00.404296  03:00:03.029968  00:00:29.864312
Skew 0.997236 ; err 2764463 ppb
...
Ty  Latest           Base             Span             Err
HF  05:59:55.031709  00:00:00.015667  05:59:55.016042
LF  06:00:57.120941  00:00:00.404296  06:00:56.716644  00:01:01.700602
Skew 0.997151 ; err 2849042 ppb