Inaccurate synthesized LF clock

Hi,

During the validation of our device, we found that the RTC (synthesized from HFCLK) was quite a bit off. Instead of the expected 32.768kHz, we measured 33.047kHz. 

Do you know if we made a mistake somewhere in our tests or RTC configurations?

Hardware:

  • MCU: nRF52833 QDAAA0
  • HFCLK: External 32MHz clock, tolerance: 10ppm, stability: 15ppm
  • LFCLK: Synthesized from HF clock

Firmware:

Connect RTC to GPIOTE output with PPI. On every RTC tick, toggle a GPIO. 

  • NCS version: V2.1.0
  • RTC settings:
    • RTC inst: RTC2
    • RTC configs: default config (pre-scaler: 0, reliable: false)
    • Frequency: 32768
  • GPIOTE setting
    • Pin: 1.09
    • Drive: H0H1
    • Input connect: disconnect
    • pull: no-pull
  • Relevant setting:
    • CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y

Test setup:

The device toggles its pin every RTC pin, which creates a square wave with a frequency of LFCLK/2 (target: 16.384kHz). A frequency counter measures this signal for one hour. The frequency of the RTC is double the measured frequency.

Test result:

We measured a frequency of 16.5237 kHz, which means that the RTC has a frequency of 33.0474kHz. The frequency deviation from this signal is 297.4Hz or 8527ppm. This deviation is much higher than expected.

  • Do you know what could have caused this issue?
  • Did we make a mistake in our LFCLK settings?
  • Did we make a mistake in our test?

With kind regards,

Tim

Parents Reply
  • Hi Vidar,

    In our application, we use Bluetooth (mesh). This is a different application than used in this issue (the application used in this issue is only to validate our hardware).

    How can the application ensure (or request) that HFXO is always on? Does the snippet you shared ensure this, or is there a Softdevice API or function to do this?

    Power consumption is not an issue for us (our devices are powered).

    Kind regards,

    Tim

Children
Related