嗨对话框
我在工作的自定义板基于DA1468x我在使用命令
pm_resume_sleep();设置睡眠模式(pm模式休眠);
把它放在冬眠中。它进入了Hiberanation和外部GPIO中断的唤醒,但在醒来后2次,它不会进入冬眠。
与休眠模式用于客户的船舶设备是逻辑的逻辑。当客户在设备上时,那么禁用此代码的此零件?
我的理解是对吗?
嗨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()被阻止如果您可以提供有关此问题的更多输入,将非常有用。
谢谢,PM_DIALOG.
我已理解,休眠是用于生产送货目的,但我想在电池达到一定电压时为我的设备添加一个功能,然后当连接充电器时唤醒它,这可以通过GPIO来检测。
我只想要实现这个方法。
谢谢
你能在你的代码中指出你在哪里使用pm\u set\u sleep\u mode(pm\u mode\u hibernation)吗?正如您在第一篇文章中提到的,设备可以进入休眠模式。但是2号醒来后发生了什么?你能给我一些额外的信息吗?
我在输入PXP_Reporter任务后使用PXP_reporter,我使用ADC检查VBAT电压,然后使用这两个命令。
我需要要求进入休眠模式,需要满足两个条件
1 - 系统必须输入睡眠模式
2 - VBAT必须低于DG_CONFIGBattery_LOW_LEVEL
?
由于您在设计电池时,如果电压下溢,系统将自动进入休眠模式。查看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\配置电池\类型(电池\类型\自定义)
在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);//通过您选择的参数
} 别的 {
配置预睡眠处理(睡眠周期);
}
条件(vbat_level 谢谢,PM_DIALOG.
谢谢很多对话框。
如果有任何问题来,我会实现它,我会回复这篇文章。
我试过上述方法,但系统没有进入睡眠。
所以我所做的就是我已经使用了这段代码,在每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模式休眠);}g\u VBAT\u check\u counter=0;}
您能否每6秒删除电池阅读,并再次测试上述实施?默认情况下,电压下溢检查将在Apply_WFI()中。您使用的是哪个SDK?
您能否每6秒删除电池阅读,并再次测试上述实施?默认情况下,电压下溢检查将在Apply_WFI()中。
是的,我已经测试了这个,现在它工作得很好。
感谢对话
很高兴提供的实施是工作,谢谢接受我的答案。
我还有一个问题,不管采用哪种方法,DA14681都会进入休眠状态,如果pxpreporter的for循环正常的话,它就会保持休眠状态。在启动时进入pxpreporter的第一次循环之前,如果我试图使它休眠,它会休眠,然后再次重新启动。你知道原因吗,
PXP记者与示例FW相同。我正在使用该项目作为我的项目的基础项目。
你能澄清你的意思是“在正常的PXP记者循环中”?
在pxp_reporter_task函数中
为了 (;;)
这是我在谈论的主循环
我假设您显式地放置DA14681,并且pm\u set\u sleep\u mode(pm\u mode\u hibernation)被称为out of mail loop。如果是的话,你能指出你在哪里使用这个API吗?可能由于挂起的中断,系统无法休眠。
嗨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()被阻止如果您可以提供有关此问题的更多输入,将非常有用。
谢谢,PM_DIALOG.
我已理解,休眠是用于生产送货目的,但我想在电池达到一定电压时为我的设备添加一个功能,然后当连接充电器时唤醒它,这可以通过GPIO来检测。
我只想要实现这个方法。
谢谢
嗨mahmed106,
你能在你的代码中指出你在哪里使用pm\u set\u sleep\u mode(pm\u mode\u hibernation)吗?正如您在第一篇文章中提到的,设备可以进入休眠模式。但是2号醒来后发生了什么?你能给我一些额外的信息吗?
谢谢,PM_DIALOG.
我在输入PXP_Reporter任务后使用PXP_reporter,我使用ADC检查VBAT电压,然后使用这两个命令。
pm_resume_sleep();
设置睡眠模式(pm模式休眠);
我需要要求进入休眠模式,需要满足两个条件
1 - 系统必须输入睡眠模式
2 - VBAT必须低于DG_CONFIGBattery_LOW_LEVEL
?
嗨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\配置电池\类型(电池\类型\自定义)
在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);//通过您选择的参数
} 别的 {
//允许添加应用程序代码的用户可定义的宏。
配置预睡眠处理(睡眠周期);
}
条件(vbat_level
谢谢,PM_DIALOG.
谢谢很多对话框。
如果有任何问题来,我会实现它,我会回复这篇文章。
我试过上述方法,但系统没有进入睡眠。
所以我所做的就是我已经使用了这段代码,在每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模式休眠);
}
g\u VBAT\u check\u counter=0;
}
嗨mahmed106,
您能否每6秒删除电池阅读,并再次测试上述实施?默认情况下,电压下溢检查将在Apply_WFI()中。您使用的是哪个SDK?
谢谢,PM_DIALOG.
嗨mahmed106,
您能否每6秒删除电池阅读,并再次测试上述实施?默认情况下,电压下溢检查将在Apply_WFI()中。
谢谢,PM_DIALOG.
是的,我已经测试了这个,现在它工作得很好。
感谢对话
嗨mahmed106,
很高兴提供的实施是工作,谢谢接受我的答案。
谢谢,PM_DIALOG.
我还有一个问题,不管采用哪种方法,DA14681都会进入休眠状态,如果pxpreporter的for循环正常的话,它就会保持休眠状态。在启动时进入pxpreporter的第一次循环之前,如果我试图使它休眠,它会休眠,然后再次重新启动。你知道原因吗,
PXP记者与示例FW相同。我正在使用该项目作为我的项目的基础项目。
嗨mahmed106,
你能澄清你的意思是“在正常的PXP记者循环中”?
谢谢,PM_DIALOG.
在pxp_reporter_task函数中
为了 (;;)
这是我在谈论的主循环
嗨mahmed106,
我假设您显式地放置DA14681,并且pm\u set\u sleep\u mode(pm\u mode\u hibernation)被称为out of mail loop。如果是的话,你能指出你在哪里使用这个API吗?可能由于挂起的中断,系统无法休眠。
谢谢,PM_DIALOG.