55c4db9c4c
The sample showed the error between the two clocks, but did not show how to use the skew to reconstruct one clock from the other and the resulting error. Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
138 lines
5.7 KiB
ReStructuredText
138 lines
5.7 KiB
ReStructuredText
.. _nrf-clock-skew-sample:
|
|
|
|
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).
|
|
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
|
|
******************************
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/boards/nrf/clock_skew
|
|
:board: nrf52dk_nrf52840
|
|
:goals: build flash
|
|
:compact:
|
|
|
|
Running:
|
|
|
|
|
|
Sample Output
|
|
=============
|
|
|
|
.. code-block:: console
|
|
|
|
*** 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
|