if (long_press_detected == true)
{
handle_system_shutdown();
long_press_detected = false;
// Indicate sleep request and persist it
headerData.sleep_requested = true;
write_headerData();
// Blink LED 3 times to indicate shutdown
for (int i = 0; i < 3; i++) {
nrf_gpio_pin_set(LED_GPIO_PIN);
nrf_delay_ms(200);
nrf_gpio_pin_clear(LED_GPIO_PIN);
nrf_delay_ms(200);
}
// Final logging
NRF_LOG_INFO("Entering system off mode");
NRF_LOG_FINAL_FLUSH();
// --- Go to System OFF Mode ---
#ifdef SOFTDEVICE_PRESENT
sd_power_system_off(); // If SoftDevice enabled
#else
nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF);
#endif
}
Hello Nordic Support Team,
I am working on an nRF52-based project on a custom PCB using the E73-2G4M08S1C devboard (https://www.cdebyte.com/products/E73-2G4M08S1C).
When I call nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF), the device crashes (error at nrf_pwr_mgmt.c:418), but still enters System OFF mode.
Measured current consumption during sleep remains around 350 µA, which is much higher than expected for System OFF.
Calling sd_power_system_off() directly does not cause a crash, but the current remains similarly high.
Before sleep, I disable peripherals such as SAADC and power off external sensors. The device wakes up via a GPIO button configured as a wakeup source.
SDK version: [e.g., nRF5 SDK v17.1.0]
SoftDevice version: [e.g., S140 v7.2.0]
Board: Custom PCB with E73-2G4M08S1C module
My questions:
-
What are common causes of crashes in
nrf_pwr_mgmt_shutdown()and how to avoid them? -
Why might current consumption stay around 350 µA instead of going lower in System OFF?
-
Are there extra recommended steps to properly disable peripherals or SoftDevice before entering System OFF?
-
Could SoftDevice be causing the elevated current, and what is the best way to handle it?
I appreciate any guidance or best practices to achieve ultra-low power sleep and avoid these crashes.
Thank you!
