Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

High power consumption of softdevice

Hello!

I am working on firmware for device that has freertos in the base and implements BLE beacon and 1 service with 7 characteristics. Everything works. But power consumption is too high.

After plenty of tests on final HW, I've created playground based on ble_app_hrs_freertos_pca10040_s132 sample project and switched to sparkfun board.

When have just FreeRTOS with no user-defined tasks, consumption is about 1uA.

After I call  ble_stack_init with code below, I got about 500uA. It is without advertising at all.

When beacon is enabled I have cca 650uA.

When GATT and beacon are working I have cca 750uA.

I measure with multimeter.

Results seems fine for me except for those 500uA after stack is initialized. Why is it so high? What can I do to lower it?

  • SDK v 15.0
  • NRF_LOG_ENABLED is 0
  • Using RELEASE configuration.
  • Tried S132 and S140 - result is the same
  • Unfortunately with NRF_LOG_ENABLED  and NRF_LOG_UART_BACKEND_ENABLED set to 0 I still have same consumption around 900uA  with ble_app_hrs_freertos_pca10040_s132 example

  • I think i found the problem.

    It is in port_cmsis_systick.c

    I do not remember the exact way i came to a conclusion that sd_app_evt_wait was consuming more power with freertos. Hence I created an internal ticket NRFFOSDK-11174 to investigate why this happened. I remembered that i was reading more power with freertos and using sd_wait function. While using WFI it was less. This technically did not make sense, but i decided to comment out sd_app_evt_wait function until i get more results. But I am not able to reproduce this anymore. So i think this comment is the problem on SDK 15.

    Please change line 231 in port_cmsis_systick.c to below

    I will try to push these changes to official SDK for the next release.

  • I tried this actualy...

    If I use  sd_app_evt_wait(), then average consumption is about 7mA (without DCDC) and 5mA (with DCDC enabled).

    Something is definitely wrong there.

  • But on Sparkfun with demo app it dropped down to cca 200uA

  • the average power consumption with connected state? debugger on?

1 2 3 4 5