da1468x / da1510x pro-development套件中的引脚级别状态不能在睡眠后维护

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
Useryr.
离线
最后一次露面:3年4个月前
加入:2016-11-08 08:28.
da1468x / da1510x pro-development套件中的引脚级别状态不能在睡眠后维护

你好,

简要描述;简介:
基于官方提供修改测试的例程,
P1_7引脚触发下降沿后,演示板上的D2将在,
发现当CPU完全入睡时,演示板D2将出去。
理论上的PIN将留在休眠前的状态,但现在实际情况是错误的。
以上效果是由于配置所造成的问题,请建议。

细节:
使用例程为第八章您的第一个DA1468x应用程序 - 在UM-B-047-DA1468X中闪烁入门_4_1,
并按照步骤成功添加闪烁LED D2程序。
需要在Extended_sleep中测试PIN可以继续保持引脚的状态,现在进行以下更改:

1,设置睡眠模式,如下所示:
pm_set_wakeup_mode(true);
pm_set_sleep_mode(pm_mode_extended_sleep);

2,检测外部中断,此处检测P1_7的下降沿将唤醒设备,如下:
#定义CFG_WKUP_DEBOUNCE_TIME (32)
#define cfg_wkup_counter_thr(1)
#define cfg_wkup_isr_priority(1)
静止void prvtemplateTask(空白* pvParameters)
{
os_tick_time xnextwaketime;
静态UINT32_T test_counter = 0;
uint32_t task_notify_val;

hw_gpio_configure_pin_power(hw_gpio_port_1,hw_gpio_pin_7,hw_gpio_power_v33);
hw_gpio_set_pin_function(hw_gpio_port_1,hw_gpio_pin_7,hw_gpio_mode_input_pullup,hw_gpio_func_gpio);

hw_wkup_init (NULL);
hw_wkup_set_debounce_time(cfg_wkup_debounce_time);
hw_wkup_set_counter_threshold(cfg_wkup_counter_thr);
hw_wkup_register_interrupt(hw_extint_wkup_cb,cfg_wkup_isr_priority);
hw_wkup_set_pin_state(hw_gpio_port_1,hw_gpio_pin_7,true);
hw_wkup_set_pin_trigger(hw_gpio_port_1,hw_gpio_pin_7,hw_wkup_pin_state_low);
为了 (;;)
{
os_task_notify_wait(task_h,os_task_notify_all_bits,&task_notify_val,os_task_notify_forever);
if(task_notify_val&(1 << 0))
{
test_counter ++;
if(test_counter%2){
hw_gpio_set_active(hw_gpio_port_1,hw_gpio_pin_5);
}
别的 {
hw_gpio_set_inactive (HW_GPIO_PORT_1, HW_GPIO_PIN_5);
}
}
}

}
静态void hw_extint_wkup_cb(void)
{
hw_wkup_reset_interrupt();
OS_TASK_NOTIFY_FROM_ISR(TASK_H,(1 << 0),OS_NOTIFY_SET_BITS);
}

附录:
根据数据表修订的P147 2.1 15-j00-2016,
32.4睡眠内容的状态保留部分,
进入调试模式,您发现确实在sys_power_mgr.c中调用apply_wfi函数以下部分:
if(dg_configblack_orca_ic_rev == black_orca_ic_rev_a){
hw_cpm_activate_pad_latches();
hw_cpm_power_down_periph_pd();
hw_cpm_wait_per_power_down();
}

设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨unmeryr,

嗨unmeryr,

68x的能力在设备处于休眠模式时保留引脚状态,但在唤醒时(使用BLE启用的固件),配置引脚重新运行的函数,因此引脚默认为指示的状态Periph_init()函数,因此一个人必须实现逻辑,该逻辑将在睡眠之前将“记住”引脚的状态,并根据在睡眠前的状态下在Periph_init()中配置它。在您的情况下,LED应持续不到8秒(这是设备可以留在睡眠中的最大时间)之后它将睡觉并醒来将只是初始化LED引脚而无需恢复状态引脚由于Periph_init()中没有代码来指示否则。

谢谢mt_dialog.

Useryr.
离线
最后一次露面:3年4个月前
加入:2016-11-08 08:28.
嗨mt_dialog,

嗨mt_dialog,

感谢您的帮助!

应用了您提供的方法,通过重新配置Periph_init()中使用的引脚的GPIO函数。
Now the pin state can be maintained while the MPU is sleeping.

In our project, we wish to retain all the setups of peripherals and GPIOs once they are made, not in the periph_init() every time MCU wakeup.
通过这种方式,随着我们的项目涉及可穿戴设备,我们可以保存相当大的电池电量,电池是一个关键问题。

那么你能否向我们提供这个功能的SDK?

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Useryr,

嗨Useryr,

请检查您的其他帖子https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...

谢谢mt_dialog.