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

BLE Radio Off

Hi, 

I am developing a product using nRF2840 which performs periodic sensor readings.

Due to the nature of the sensor I'm reading from ( sensitive to noises and placement  ) , I have to make sure radio is off during sampling. 

If timing the sampling between connection interval, does that guarantees radio is powered off ? ( no radio activity what so ever ) 

Thanks, 

Ran

Parents Reply Children
  • Yes, you can do that.

    However, it has some downsides compared to using timeslots. The most important is probably what you mentioned already, that the connection will be terminate for a period. Also, initializing the SoftDevice after reading takes some time, leading to higher average current consumption if done often in addition to what follows from the fast advertising after re-configuring the SoftDevice. Lastly, many SDK libraries are not designed to handle SoftDevice being disabled and reinitialized, and this is not a scenario that is used while testing the SDK, so you might get some problems that you need to solve. Lastly, I do not see any benefit of disabling the SoftDevice instead of using a timeslot (unless you need a longer period of time without SoftDevice interruption, longer than what can be guaranteed with timeslots).

  • Einar - I'd like to better understand  : If I use MAX connection interval ( 4 sec ) - I should be able to get a 4 sec. window of radio off . If I set slave latency to N , I can even get 4 x N window of no radio . So - how come I can get only 100ms with Timeslot API ? What am I missing here ? 

  • Hi,

    100 ms is the maximum timeslot that can be granted, which is a limitation of the SoftDevice. However, it is possible to extend a timeslot repeatedly, up to 128 seconds. This should cover most use cases, but if you must know that you have the timeslot for more than 100 ms in advance, then it is not possible. In that case the only option is to disable the SoftDevice and reinitialize it when you are done with the other task.

Related