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

Minimizing power consumption

Here's is my device profile:

  • Running on SDK 15.2.0
  • FreeRTOS
  • Custom board, based on NRF52840
  • Powered by a 3.5Ah battery
  • Using CLI utility
  • Using the following peripherals
    • I2C
    • ADC
    • NRF CRYPTO
    • UART (app_uart with fifo)
    • NFC
  • Softdevice is integrated, but no BLE features have been implemented yet. Softdevice is therefore not enabled yet
  • A couple of sensors and a modem

The goal is to put the device in the lowest possible power savings mode (SYSTEM OFF). Here's what I've done/tried so far:

  • Stopped/disabled all peripherals (except CRYPTO and NFC; the device needs to be woken up from SYSTEM OFF via NFC). Disabling CRYPTO does not seem to have any effect.
  • Disabled power to the sensors and modem via GPIO pins
  • Tried NRF_CLOCK->TASKS_HFCLKSTOP = 0; and SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk,
  • Disabled NRF_LOGGER
  • Optimized code for size
  • FreeRTOS Tickless Idle
  • Reset GPIOS to default states
  • Stopped all timers

After implementing all these measures, the device runs at 4.5mA in SYSTEM OFF mode, using the power profiler kit. This is not optimal, as I'd like to see the current consumption in the  micro amps range.

Any insights? Any and all ideas are appreciated. Thanks

Tim

Parents Reply
  • nrf_pwr_mgmt will execute a number of handlers before entering sleep, where that is defined on how many you have registered in your application via NRF_PWR_MGMT_HANDLER_REGISTER(my_pwr_mgmt_handler, PRIO), and if any of these returns false, it will not go to sleep.

    If you do not have any handlers registered, then it'll go to systemoff directly.

     

    Don't you have any pins to wake up on? Are you relying on NFC to wakeup?

    Have you entered debug mode to see if the call to sd_power_system_off() in nrf_pwr_mgmt.c is called ?

Children
Related