Crash on nrf_pwr_mgmt_shutdown() and high current (~350 µA) in System OFF on custom PCB with E73-2G4M08S1C module

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!

Parents Reply
  • Ohhh, great, thank you. One more question about this API nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF);     this api completely puts the system in deep sleep mode, right? But should we need to turn off each peripheral before going to sleep, or it do it on its own?

    Is it possible that you give me some example code where we use this API with a BLE and TWI sensor, or any other, to achieve minimum current  0.6u

    Thank you

Children
Related