跳到主要内容

如何保持RTC在深度睡眠模式下工作

1个月前

如何保持RTC在深度睡眠模式下工作

张贴了布伦特朱胜75分 9回复
0旋转

尊敬的先生,

我的产品每天使用多次。所以我想把它放入深睡眠状态(RAM关闭),并保持RTC一次性免费计算。

问题是RTC日历/时间寄存器在系统唤醒时为零。我已经正确设置了PD_TIM。

请你帮我解决这个问题,非常感谢你!

1个月前

PM_DIALOG.

嗨Brent_zheng,

谢谢你的问题在线。我建议首先检查SDK6.0.14和我们的“睡眠模式”教程的接近记者项目。链接如下:

http://lpccs-docs.dialog-semondile.com/da14531_sleep_mode+/deepsleep_config.html.

DA14531能够通过RTC从深睡眠模式唤醒。检查我们的步骤#9:

要使用RTC(实时时钟)计时器唤醒,请定义CFG_Deep_sleep_wakeup_rtc并拒绝唤醒机制的其余机制。

如果您仍有任何问题,请告诉我们。

谢谢,PM_DIALOG.

1个月前

布伦特朱胜 75分

尊敬的先生,

谢谢你快速回答。是的,我正在使用Prox-Reporter项目。当我定义CFG_DEEP_SLEEP_WAKEUP_RTC时,系统可以在深度睡眠中唤醒10秒。但我问题是如何在唤醒之后保持RTC日历/时间寄存。我叫RTC_GET_TIME_BCD(),从深度睡眠后唤醒后,返回返回零。

谢谢。

1个月前

布伦特朱胜 75分

尊敬的先生,

寄存器数据前往深度睡眠:

pmu_ctrl_reg:0
clk_rtcdiv_reg:40c8
RTC_CONTROL_REG:0
RTC_EVENT_FLAGS_REG:0
RTC_time_reg:80000001
RTC_CALENDAR_REG:A021010D
rtc_keep_rtc_reg:1

RTC_INTR_MIN事件从深度睡眠唤醒后:

pmu_ctrl_reg:2
clk_rtcdiv_reg:0
RTC_CONTROL_REG:0
RTC_EVENT_FLAGS_REG:0
RTC_time_reg:0
RTC_CALENDAR_REG:0
RTC_Keep_rtc_reg:0

似乎RTC正在畅销深睡眠,但有些人清除或重置唤醒程序中的寄存器。你能帮帮我吗?

谢谢。

1个月前

PM_DIALOG.

嗨Brent_zheng,

为延迟道歉。让我检查一下,我会尽快回复你。

谢谢,PM_DIALOG.

1个月前

PM_DIALOG.

嗨Brent_zheng,

如果您想在DA14531唤醒时保留RTC值,则应使用扩展睡眠模式。在此模式下,保留所有RAM块(默认配置),因此寄存器不会重置。

当DA14531唤醒时,应用程序代码将立即开始执行,并且不会丢失任何数据。

SDK6.0.14.1114提供了2个示例,以了解如何使用扩展睡眠模式以及如何唤醒DA4531。

项目\ target_apps \ ble_examples \ prox_reporter \ keil_5

项目\ target_apps \ ble_examples \ ble_app_sleepmode \ keil_5

谢谢,PM_DIALOG.

4周前

布伦特朱胜 75分

尊敬的先生,

是的,我知道延伸睡眠可以使用。我的担忧是为什么RTC可以在深度睡眠期间工作,但唤醒时清除了?因为RAM没有保留?我也尝试过睡眠,RAM保留,似乎不起作用。

布罗尔,

布伦特

接受答案!

4周前

PM_DIALOG.

嗨Brent_zheng,

请检查ARCH_SET_DEEP_SLEEP()API。进入深度睡眠模式并将代码达到WFI()后,应在唤醒时执行HW复位。在第122行中,PMU_CTRL_REG [RESET_ON_WAKEUP]设置为1,因此根据唤醒,将HW激活da14531数据表(v3.3),第5.2.1节POR,HW和SW复位

在表39中:重置信号和寄存器,RTC REGS通过POR或HW RESET复位。因此,从深睡眠到唤醒机制通过HW重置过程,因此它将复制来自OTP或辅助存储器的软件。由于这个原因,RAM数据将被覆盖,RTC将再次从零开始计数。

谢谢,PM_DIALOG.

3个星期前

布伦特朱胜 75分

好的,我有它,非常感谢!

3个星期前

PM_DIALOG.

嗨Brent_zheng,

谢谢你接受我的答案。如果您有任何后续问题,请提出新的论坛票。

谢谢,PM_DIALOG.