Wake up MCU from deep sleep using BLE

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

I'm developing a GAP peripheral. I want to put the MCU to deep sleep while BLE is advertising. Can use BLE to wake the MCU up when there is a connection? Thanks in advance. I really appreciate your help.

0 Likes
1 Solution
Anonymous
Not applicable

Hi,

   

Whenever the device advertises, there is an interval where you send advertisement packets, followed by a period of blanking. The Chip can go into deepsleep at the time of this blanking alone. The chip will be automatically waken up during the next adv interval. This has been implemented in all our example projects in PSoC Creator.

   

Regards,

   

- Madhu Sudhan

View solution in original post

0 Likes
4 Replies
Anonymous
Not applicable

Hi,

   

Whenever the device advertises, there is an interval where you send advertisement packets, followed by a period of blanking. The Chip can go into deepsleep at the time of this blanking alone. The chip will be automatically waken up during the next adv interval. This has been implemented in all our example projects in PSoC Creator.

   

Regards,

   

- Madhu Sudhan

0 Likes
Anonymous
Not applicable

Dear Madhu.

   

Thanks so much. I really appreciate for your help. I found that explanation in AN92584 - Designing for Low Power and Estimating Battery Life for BLE Applications (http://www.cypress.com/file/140991/download). Looks like BLESS wakes up the CPU twice every time it advertises. First when BLESS enter the active mode and again at end-of-event.

   

Suppose I want my BLE to advertise continuously without timeout and I want my program to perform a specific task after BLE advertises 10 times. Is there a reliable way to count the number of advertising? Or should I set the timeout and restart advertising after CPU finishes a specific task?

0 Likes

In your BLE component, you can go to Gap Settings -> Advertising settings. Once there,  you'd want to set the Minimum and Maximum advertising intervals to the same value, say 100ms. This isn't perfect, but each interval will be close to the same duration.

0 Likes

You could use the API CyBle_GappSetNumOfAdvPkts() for transmitting a fixed number of ADV packets.

Please note that at every ADV event , we are transmitting 3 ADV packets through the ADV channel 37/38/39.

Please refer the BLE component datasheet for more details on the API.

-Gyan

0 Likes