一个月前
如何保持RTC在深度睡眠模式下工作
过帐人布伦特•郑75分 9个答复尊敬的先生:,
我的产品每天要用几次。所以我想把它投入深度睡眠(ramoff)并保持RTC计数一次空闲。
问题是系统唤醒时RTC日历/时间寄存器为零。我已经正确设置了PD\U TIM。
你能帮我解决这个问题吗,非常感谢!
一个月前
尊敬的先生:,
进入深度睡眠前的寄存器数据:
PMU\u CTRL\u REG:0
时钟分区寄存器:40c8
RTC\u控制\u寄存器:0
RTC\u事件\u标志\u注册表:0
RTC\时间\注册号:80000001
RTC\U日历\U REG:a021010d
RTC\u KEEP\u RTC\u REG:1
通过RTC\u INTR\u MIN事件从深度睡眠中唤醒后:
PMU控制\U寄存器:2
时钟\u RTCDIV \u寄存器:0
RTC\u控制\u寄存器:0
RTC\u事件\u标志\u注册表:0
RTC\u时间\u寄存器:0
RTC\u日历\u注册表:0
RTC\u KEEP\u RTC\u REG:0
RTC似乎在深度睡眠中工作,但有人在唤醒过程中清除或重置了这些寄存器。你能帮我检查一下吗?
谢谢。
一个月前
你好,布伦特•郑,
如果要在DA14531唤醒时保持RTC值,应使用扩展睡眠模式。在这种模式下,所有RAM块都被保留(默认配置),因此寄存器不会被重置。
当DA14531唤醒时,应用程序代码将立即开始执行,并且不会丢失任何数据。
SDK6.0.14.1114提供了两个示例来了解如何使用延长睡眠模式以及如何唤醒DA4531。
项目\目标应用程序\ble\示例\prox\ reporter\Keil\ 5
项目\目标应用程序\ble\u示例\ble\u应用程序\u睡眠模式\Keil\u 5
谢谢,下午好
4周前
尊敬的先生:,
是的,我知道可以延长睡眠时间。我关心的是为什么RTC可以在深度睡眠时工作,但在醒来时清除?因为RAM没有被保留?我也试着用公羊深睡,似乎不起作用。
比尔,
布伦特
4周前
你好,布伦特•郑,
请检查arch\u set\u deep\u sleep()API。进入深度睡眠模式且代码到达WFI()后,应在唤醒时执行硬件重置。在第122行中,PMU\u CTRL\u REG[RESET\u ON\u WAKEUP]被设置为1,因此在唤醒时根据DA14531产品介绍(v3.3),第5.2.1节POR、HW和SW重置
在表39:复位信号和寄存器中,RTC寄存器通过POR或HW Reset复位。因此,从深度睡眠到唤醒机制需要经过硬件重置过程,因此它将从OTP或辅助内存复制软件。因此,ram数据将被覆盖,RTC将再次从零开始计数。
谢谢,下午好
一个月前
你好,布伦特•郑,
谢谢你的在线提问。我建议首先检查SDK6.0.14中的邻近报告程序项目和我们的“睡眠模式”教程。链接如下:
http://lpccs-docs.dialog-semiconductor.com/DA14531_Sleep_Mode+/deepsleep_config.html
DA14531能够通过RTC从深度睡眠模式中唤醒。检查我们的第9步:
要使用RTC(实时时钟)计时器进行唤醒,请定义CFG\u DEEP\u SLEEP\u WAKEUP\u RTC并取消对其余唤醒机制的定义。
如果您还有任何问题,请告诉我们。
谢谢,下午好