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

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

嗨对话框

我正在工作的自定义板基于DA1468x我使用命令

pm_resume_sleep();
pm_set_sleep_mode (pm_mode_hibernation);

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

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

我的理解是对吗?

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

嗨mahmed106,

请指出您在哪里使用pm_resume_sleep()和pm_set_sleep_mode() api ?为了使设备处于休眠模式,您应该使用pm_set_sleep_mode(pm_mode_hibernate)。请注意,休眠模式是一种特殊模式,用于在不耗尽电池的情况下将最终产品运送到市场。这是用于交付和存储最终产品的,我不建议您为开发或调试范围休眠。因此,如果您的产品不用于运输,g我建议您使用睡眠模式作为system_init()的延长睡眠,原因是当系统从休眠中醒来时,系统重置并从开始运行。这不是软件重置,它类似于硬件重置,因此系统将从头运行代码,并再次执行system_init()(每次680从休眠中醒来时)。此外,pm_resume_sleep将恢复系统的睡眠模式,该模式已经通过调用pm_stay_alive()被阻塞。如果您能够提供更多关于这个问题的输入,这将非常有帮助。

谢谢,PM_DIALOG.

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

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

我只想要实现这个方法。

谢谢

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

嗨mahmed106,

请指出您在代码中的何处使用pm_set_sleep_mode(pm_mode_hibernate)?正如你在最初的帖子中提到的,该设备可以进入休眠模式。但2醒来后发生了什么?你能给我一些额外的投入吗?

谢谢,PM_DIALOG.

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

我正在使用pxp_reporter和right after I enter pxp_reporter task,我检查VBAT电压使用ADC,然后我使用这两个命令。

pm_resume_sleep();
pm_set_sleep_mode (pm_mode_hibernation);

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

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

2 - VBAT必须低于DG_CONFIGBattery_LOW_LEVEL

PM_DIALOG.
离线
最后一次露面:7小时5分钟前
职员
加入: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)//设置高电源的阈值

#定义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);//通过您选择的参数

} 别的 {

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

configPRE_SLEEP_PROCESSING (sleep_period);

}

condition (vbat_level < dg_configBATTERY_LOW_LEVEL)为true,设备进入休眠模式。请注意,不应该有任何充电器插入(在VBUS上),以便设备进入休眠模式。如果您自己使用休眠模式,如果您有BLE活动或任何其他暂挂中断,系统将不能进入休眠。

谢谢,PM_DIALOG.

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

由于很多对话框。

我会执行它,如果有任何问题,我会回复这个帖子。

Mahmed106.
离线
最后一次露面:2个月3周前
加入: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.
离线
最后一次露面:7小时5分钟前
职员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

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

谢谢,PM_DIALOG.

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

嗨mahmed106,

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

谢谢,PM_DIALOG.

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

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

由于对话框

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

嗨mahmed106,

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

谢谢,PM_DIALOG.

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

我还有另一个问题,任何方法,DA14681进入休眠,如果它已经在PXP Reporter的正常循环停留休眠。在这个循环启动之前,当进入第一次在PXP记者,如果我试图使它休眠,它休眠,然后重新启动。你知道这是为什么吗?

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

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

嗨mahmed106,

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

谢谢,PM_DIALOG.

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

在pxp_reporter_task函数中

为了 (;;)

这就是我所说的主循环

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

嗨mahmed106,

我假定您显式地放置DA14681,并且在邮件循环外调用pm_set_sleep_mode(pm_mode_hibernate)。如果是,请说明你在哪里使用这个API?系统可能由于挂起的中断而不能休眠。

谢谢,PM_DIALOG.