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

Can ARM cortex M4 be in SLEEPDEEP when BLE (soft device) is advertising (or not)

Dear Nordic DevZone Team,

With ARM cortex M4, it is possible to go into deep sleep mode. In the Nordic nRF52832 which uses M4, it is configured for BLE advertising. I would like to save as much battery as possible. As I understand the spec, the chip boots into NRF_POWER_MODE_LOWPWR and using nrf_pwr_mgmt, this low power mode can be achieved. In this regard, I have the following questions:

  1. Is it possible to trigger the deep sleep mode in ARM cortex-M4 whenever possible, especially when the BLE advertising mode (or Soft device) is taking a break from broadcasting. The function sd_app_evt_wait() does not seem to set the SLEEPDEEP bit via SCB->SCR through the nrf_* APIs. See section 4.3.6 to enable deep sleep in Cortex-M4: http://infocenter.arm.com/help/topic/com.arm.doc.dui0553b/DUI0553.pdf
    Perhaps, can this be achieved by disabling the softDevice, then trigger SLEEPDEEP, and then re-enable the softDevice? Will this be an power efficient approach? As I only need to wake up after quite some minutes.
  2. Are the clocks in nRF52832 chipset turned off if ARM M4 goes into SLEEPDEEP? (I did not find any documentation in this regard).
  3. Will nrf_pwr_mgmt support SLEEPDEEP of the ARM cortex in the future (as it appears not be set) especially in the advertising mode?


If possible, kindly point me to suitable documentation or examples. Please correct me if my above description is incorrect.
Looking forward to your thoughts on this.

Thanks,
Tilak

Parents Reply Children
  • Hi Jorgen,

    Thank you for your inputs. Perhaps, I missed out mentioning the following in my earlier message. This is what I would like to do:

    • Wake up on timer expiry perform CPU intensive tasks/sensor measurements
    • BLE advertises a package
    • Do nothing for several minutes
    • Repeat

    We are evaluating ways to lower the CPU intensive tasks when wake up. And I would also like to lower the battery consumption during the "do nothing for several minutes". In this regard, going to System OFF state does not help me as I need to wake up when a timer expires to perform the CPU intensive tasks. From my understanding of the spec, System OFF shuts down the system's core functionality. I guess, this includes the clocks and timers as well? Although the softDevice can be shutdown via sd_power_system_off(), this shuts down everything :(
    As I understand, ARM recommends that SLEEPDEEP shutdown the clocks. At the end of the day, this is manufacturer specific and this is what I would like to know from you guys. Hence, it would be great if you can let me know the following:

    I want to shutdown everything except the timers and GPIO DETECT.

    • Going with sd_app_evt_wait() is one way but going via ARM's SLEEPDEEP could enhance battery life further but I am not sure if the timers are still running.
    • Are there any other ways to achieve this? like halt/suspend the softDevice when going to "do nothing for several minutes" and resume the softDevice upon wakeup?

    Kindly let me know your thoughts on this.

    Thanks,
    Tilak

Related