用GPIO破产唤醒睡眠

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
Jagath52.
离线
最后一次露面:6个月2天前
加入:2020-07-06 10:40
用GPIO破产唤醒睡眠

你好

我正在使用扩展和休眠睡眠模式的DA14695控制器。
我想用2个GPIO唤醒延伸和休眠的设备

hw_gpio_set_pin_function(Accel_Int_port,Accel_Int_pin,HW_GPIO_Mode_Input_Pulldown,HW_GPIO_FUNC_GPIO);
void wkup_init(void)
{
hw_wkup_init(null);

/ *
*设置在MS中表达的去抖时间。最大允许值为63毫秒。
*设置为0的值会禁用去抖功能。
* /
hw_wkup_set_debounce_time(10);

/ *
*启用唤醒控制器的键块生成的中断(去抖动
*电路)并注册回调函数以遵循关键事件。
* /
hw_wkup_register_key_interrupt(AccelEntointrrupt_cb,1);

/ *
*设置触发WKUP控制器的极性(上升/下降沿)。
*
* \注意控制器的键和GPIO块都应用极性
*
* /

hw_wkup_configure_pin(Accel_Int_port,Accel_Int_pin,1,HW_WKUP_PIN_STATE_HIGH);// 0->上升沿:1个下降沿1 - >板;;0 - > EVM

/ *
*添加PDC LUT条目,以便在Port0上的事件后唤醒M33核心
*这很重要,因为当设备进入睡眠时M33关闭。
* /

hw_wkup_enable_irq();
}

此密钥唤醒正按预期工作,并从延长和休眠中唤醒设备。

hw_gpio_set_pin_function(Accel_Int_port,Accel_Int_pin,HW_GPIO_Mode_Input_Pulldown,HW_GPIO_FUNC_GPIO);
void wkup_init(void)
{
hw_wkup_init(null);
/ *
*添加PDC LUT条目,以便在Port0上的事件后唤醒M33核心
*这很重要,因为当设备进入睡眠时M33关闭。
* /
hw_wkup_gpio_configure_pin(Accel_Int_Port,Accel_Int_pin,1,HW_WKUP_PIN_STATE_HIGH);
pdc_wkup_gpio_id = hw_pdc_add_entry(hw_pdc_lut_entry_val(Accel_Int_port,Accel_Int_pin,HW_PDC_Master_CM33,0));
os_assert(pdc_wkup_gpio_id!= hw_pdc_invalid_lut_index);

/ *
*触发SW的PDC LUT条目。此操作保证了pd_sys
*在应用程序无效的情况下,电源域保持在所有其他的情况下
*激活的PDC条目,用于保持M33活着。
* /
hw_pdc_set_pening(pdc_wkup_gpio_id);

/ *
*建议确认新创建的(并激活)PDC条目
*虽然没有严格需要,但由于M33将自动确认
*所有M33待处理PDC条目,然后再尝试进入睡眠。
* /
hw_pdc_acknowledge(pdc_wkup_gpio_id);
hw_wkup_register_gpio_p1_interrupt(AccelerIintrrupt_cb,2);

hw_wkup_enable_irq();
}

void accelerointrrupt_cb(void)
{
status = hw_wkup_get_status(hw_gpio_port_1);
hw_wkup_clear_status(hw_gpio_port_1,状态);

WakeUpextendedSleep = True;
hw_wkup_reset_interrupt();
pm_sleep_mode_set(pm_mode_active);

hw_gpio_set_pin_function(redledport,redledpin,hw_gpio_mode_output,hw_gpio_func_gpio;
hw_gpio_pad_latch_enable(redledport,redledpin);
hw_gpio_pad_latch_disable(redledport,redledpin);

hw_gpio_set_inactive(Redledport,Redledpin);
delay_ms(1000);
delay_ms(1000);
hw_gpio_set_active(Redledport,Redledpin);

}

但GPIO唤醒不会从休眠和扩展睡眠模式下唤醒设备。
此外,我放置LED切换在GPIO正在发生破坏回调中,呼叫正在执行并导通,但设备从睡眠中唤醒
破开后,设备挂起
我想使用两个GPIO唤醒睡眠,如何使用hw_wkup_gpio_configure_pin配置和使用两个GPIO唤醒

谢谢

Jagath.

设备:
PM_DIALOG.
离线
最后一次露面:1周5天前
职员
加入:2018-02-08 11:03
嗨Jagath52,

嗨Jagath52,

谢谢你的问题。在您初始帖子中,您已经放了2个wkup_init()函数。所以在我的理解中,第一个现在正在按预期工作。我的假设是否正确?

为了唤醒,使用Accel_Int_port / _pin,因此您需要将唤醒控制器配置为唤醒GPIO以唤醒。是正确的吗?

谢谢,PM_DIALOG.

Jagath52.
离线
最后一次露面:6个月2天前
加入:2020-07-06 10:40
你好PM_DIALOG.

你好PM_DIALOG.

是的,我想使用GPIO唤醒控制器用第二个GPIO唤醒设备。密钥唤醒控制器按预期工作。

谢谢
Jagath.

PM_DIALOG.
离线
最后一次露面:1周5天前
职员
加入:2018-02-08 11:03
嗨Jagath52m.

嗨Jagath52m.

请你检查一下DA1469X唤醒控制器来自DA1469X门户的SW示例?要启用GPIO P0子块,WKUP_GPIO_P0_BLOCK_ENABLE宏应设置为1。

请试一试,让我知道。

谢谢,PM_DIALOG.