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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
Useryr.
离线
最后一次露面:3年5个月前
加入: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(空);
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.
离线
最后一次露面:3个月3周前
职员
加入:2015-06-08 11:34
嗨unmeryr,

嗨unmeryr,

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

谢谢mt_dialog.

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

嗨mt_dialog,

感谢您的帮助!

应用了您提供的方法,通过重新配置Periph_init()中使用的引脚的GPIO函数。
当MPU处于睡眠状态时,引脚状态可以保持。

在我们的项目中,我们希望保留外设和gpio的所有设置,一旦它们被制作,而不是在每次MCU唤醒时的外围init()中。
通过这种方式,随着我们的项目涉及可穿戴设备,我们可以保存相当大的电池电量,电池是一个关键问题。

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

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

嗨Useryr,

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

谢谢mt_dialog.