nRF52832 System ON Run modes of consumption

Hello,

I am working in a project using the nRF52832 SoC, on the nRF5_SDK_17.1.0, using the Softdevice S132 and working over the SES IDE. For managing the consumption I have seen some cases related tonthe System On and System Off options using Softdevice. However, what I have found is more concerned to put the device in sleep mode by different systems and waking the device using events. In my case, I should consider the nRF52832 always in Run mode using the external 32MHz crystal (I have no one external 32KHz crystal).

Is there a way to modifiy and reduce the consumption in some moments keeping the device running? For example:

- Modifying the HFCLK clock frequency dinamically while the BLE module would not be needed.

- Deactivating and reenabling dinamically internal peripherals.

Thank you very much in advance.

Regards,

Joel

Parents
  • Hi Joel,

    Run mode using the external 32MHz crystal (I have no one external 32KHz crystal).

    You can never achieve low power if the 32 MHz clock is running all the time. However, that is no concern, as the nRF has an internal 32.768 kHz low frequency RC (LFRC) oscillator that will be used when there is no 32.768 kHz crystal.

    - Modifying the HFCLK clock frequency dinamically while the BLE module would not be needed.

    No, that is not possible. However, the nRF will normally use the HFINT which is an high frequency RC oscillator when there is no need for a highly accurate clock. Whenever an accurate HF clock is needed, the HFXO will be started (this is for instance always when using the radio).

    - Deactivating and reenabling dinamically internal peripherals.

    This is a key point. The details are different depending on which SDK you are using, but in any case the CPU will normally enter a low power system ON sleep mode whenever there is nothing to do. In this case, the RTC0 is running and will wake the CPU when it is time. However, other peripherals and resources must be disabled so that they do not consume power (for instance, if the UART is kept active, it will request the HF clock, causing a high current consumption even if the CPU is sleeping).

    If you use the nRF Connect SDK you may find Power optimization and Power Management relevant. If using the nRF5 SDK, the main thread of the examples will typicall enter system ON low power mode in the main loop by calling sd_app_evt_wait(), via the power management library. This will wait for event, typically from RTC0, or any other application interrupt.

    Einar

Reply
  • Hi Joel,

    Run mode using the external 32MHz crystal (I have no one external 32KHz crystal).

    You can never achieve low power if the 32 MHz clock is running all the time. However, that is no concern, as the nRF has an internal 32.768 kHz low frequency RC (LFRC) oscillator that will be used when there is no 32.768 kHz crystal.

    - Modifying the HFCLK clock frequency dinamically while the BLE module would not be needed.

    No, that is not possible. However, the nRF will normally use the HFINT which is an high frequency RC oscillator when there is no need for a highly accurate clock. Whenever an accurate HF clock is needed, the HFXO will be started (this is for instance always when using the radio).

    - Deactivating and reenabling dinamically internal peripherals.

    This is a key point. The details are different depending on which SDK you are using, but in any case the CPU will normally enter a low power system ON sleep mode whenever there is nothing to do. In this case, the RTC0 is running and will wake the CPU when it is time. However, other peripherals and resources must be disabled so that they do not consume power (for instance, if the UART is kept active, it will request the HF clock, causing a high current consumption even if the CPU is sleeping).

    If you use the nRF Connect SDK you may find Power optimization and Power Management relevant. If using the nRF5 SDK, the main thread of the examples will typicall enter system ON low power mode in the main loop by calling sd_app_evt_wait(), via the power management library. This will wait for event, typically from RTC0, or any other application interrupt.

    Einar

Children
No Data
Related