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

Zephyr BLE radio RX power consumption

Hi,

We're developing a product based on Zephyr for the NRF52840 (currently seems to be Zephyr 1.13 OpenSource variant).
When doing power measurements, it seems that the radio is powered up every 100ms even though we have set advertising to 300ms.

Measurements confirm that the advertising is done every 300ms (TX has a larger power spike than RX).

I've been looking for an API that can be used to control the radio RX so that it will trigger at the same time as the advertising, but have a bit failed on this.

Any help would be appreciated, since I have not been able to find anything about this utilizing my Google skills.

BRs,

/Jocke!

Parents Reply Children
  • Are you sure that it is the RX that is causing the spike every 100ms, it could be a CPU wakeup from a timer and enabling some peripheral that could also cause the spike.  If the application is not doing anything to control the RADIO directly, it seems very likely that this 100ms power spike is NOT from the radio.

  • The measured current consumption is quite consistent with what the radio is supposed to consume in RX mode. Don't remember the exact values right now.
    The only external peripherals that we have is a free-running RTC, a magnetometer and an SPI flash. None of these consume the same amount of current or are polled from our application. It's all interrupt based.

  • The Zephyr version you are using is more than a year old. The BLE controller at time was very experimental at that time. I thought you are already made efforts to upgrade to Zephyr version 2.x.x. Do you see the same behavior in that version? I have not used version 1.x.x but in 2.x.x I have not noticed any unusual RX spikes.

    If you still want to use the older version, you need to help me out to reproduce this, so that we can attempt to reproduce it and come with a clean workaround.

  • Hi Susheel,
    Since we have now upgraded to Zephyr 2.0.99, I'm revisiting this problem.
    We still see power spikes about every 100ms. We have no timers that tick at this frequency and the power consumption seems consistent with what the specs say that the radio should consume in RX mode.
    Have attached two CSV files containing our measurements. One without advertising enabled and one with (advertising every 300ms). In the latter file, you will see higher spikes about every 300ms which is consistent with our advertising rate.

    We would appreciate your input on this.

    power_measurements.tar.gz

  • Joachim, 

    The Zephyr Kernel in itself is not adding any timers with that frequency. So it is a bit weird that you see some spikes with that frequency. I have not seen this on my end, so hard to say for me what is causing this spike. 

    Have you searched through the code to see if there are any k_sleep(100) calls or any k_delayed_work_submit_to_queue with 100ms delay?

    If not, we should try to investigate in both the application and also the Zephyr BLE stack.

Related