This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

softdevice and low frequency clock source

Hello,

I've noticed the following sentence in s132_nrf52_3.x.x release notes:

"Synthesized low frequency clock source is not tested or intended for use with the BLE stack."

Could you clarify, does this means that correct low frequency clock settings are:

  • NRF_CLOCK_LF_SRC_RC
  • NRF_CLOCK_LF_SRC_XTAL

And that NRF_CLOCK_LF_SRC_SYNTH should not be used ?

Thanks

  • Possibly helpful info from my memory and quick searches:

    • calling sd_app_evt_wait shuts down the CPU and HFCLK.
    • calling sd_app_evt_wait does NOT shut down LFCLK by default, unless you set NRF_CLOCK->TASKS_LFCLKSTOP = 1; see here LFCLK is used by timers to wake the firmware, which is why the SoftDevice doesn't power them off by default. IIRC, the SoftDevice may also need an LFCLK to function properly, and use it behind the scenes. They may be warning about using the synthesized LFCLK with the SoftDevice because a lot of what the softDevice does is driven by interrupts that may come from an LFCLK timer, and if you synthesize LFCLK, then you'll lose it when HFCLK goes down...
  • TL;DR don't use it for softdevice applications, it's not tested because there's never a need to use it, there are always just as good, lower power options available.

    Yes that's what it means, don't use it for BLE applications. It's not anything to do with HFCLK going down or losing softdevice interrupts, if you enable it it continues to run even though app event waits and other wait states as long as the LFCLK is required however Nordic doesn't test it for use with the softdevice because there's basically no practical point in using it. It's a guaranteed high power drain because the HFCLK is always on as long as the LFCLK source is needed. Since the softdevice has, built-in, all the machinery necessary to keep the very low power RC LFCLK calibrated for inaccuracy and drift at basically no cost (the HFCLK ends up being kept on fractionally longer every now and again to do the calbration) synthesized is just not a mode which anyone needs to use when they are using the softdevice.

    It may be a handy mode to use when you are NOT using the softdevice and have a standalone application which needs the LFCLK and you don't have a 32kHz crystal. In that case if you don't want to write all the RC calibration code, the synthesized mode works just fine to give you an expensive (power wise) LFCLK. You'd just enable it directly in the registers at that point.

Related