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!