How to put da14695 into extended sleep mode and verify it

⚠️
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
jagath52
Offline
Last seen: 1 year 6 months ago
Joined: 2020-07-06 10:40
How to put da14695 into extended sleep mode and verify it

Hello 

I am using da14695 controller with WiRa sdk and social distancing tag example and it has timer and i2c peripherals in project.

By default sleep mode used by example is extended sleep mode.

 

But the active mode and extended sleep mode is both taking same amount of current. How to verify that the controller is gone into extended sleep mode. How much max current will take in that sleep mode.

Will hardware timer and i2c peripherals and its pins has to be deinitilized before putting into extended sleep mode.

 Please mention procedure to put the controller into extended sleep mode and to verify it.

 

Thank you

Device: 
PM_Dialog
Offline
Last seen: 7 months 1 week ago
Staff
Joined: 2018-02-08 11:03
Hi jagath52,

Hi jagath52,

Please take a look at the DA1469x Power Consumption Tutorial . The purpose of this document is to describe the procedure of performing measurements of power consumption for the DA1469x family products.

Thanks, PM_Dialog

jagath52
Offline
Last seen: 1 year 6 months ago
Joined: 2020-07-06 10:40
Hello sir

Hello sir

Thank you for the replay

I want to understand how the Extended sleep mode works and the plan is to use or put the device in extended sleep mode when ever i want.

In document the extended sleep mode is in between radio events. But i want to put the device into extended sleep mode at any time and it has to wake up from extended sleep mode at any time.

I am able to put the controller into extended sleep at any time but after wake up i need to know, after wake up from extended sleep mode from where the execution starts.

The assembly language function "deep_sleep" is used for both to put the controller in sleep and to wakeing from sleep but by default timer is used for intrrupt.

I want to use gpio for wakeup 

 

Thank you

Jagath

 

PM_Dialog
Offline
Last seen: 7 months 1 week ago
Staff
Joined: 2018-02-08 11:03
Hi jagath52,

Hi jagath52,

Please take a look at the DA1469x Tutorial External Interruption tutorial from the DA1469x support page. The tutorial aims to demonstrate how to use the wake-up controller to handle a gpio interrupt and wake-up the system. The button_interrupt_cb() will be executed in handling mode.

Thanks, PM_Dialog

jagath52
Offline
Last seen: 1 year 6 months ago
Joined: 2020-07-06 10:40
Hello PM_Dialog

Hello PM_Dialog

I am referring the same tutorial for external interruption from exteneded sleep mode.

I am getting stuck after waking up from extended sleep mode.

During normal controller operation the sleep mode will be in active mode which is set in system_init() -- pm_sleep_mode_set(pm_mode_active)

Whenever required i want to change the sleep mode to "pm_mode_extended_sleep" using same api. In this case still advertisment is present.

So what i have done is whenever i want to switch to extended sleep mode i am suspending the sdt_ble_events_task(), stopping the advertisment then switching to exteneded sleep mode pm_sleep_mode_set(pm_mode_extended_sleep). Then in callback which is used to wakeup from extended sleep mode i have to resume the task and start the advertisement. 

But after waking up from extended sleep mode if i call ble_gap_adv_start(GAP_CONN_MODE_UNDIRECTED) and OS_TASK_RESUME(handle) the system is hangng. 

in sdt_ble_events_task() function i am enabling this block at any time so that controller goes to extended sleep mode 

{
                   ble_gap_adv_stop();
                   pm_set_wakeup_mode(false);
                   pm_sleep_mode_set(pm_mode_extended_sleep);
                   pm_set_sys_wakeup_mode(pm_sys_wakeup_mode_slow)
                   OS_TASK_SUSPEND(OS_GET_CURRENT_TASK());

}
 

I am using wakeup from gpio

void button_interrupt_cb(void)
{
        hw_wkup_reset_interrupt();
        pm_sleep_mode_set(pm_mode_active);
        ble_gap_adv_data_set(sizeof(adv_data), adv_data, 0, NULL);
        ble_gap_adv_start(GAP_CONN_MODE_UNDIRECTED);
        OS_TASK_RESUME(handle);
}
 

Thank you
Jagath

PM_Dialog
Offline
Last seen: 7 months 1 week ago
Staff
Joined: 2018-02-08 11:03
Hi jagath52

Hi jagath52

>>>I am getting stuck after waking up from extended sleep mode.

Could you please clarify this statement?

Additionally, I understood that you are using the WiRa, so did you modified the code to stop advertising and put the device into sleep mode?

Can you please share a screenshot from the PowerProfiler?  Please also probe the GPIO that you want to wake up to check if it has the correct voltage level.

Thanks, PM_Dialog