DA14681进入休眠,但在2次唤醒之后,它不会再次去?

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

嗨对话框

我正在使用Command的DA1468X在定制板上工作

pm_resume_sleep();
pm_set_sleep_mode(pm_mode_hibernation);

把它放在冬眠中。它进入了Hiberanation和外部GPIO中断的唤醒,但在醒来后2次,它不会进入冬眠。

与休眠模式用于客户的船舶设备是逻辑的逻辑。当客户在设备上时,那么禁用此代码的此零件?

我的理解是对吗?

关键词:
设备:
PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

您能否在使用PM_RESUME_SLEEP()和PM_SET_SLEEP_MODE()API的位置?要将设备放在休眠模式下,您应该使用PM_SET_SLEEP_MODE(PM_MODE_HIBERNATION)。请注意,休眠模式是用于将最终产品运送到市场的特殊模式,而无需排出电池。这是用于运输和存储最终产品的内容,我不建议您为开发或调试范围建议休眠。因此,如果您的产品不用于发货,G我会建议您使用睡眠模式,将睡眠模式扩展到system_init()中,原因是当系统从休眠状态唤醒时,系统重置并从一开始就重置并运行。This is not a software reset, it’s like a hardware reset, so the system will run the code from the start and the system_init() will be executed again (every time that the 680 wakes up from the hibernation. Also, the pm_resume_sleep will Restore the sleep mode of the system, which has been blocked via a call to pm_stay_alive()If you could provide more inputs regarding this issue, it would be very helpful.

谢谢,PM_DIALOG.

Mahmed106.
离线
最后一次露面:2个月2周前
加入:2019-05-03 17:28
我已经明白了

我已理解,休眠是用于生产送货目的,但我想在电池达到一定电压时为我的设备添加一个功能,然后当连接充电器时唤醒它,这可以通过GPIO来检测。

我只想要实现这个方法。

谢谢

PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

您能否在您使用pm_set_sleep_mode(pm_mode_hibernation)中的代码中注明您的代码?如您在初始帖子中提到的,设备可以进入休眠模式。但是2次醒来后发生了什么事?你能为我提供一些额外的投入吗?

谢谢,PM_DIALOG.

Mahmed106.
离线
最后一次露面:2个月2周前
加入:2019-05-03 17:28
在我输入PXP之后

我在输入PXP_Reporter任务后使用PXP_reporter,我使用ADC检查VBAT电压,然后使用这两个命令。

pm_resume_sleep();
pm_set_sleep_mode(pm_mode_hibernation);

我需要要求进入休眠模式,需要满足两个条件

1 - 系统必须输入睡眠模式

2 - VBAT必须低于DG_CONFIGBattery_LOW_LEVEL

PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

由于您在设计电池时,如果电压下溢,系统将自动进入休眠模式。查看SDK,唯一的位置,在Sys_Power_Mgr.C文件中应用于Imply_Wifi()例程中的附加电池的电压电平。请搜索“电压下溢”评论。如果电池电压太低(在DG_CONFIGBattery_LOW_LEVEL下),USB_CHAR_IS_Battery_LOW()将返回true。为此,如果Low_VBAT为TRUE,则将更改为休眠的当前睡眠模式。查看freertosconfig.h文件configpre_stop_processing()宏是空的,因此您可以在此处挂钩您自己的功能。请检查以下实施以声明钩子功能:

在custom_config_qspi.h文件中,声明电池电压阈值以及电池类型:

#define dg_configbattery_low_level(4000)//设置高电源的阈值

#define dg_configbattery_type(battery_type_custom)

在freertosconfig.h文件中声明您的钩子功能。例如:

#define configpre_stop_processing(x)my_custom_callback_low_battery(x)

在您选择的文件中,例如在Main.c中声明您的钩子功能。

在sys_power_mgr.c文件中的应用程序_wifi()例程中,相应地修改configpre_stop_processing宏:

if(sleep_period == 0){

//允许添加应用程序代码的用户可定义的宏。

configpro_stop_processing(pm_current_sleep_mode);//通过您选择的参数

} 别的 {

//允许添加应用程序代码的用户可定义的宏。

configpro_sleep_processing(sleep_period);

}

条件(VBAT_LEVEL

谢谢,PM_DIALOG.

Mahmed106.
离线
最后一次露面:2个月2周前
加入:2019-05-03 17:28
谢谢很多对话框。

谢谢很多对话框。

如果有任何问题来,我会实现它,我会回复这篇文章。

Mahmed106.
离线
最后一次露面:2个月2周前
加入:2019-05-03 17:28
我尝试过的方法,但是

我尝试过的方法,但系统没有进入睡眠状态。

所以我所做的就是我已经使用了这段代码,在每6秒之后检查VBAT,如果VBAT很低,那么推荐电压。它进入睡眠。

这种方法的问题是我需要等待2-3秒钟将系统放在赫涅纳塔顿中它进入休眠并重新启动。

g_vbat_check_counter ++;
if(g_vbat_check_counter> = 10)
{
battery_source bat = ad_battery_open();
RAW_VBAT = AD_Battery_RAW_TO_MVOLT(BAT,AD_Battery_read(BAT));
if(raw_vbat <= 3000)
{
printf(“\ nhibernating \ n”);
fflush(stdout);

sys_watchdog_notify(wdog_id);
os_delay_ms(2000);//做所有事情并获得免费
pm_resume_sleep();
pm_set_sleep_mode(pm_mode_hibernation);
}
g_vbat_check_counter = 0;
}

PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

您能否每6秒删除电池阅读,并再次测试上述实施?默认情况下,电压下溢检查将在Apply_WFI()中。您使用的是哪个SDK?

谢谢,PM_DIALOG.

PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

您能否每6秒删除电池阅读,并再次测试上述实施?默认情况下,电压下溢检查将在Apply_WFI()中。

谢谢,PM_DIALOG.

Mahmed106.
离线
最后一次露面:2个月2周前
加入:2019-05-03 17:28
是的,我已经测试过这个

是的,我已经测试过这个,现在它正在完美工作。

谢谢对话框

PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

很高兴提供的实施是工作,谢谢接受我的答案。

谢谢,PM_DIALOG.

Mahmed106.
离线
最后一次露面:2个月2周前
加入:2019-05-03 17:28
我有另一个问题

我有另一个问题,通过任何方法,DA14681进入休眠并留在休眠状态,如果它是PXP报告者循环的正常情况。在启动之前在PXP Reporter中输入第1次的循环,如果我尝试使其休眠,它会休眠,然后再次重新启动。知道这个的原因,

PXP记者与示例FW相同。我正在使用该项目作为我的项目的基础项目。

PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

你能澄清你的意思是“在正常的PXP记者循环中”?

谢谢,PM_DIALOG.

Mahmed106.
离线
最后一次露面:2个月2周前
加入:2019-05-03 17:28
在pxp_reporter_task函数中

在pxp_reporter_task函数中

为了 (;;)

这是我在谈论的主循环

PM_DIALOG.
离线
最后一次露面:6小时44分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

我假设您明确地放置了DA14681和PM_SET_SLEEP_MODE(PM_MODE_HIBERNATION)被调用邮件循环。我是,你可以说明你在哪里使用这个api吗?可能由于挂起的中断,系统可能无法休眠。

谢谢,PM_DIALOG.