DA1468x/DA1510x PRO-Development kit中的引脚级状态在休眠后无法维护

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
userYR
离线
最后看到:3年5个月前
加入:2016-11-08 08:28
DA1468x/DA1510x PRO-Development kit中的引脚级状态在休眠后无法维护

你好,

简短描述:
根据修改测试的正式报价常规,
当P1_7引脚触发下降边缘后,演示板上的D2将会打开,
发现当cpu完全进入睡眠状态时,演示板D2会出去。
理论上引脚会保持休眠前的状态,但现在实际情况是错误的。
以上效果是由于配置问题造成的,请指正。

细节:
使用例程第八章您的第一个DA1468x应用程序- Blinky在UM-B-047-DA1468x Getting Started_4_1,
并按以下步骤成功添加LED闪烁D2程序。
需要测试的引脚在extended_sleep中可以继续保持引脚的状态,现在做以下更改:

1、设置休眠模式,如下所示:
pm_set_wakeup_mode(真正的);
pm_set_sleep_mode (pm_mode_extended_sleep);

2、检测外部中断,这里检测P1_7的下降沿会唤醒设备,如下:
#定义CFG_WKUP_DEBOUNCE_TIME (32)
#定义CFG_WKUP_COUNTER_THR (1)
#定义CFG_WKUP_ISR_PRIORITY (1)
static void prvTemplateTask (void * pvParameters)

OS_TICK_TIME xNextWakeTime;
Static 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 + +;
如果(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);



hw_extint_wkup_cb (void)

hw_wkup_reset_interrupt ();
OS_TASK_NOTIFY_FROM_ISR (task_h, (1 << 0), OS_NOTIFY_SET_BITS);

附录:
根据P147 in data Revision 2.1 15-July-2016,
章节内容休眠时的状态保留,
进入调试模式后,你会发现在下面一节中确实调用了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个月1周前
工作人员
加入:2015-06-08 34
嗨useYR,

嗨useYR,

68x有能力在设备处于睡眠模式时保持引脚状态,但当唤醒(使用BLE启用固件)配置引脚的函数重新运行,所以引脚将默认为在peri_init()函数中指示的状态,因此,我们必须实现逻辑,在休眠前“记住”pin的状态,并根据休眠前的状态在peri_init()中配置它。在你的情况下,领导应该不到8秒(这是最大的时间,设备可以在睡眠)后,将去睡觉,醒来只会初始化针没有恢复的状态销由于没有代码periph_init()来指示。

由于MT_dialog

userYR
离线
最后看到:3年5个月前
加入:2016-11-08 08:28
嗨MT_dialog,

嗨MT_dialog,

谢谢你的帮助!

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

在我们的项目中,我们希望保留外设和gpio的所有设置,一旦它们被制作,而不是在每次MCU唤醒时的外围init()中。
这样,我们相信可以节省相当多的电池电量,因为我们的项目是关于一个可穿戴设备,电池是一个关键的问题。

所以能否提供一个有这个功能的SDK给我们?

MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨userYR,

嗨userYR,

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

由于MT_dialog