reduce power consumption while connected

⚠️
Hi there.. thanks for coming to the forums. Exciting news! we’re now in the process of moving to our new forum platform that will offer better functionality and is contained within the main Dialog website. All posts and accounts have been migrated. We’re now accepting traffic on the new forum only - please POST any new threads at https://www.dialog-semiconductor.com/support . We’ll be fixing bugs / optimising the searching and tagging over the coming days.
6 posts / 0 new
Last post
1user
Offline
Last seen: 10 months 3 weeks ago
Joined: 2020-11-30 14:53
reduce power consumption while connected

I'm a bit confused about the sleepmodes. Is it correct that they are only active after the advertising is complete and no connection happened? Except for extended sleep mode which is also active between advertising intervals?

How can power consumption be reduced while connected? I want to do something very similar to the ble notify button wakeup example.

PM_Dialog
Offline
Last seen: 1 month 1 week ago
Staff
Joined: 2018-02-08 11:03
Hi There,

Hi There,

Thanks for your post. I would recommend first checking our DA14531 Sleep Mode Tutorial (HTML) tutorial.

There are SW examples demonstrating the different sleep modes too – links are provided below :

DA14531 BLE Eddystone beacon with Hibernation Or Deep Sleep Mode

DA14531 Configuring Hibernation and State-aware hibernation mode

Please also check out the ble_app_sleepmode example of the SDK6.0.14.

SDK path : 6.0.14.1114\projects\target_apps\ble_examples\ble_app_sleepmode\Keil_5

If the app_default_sleep_mode variable in user_config.h file is set to ARCH_EXT_SLEEP_ON, then the device will go into extended sleep mode between advertising or connection intervals. If the advertisement is not stopped by the application code, then it will be connectable, but it will go to sleep between advertising intervals. The sleep will be maintained when the device is connected too, so it will sleep between connections intervals.

When the advertisement has been stopped, then the system will go into permanent sleep mode, so it will not be connectable any more until start advertising again.

Additionally, to achieve a lower power consumption, the SPI flash should be powered-down.

Thanks, PM_Dialog

1user
Offline
Last seen: 10 months 3 weeks ago
Joined: 2020-11-30 14:53
Thank you, this was quite

Thank you, this was quite helpful.
In the ble_app_sleemode example if the connection parameters don't match with the ones from user_config.h the function "app_easy_gap_param_update_start(app_connection_idx)" is called after 10 seconds.

1. Is there a reason to wait 10s?

2. How can I get the connection parameters which are used effectively to check if the central accepted them?

PM_Dialog
Offline
Last seen: 1 month 1 week ago
Staff
Joined: 2018-02-08 11:03
Hi There,

Hi There,

When the DA14531 is connected with a peer device, then the user_app_connection() callback is getting triggered. The application checks if the parameters of the established connection are the preferred ones, and if not then schedule a connection parameter update request. So, it sets up a timer - app_param_update_request_timer_used – with APP_PARAM_UPDATE_REQUEST_TO (10 secs) duration. This duration could be changed.  When the timers expires, the param_update_request_timer_cb() is executed to send a parameter update request. It is up to the Central to accept it or not.

Can you please clarify your second question?

Thanks, PM_Dialog

1user
Offline
Last seen: 10 months 3 weeks ago
Joined: 2020-11-30 14:53
I meant to ask how I can

I meant to ask how I can check if the paramater update request was accepted or not.

Or in general how you can get the connection parameters in use.

PM_Dialog
Offline
Last seen: 1 month 1 week ago
Staff
Joined: 2018-02-08 11:03
Hi There,

Hi There,

The GAPC_PARAM_UPDATED_IND event is getting triggered once the connection parameters have been updated. If the master accepts the new parameters, then the GAPC_PARAM_UPDATED_IND should be sent to the application as soon as the parameters have been updated. If you check the SDK examples, you will see that the user_catch_rest_hndl() catches the GAPC_PARAM_UPDATED_IND message. So, you should be able to get the update parameter indication by catching the GAPC_PARAM_UPDATED_IND, in the app_process_catch_rest_cb() but again this indicates that the connection parameters have already changed by the master. You cannot catch the message before the new parameters are applied to the connection.

Thanks, PM_Dialog