DA14681进入冬眠,但2次醒来后它又不去了?

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
16个职位/0个新职位
最后一篇文章
马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
DA14681进入冬眠,但2次醒来后它又不去了?

嗨对话框

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

pm_resume_USleep();
设置睡眠模式(pm模式休眠);

把它放在冬眠中。它进入抑制和唤醒与外部GPIO中断,但醒来2次后,它不会进入休眠。

休眠模式是为客户传送设备而使用的逻辑吗。当设备上的客户禁用此代码的Piece时?

我的理解正确吗?

关键词:
设备:
PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

您能指出您在哪里使用pm\u resume\u sleep()和pm\u set\u sleep\u mode()API吗?为了使设备进入休眠模式,您应该使用pm\u set\u sleep\u mode(pm\u mode\u hibernation)。请注意,休眠模式是一种特殊的模式,用于将最终产品运送到市场,而无需耗尽电池电量。这是用来装运和存储最终产品的,我不建议您在开发或调试范围内使用休眠。因此,如果您的产品不是用于装运的,我建议您使用睡眠模式作为系统的延长睡眠时间\u init(),原因是当系统从休眠状态唤醒时,系统会重新设置并从头开始运行。这不是软件重置,它就像硬件重置一样,因此系统将从一开始就运行代码,并且系统初始化()将再次执行(每次680从休眠中唤醒时)。另外,pm\u resume\u sleep将恢复系统的睡眠模式,该模式已通过调用pm\u stay\u alive()被阻止如果您可以提供有关此问题的更多输入,将非常有用。

谢谢,下午好

马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
我明白了

我已经知道冬眠是为了生产运输目的,但我想在我的设备中添加一个功能,当电池达到一定电压时休眠,然后在充电器连接时唤醒它,这可以通过GPIO检测到。

我只想用这个方法来实现这个。

谢谢

PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

你能在你的代码中指出你在哪里使用pm\u set\u sleep\u mode(pm\u mode\u hibernation)吗?正如您在第一篇文章中提到的,设备可以进入休眠模式。但是2号醒来后发生了什么?你能给我一些额外的信息吗?

谢谢,下午好

马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
就在我进入pxp之后

我正在使用pxp_reporter,在进入pxp_reporter任务之后,我使用ADC检查VBAT电压,然后使用这两个命令。

pm_resume_USleep();
设置睡眠模式(pm模式休眠);

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

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

2-VBAT必须低于dg配置电池低电平

?

PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

由于您在设计中使用的是电池,如果电压过低,系统将自动进入休眠模式。看看SDK,监控中连接电池电压水平的唯一地方是sys power\u mgr.c文件中的apply_wifi()例程。请搜索“电压欠流检查”注释。如果蓄电池电压过低(在dg配置电池电压过低)下,usb U充电器U是蓄电池电压过低()将返回true。为此,如果low_vbat为true,则当前睡眠模式将更改为休眠。查看FreeRTOSConfig.h文件configPRE\u STOP_uprocessing()宏为空,因此您可以在这里挂钩您自己的功能。请检查以下实现,以声明hook函数:

在自定义配置\u qspi.h文件中,声明电池电压阈值以及电池类型:

#define dg\u configBATTERY\u LOW_ulevel(4000)//设置电源的阈值更高

#定义dg\配置电池\类型(电池\类型\自定义)

在freetosConfig.h文件中声明hook函数。例如:

#定义configPRE\u STOP\u PROCESSING(x)my\u custom\u callback\u low\u battery(x)

在您选择的文件中,例如main.c中,声明hook函数。

在sys\u power\u mgr.c文件中的apply_wifi()例程中,相应地修改configPRE\u STOP\u处理宏:

if(睡眠时间==0){

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

configPRE\u STOP\u处理(pm\u current_usleep\u mode);//传递您选择的参数

}其他{

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

配置预睡眠处理(睡眠周期);

}

条件(vbat_level

谢谢,下午好

马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
多谢对话。

多谢对话。

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

马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
我试过以上方法,但是

我试过上述方法,但系统没有进入睡眠。

所以我所做的就是,我使用了这段代码,每6秒检查VBAT,如果VBAT电压低,建议电压。它进入睡眠。

这个方法的问题是我需要等待2-3秒,才能将系统放入hibernaton,否则它进入休眠状态并重新启动。

g_UVBAT_UCheck_U计数器+;
if(g_UVBAT_UCheck_U计数器>=10)
{
电池电源bat=ad U电池打开();
raw_UVBAT=ad U电池U raw U到U mvolt(bat,ad U电池U read(bat));
if(原始值vbat≤3000)
{
printf(\nIberNating\n“);
fflush(标准输出);

sys U看门狗U notify(wdog\u id);
OS\u DELAY\u MS(2000);//做所有事情,并获得免费
pm_resume_USleep();
设置睡眠模式(pm模式休眠);
}
g\u VBAT\u check\u counter=0;
}

PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

请您每隔6秒取出一次电池读数,然后再次测试上述实现吗?默认情况下,应用中的电压欠流检查将下降。您使用的SDK是哪一个?

谢谢,下午好

PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

请您每隔6秒取出一次电池读数,然后再次测试上述实现吗?默认情况下,应用中的电压欠流检查将下降。

谢谢,下午好

马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
是的,我已经测试过了

是的,我已经测试了这个,现在它工作得很好。

感谢对话

PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

很高兴提供的实现工作,并感谢您接受我的答复。

谢谢,下午好

马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
我还有一个问题

我还有一个问题,不管采用哪种方法,DA14681都会进入休眠状态,如果pxpreporter的for循环正常的话,它就会保持休眠状态。在启动时进入pxpreporter的第一次循环之前,如果我试图使它休眠,它会休眠,然后再次重新启动。你知道原因吗,

PXP报告器与示例FW中的报告器相同。我正在把这个项目作为我项目的基础项目。

PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

你能澄清一下“在PXP报告器的正常for循环中”的意思吗?

谢谢,下午好

马赫迈德106
离线
最后一次见到:1个月2周前
已加入:2019-05-03 17:28
在pxp\u reporter中\u任务函数中

在pxp\u reporter中\u任务函数中

对于(;;)

这是我所说的主要回路

PM\U对话框
离线
最后一次见到:17分钟前21小时
工作人员
已加入:2018-02-08 11:03
你好,mahmed106,

你好,mahmed106,

我假设您显式地放置DA14681,并且pm\u set\u sleep\u mode(pm\u mode\u hibernation)被称为out of mail loop。如果是的话,你能指出你在哪里使用这个API吗?可能由于挂起的中断,系统无法休眠。

谢谢,下午好