延长睡眠 - DA 14580

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

你好,

我正在研究一个项目,其中DA 14580设备默认在延长睡眠模式下。在接收GPIO中断时,设备广告少于1秒,然后进入扫描模式。在扫描之间,如果接收到任何数据包,则设备还向这些数据包发布。默认睡眠模式已扩展,并在User_App_Init()中调用其。
void user_app_init(){
//设置睡眠模式
ARCH_SET_SLEEP_MODE(app_default_sleep_mode);
}
现在,要输入睡眠模式和从外部中断唤醒,执行以下步骤:

void goo_to_sleep(void)
{
ARCH_BLE_EXT_WAKEUP_ON();
//配置唤醒按钮
app_button_enable();
}

静态void app_button_press_cb(void)
{
if(getBits16(sys_stat_reg,per_is_down))
{
periph_init();
}
my_state = arch_ble_ext_wakeup_get();
if(arch_ble_ext_wakeup_get()))
{
ARCH_SET_SLEEP_MODE(app_default_sleep_mode);
ARCH_BLE_FORCE_WAKEUP();
ARCH_BLE_EXT_WAKEUP_OFF();
app_easy_wakeup();
}
}

/ **
****************************************************************************************
* @brief设置按钮作为唤醒触发器
* @return void.
****************************************************************************************
* /
静态void app_button_enable(void)
{
app_easy_wakeup_set(app_wakeup_cb);
wkupct_register_callback(app_button_press_cb);
wkupct_enable_irq(wkupct_pin_select(gpio_int2_port,gpio_int2_pin),//选择pin(gpio_button_port,gpio_button_pin)
wkupct_pin_polarity(gpio_int2_port,gpio_int2_pin,wkupct_pin_polarity_high),//极性低
1,// 1事件
40);// debouncing time = 0
}

GPIO_INT2_PIN配置如下:
gpio_configurepin(gpio_int2_port,gpio_int2_pin,input_pulldown,pid_gpio,false);

以下是我们面临的问题:
现在,在接收到配置的GPIO上的高值时,调用函数app_button_press_cb()。My_state = Arch_ble_ext_WakeUp_Get()的值也是1.但是,函数,app_wakeup_cb()未被调用。

2.在中断发生之前消耗的电流,即在睡眠周期约为0.7mA,而不是2 UA。这是否意味着设备未进入扩展睡眠模式,并且存在于空闲状态?

请表明可能的可能原因。

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

嗨Wisilica,

1)您能否请检查#define exclude_dlg_msg在user_modules_config.h文件中定义为0吗?您应该将其定义为0,以便将消息放入应用程序中以由SDK处理。如果值为1,则应自己处理应用程序消息。可能,这就是App_WakeUp_CB()未被调用的原因。

2)关于电流消耗,睡眠模式中的电流应在200A周围。因此,是的,您的设备未进入扩展睡眠模式,它仍处于空闲模式。

谢谢pm_dialog.