Power Off mode

Can you explain what differences (if any) there are between using sd_power_system_off() function versus NRF_POWER->POWEROFF = 1 to put the device into power off mode?

I have an application where I check the battery voltage upon power up and don't let the device fully boot up if the battery is too low. Since the soft device isn't init'd I think I am forced to use the NRF_POWER->POWEROFF register to enter power off mode.

I also monitor the battery voltage under normal operation and if it goes too low I put the device into power off mode. In this case, the soft device is init'd and I'm still just using the NRF_POWER register. Is there any downside to entering power off mode in this way? What differences are there between these two methods?

This is with an NRF51822 and S110.


  • Hi,

    The end result of sd_power_system_off() and NRF_POWER->POWEROFF = 1 is the same. When the softdevice is initialized, you should use sd_power_system_off(), which make sure the softdevice is not in the middle of a critical operation when putting the device into system off mode.

    Without the softdevice, sd_power_system_off() is not available, and it is safe to use NRF_POWER->POWEROFF = 1.

    Notice that the device is not OFF when you put it in system off mode, it is put in a low power/deep sleep state, where it can only be waked up by reset, GPIO, NFC field or LPCOMP module.

    Best regards,