nRF5x Clock Skew

Browse source code on GitHub

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). It also shows how to use this skew to correct durations measured in the LFCLK domain to durations in the HFCLK domain.

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/nrf52832 samples/boards/nordic/clock_skew
west flash

Running:

Sample Output

*** Booting Zephyr OS build v2.5.0-rc3-94-g06a4b650467b  ***
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.015666
LF  00:00:00.404937
Started sync: 0

Ty  Latest           Base             Span             Err
HF  00:00:09.978436  00:00:00.015666  00:00:09.962769
LF  00:00:10.414520  00:00:00.404937  00:00:10.009582  00:00:00.046813
RHF 00:00:09.978435                                   -00:00:00.000000
Skew 0.995323 ; err 4676818 ppb

Ty  Latest           Base             Span             Err
HF  00:00:19.959136  00:00:00.015666  00:00:19.943469
LF  00:00:20.441589  00:00:00.404937  00:00:20.036651  00:00:00.093182
RHF 00:00:19.959117                                   -00:00:00.000018
Skew 0.995349 ; err 4650592 ppb

Ty  Latest           Base             Span             Err
HF  00:00:29.937181  00:00:00.015666  00:00:29.921514
LF  00:00:30.468627  00:00:00.404937  00:00:30.063690  00:00:00.142176
RHF 00:00:29.937175                                   -00:00:00.000005
Skew 0.995271 ; err 4729151 ppb

Ty  Latest           Base             Span             Err
HF  00:00:39.917347  00:00:00.015666  00:00:39.901680
LF  00:00:40.495666  00:00:00.404937  00:00:40.090728  00:00:00.189048
RHF 00:00:39.917339                                   -00:00:00.000008
Skew 0.995284 ; err 4715502 ppb

Ty  Latest           Base             Span             Err
HF  00:00:49.899493  00:00:00.015666  00:00:49.883826
LF  00:00:50.522674  00:00:00.404937  00:00:50.117736  00:00:00.233910
RHF 00:00:49.899486                                   -00:00:00.000007
Skew 0.995333 ; err 4667222 ppb

Ty  Latest           Base             Span             Err
HF  00:00:59.878166  00:00:00.015666  00:00:59.862499
LF  00:01:00.549713  00:00:00.404937  00:01:00.144775  00:00:00.282276
RHF 00:00:59.878154                                   -00:00:00.000011
Skew 0.995307 ; err 4693269 ppb
...
Ty  Latest           Base             Span             Err
HF  00:02:59.654855  00:00:00.015666  00:02:59.639188
LF  00:03:00.873901  00:00:00.404937  00:03:00.468963  00:00:00.829775
RHF 00:02:59.654857                                    00:00:00.000001
Skew 0.995402 ; err 4597902 ppb
...
Ty  Latest           Base             Span             Err
HF  00:04:59.410593  00:00:00.015666  00:04:59.394926
LF  00:05:01.198181  00:00:00.404937  00:05:00.793243  00:00:01.398317
RHF 00:04:59.410594                                    00:00:00.000001
Skew 0.995351 ; err 4648745 ppb
...
Ty  Latest           Base             Span             Err
HF  00:09:58.829511  00:00:00.015666  00:09:58.813845
LF  00:10:02.008911  00:00:00.404937  00:10:01.603973  00:00:02.790128
RHF 00:09:58.829509                                   -00:00:00.000002
Skew 0.995362 ; err 4637837 ppb
...
Ty  Latest           Base             Span             Err
HF  00:29:56.607589  00:00:00.015666  00:29:56.591923
LF  00:30:05.250732  00:00:00.404937  00:30:04.845794  00:00:08.253871
RHF 00:29:56.607585                                   -00:00:00.000004
Skew 0.995427 ; err 4573166 ppb
...
Ty  Latest           Base             Span             Err
HF  00:59:43.781443  00:00:00.015666  00:59:43.765776
LF  01:00:00.085113  00:00:00.404937  00:59:59.680175  00:00:15.914399
RHF 00:59:43.781535                                    00:00:00.000092
Skew 0.995579 ; err 4421055 ppb
...
Ty  Latest           Base             Span             Err
HF  01:59:37.666395  00:00:00.015666  01:59:37.650728
LF  02:00:09.810913  00:00:00.404937  02:00:09.405975  00:00:31.755247
RHF 01:59:37.666057                                   -00:00:00.000338
Skew 0.995595 ; err 4404723 ppb
...
Ty  Latest           Base             Span             Err
HF  05:58:33.905236  00:00:00.015666  05:58:33.889570
LF  06:00:08.604980  00:00:00.404937  06:00:08.200042  00:01:34.310472
RHF 05:58:33.904338                                   -00:00:00.000898
..
Skew 0.995635 ; err 4364550 ppb
Ty  Latest           Base             Span             Err
HF  11:56:59.503922  00:00:00.015666  11:56:59.488255
LF  12:00:06.793182  00:00:00.404937  12:00:06.388244  00:03:06.899989
RHF 11:56:59.503948                                    00:00:00.000025
Skew 0.995674 ; err 4325747 ppb