How to optimize the power consumption of example 'empty_peripheral_template'

7 posts / 0 new
Last post
hardy.chen
Offline
Last seen:1 year 7 months ago
Joined:2015-03-13 04:20
How to optimize the power consumption of example 'empty_peripheral_template'

Hi,

我想开始我们的应用程序基于穰mple 'empty_peripheral_template'.
But, after doing the comparison of power consumption with example 'da14580_beacon_3.40.6', I found that there is extra 2.x mA at 'empty_peripheral_template'.
(Note: I've set the corresponding configuration for allowing empty_peripheral_template running into EXT_SLEEP mode)

So, is there anyone can comment where to optimize the power consumption of this example 'empty_peripheral_template' down to the same level as 'da14580_beacon_3.40.6'?

The measurement is done at EVB 'DA14580DEVKT-B'.
With example 'empty_peripheral_template' from SDK 5.x, the IDLE current (no RF) is around 2.x mA.
With example 'da14580_beacon_3.40.6', the IDLE current (no RF) is around 0.x mA.

Device:
MT_dialog
Offline
Last seen:2 weeks 2 days ago
Staff
Joined:2015-06-08 11:34
Hi Hardy.chen,

Hi Hardy.chen,

You can try using the codesnippet i ve mentioned on this posthttp://support.dialog-semiconductor.com/these-seems-bug-da14580dialogbea....

Thanks MT_dialog

hardy.chen
Offline
Last seen:1 year 7 months ago
Joined:2015-03-13 04:20
Hi MT_dialog,

Hi MT_dialog,

I don't quite understand your comment. To be noted that I'm working on example 'empty_peripheral_template' from SDK 5.0.2.
After checking source code in SDK 5.0.2, only one line that is found for changing the advertising interval 'ble_advtim_set' which is located at function 'lld_adv_start_patch'.

Do you want me to *ADD* the code snippet as you suggested on another post (which is trying to resolve issue of non-conn advertising while using beacon example)?
Where should I add it?

hardy.chen
Offline
Last seen:1 year 7 months ago
Joined:2015-03-13 04:20
Hi,

Hi,

I found that example 'empty_peripheral_template' is not entering sleep mode at all. This could be the reason for the extra power consumption during IDLE state.
Where are the configuration/change that is necessary for allowing sleep mode for it?

MT_dialog
Offline
Last seen:2 weeks 2 days ago
Staff
Joined:2015-06-08 11:34
Hi hardy.chen.

Hi hardy.chen.

In SDK5 you can change the sleep mode in the user_config.h file in the user_config folder. Just change the app_default_sleep_mode to any of the coresponding sleeps. I thought that your sleep was enabled (from your first post). As far as the beacon optimization, the function i told you to comment, in the previous post, is the function that sets the advertising packet interval between two ADV_xxx packet sent this is what the beacon reference design does for extra low power.

Thanks MT_dialog

hardy.chen
Offline
Last seen:1 year 7 months ago
Joined:2015-03-13 04:20
Hi MT_dialog,

Hi MT_dialog,

Yes, I've set the corresponding sleep mode on example 'empty_peripheral_template'.
But, would such extra power saving from beacon reference (sets the advertising packet interval between two ADV_xxx packet sent) be so high as 1~2mA?

My plan is to use 'empty_peripheral_template' as the base and create my own ibeacon application.
So, there are 2 necessaries:
1. low power consumption as sample 'DA14580_beacon_3.40.6'.
2. Support of both ADV_IND and ADV_NON_CONN with scan response data included.

If I understand correctly, when I try to fix 1) on example 'empty_peripheral_template', then it would then violate 2) in which following code should be comment out.
Would you elaborate it bit more about your suggestion?
--
if (app_advertise_mode == GAPM_ADV_NON_CONN)
ble_advtim_set(500);
--

MT_dialog
Offline
Last seen:2 weeks 2 days ago
Staff
Joined:2015-06-08 11:34
Hi hardy.chen,

Hi hardy.chen,

The power consumption in the app_template was so high apparently from the fact that you didn't set the sleep capability on. Now that the sleep is on, do you still have difference of about 1~2 mA?

No, the fact that you had so much difference between the template and the beacon wasn't the interval of the advertising packet, i was a bit confused with your previous post regarding theADV_SCAN_INDand yes when you try to fix 1 then you violate 2 with the current time number. Try to expand the time in function ble_advtim(500) in order your advertise to fit the listening periods for scanning data. You can use the function calculate_arch_adv_time() in order to do so and find a suitable time.

Thanks MT_dialog