My company is using TI CC2541 as a ble sensor.
We are using beacon which transmits at 150ms intervals, and our ble sensor is responsible for receiving the advertisements.
We use the latest ble stack 1.4.1.
I tried to reduce the ble power consumption by synchronizing the ble receiver to the beacon, i.e. I start the discovery of the ble receiver just before the beacon transmission, and cancel it right after it receives the transmitted packet.
Here is an example sequence of this process (at 150ms intervals):
1. BLE - starts discovery
2. Beacon - advertises packet
3. BLE - receives packet and goes to sleep for 140ms (cancelDiscovery + osal-event)
4. BLE - after 140ms - starts discovery
5. Beacon - advertises packet
6. BLE - receives packet and goes to sleep for 140ms
7. etc…
After implementing the sequence described above, I encountered the following problem -
No matter when I ask the BLE to stop discovery, it takes it at least 65ms (since start of discovery) before it stops consuming high levels of power.
Attached are pictures of the oscilloscope when performing the following sequences:
Sequence 1:
1. beacon interval 150ms (yellow).
2. ble sleeps 100ms between discoveries (blue), i.e. wakes up ~50ms before the expected advertisement.
3. ble goes to sleep (enters PM2) right after receiving the advertisement.
in this sequence you can see that it takes a relative short time period (~10ms) for the power to drop after the ble receives the transmitted packet and stops its discovery phase.
Sequence 2:
1. beacon interval 150ms (yellow)
2. ble sleeps 140ms between discoveries (blue), i.e. wakes up ~10ms before the expected advertisement.
3. ble goes to sleep (enters PM2) right after receiving the advertisement.
in this sequence you can see that it takes a longer time period (~50ms) for the power to drop after the ble receives the transmitted packet and stops its discovery phase.
My Question:
In both sequences, the power consumption of the BLE is high for ~65ms.
I expected the power consumption to be much lower in sequence 2, since I use longer sleep periods and request discovery to stop immediately after receiving the transmitted packet from the beacon.
1. Did anyone else has encountered something familiar, and can please explain the logic behind this behavior?
2. Is there a way we can guarantee that the delay period prior to entering PM2 will always be short, as can be seen on sequence 1?
Thanks in advance,
Danny