你好
我正在使用扩展和休眠睡眠模式的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.
嗨Jagath52,
谢谢你的问题。在您初始帖子中,您已经放了2个wkup_init()函数。所以在我的理解中,第一个现在正在按预期工作。我的假设是否正确?
为了唤醒,使用Accel_Int_port / _pin,因此您需要将唤醒控制器配置为唤醒GPIO以唤醒。是正确的吗?
谢谢,PM_DIALOG.
你好PM_DIALOG.
是的,我想使用GPIO唤醒控制器用第二个GPIO唤醒设备。密钥唤醒控制器按预期工作。
谢谢
Jagath.
嗨Jagath52m.
请你检查一下DA1469X唤醒控制器来自DA1469X门户的SW示例?要启用GPIO P0子块,WKUP_GPIO_P0_BLOCK_ENABLE宏应设置为1。
请试一试,让我知道。
谢谢,PM_DIALOG.