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

sd_radio_request() performance question

I'm building a BLE peripheral / observer multi-role application using the timeslot API and based on the example code at github.com/.../nRF51-multi-role-conn-observer-advertiser

Some profiling has revealed that sd_radio_request() takes about 3-4ms for every call, and during a BLE connection when the radio is busy, this happens much more frequently than when the device is in a more idle state (50-60 times per second rather than 1 or 2).

What is happening during those 3-4ms? Is the CPU busy, in which case I need to account for about 20-25% CPU utilisation in my power budget, or is the CPU stopped waiting on an interrupt, in which case the power usage is much lower?

Parents
  • Due to a reported issue with the Softdevice and MCU with regard to encryption the MCU is blocked by the softdevice during radio events to make sure that the softdevice gets the resources it needs. It's reported PAN ID 44 in PAN v2.4. SO for the duration of radio events, the application will be blocked out as you have noticed. This is fixed on the recent version of the nRF51822. So during the radio event the MCU will be put to sleep. Since the softdevice is actually using the radio, you will also not be granted access to the radio peripheral.

Reply
  • Due to a reported issue with the Softdevice and MCU with regard to encryption the MCU is blocked by the softdevice during radio events to make sure that the softdevice gets the resources it needs. It's reported PAN ID 44 in PAN v2.4. SO for the duration of radio events, the application will be blocked out as you have noticed. This is fixed on the recent version of the nRF51822. So during the radio event the MCU will be put to sleep. Since the softdevice is actually using the radio, you will also not be granted access to the radio peripheral.

Children
No Data