STM32F4 在 LSE 停振后如何通过硬件 RTC 备份域实现时间保持与自动恢复

· 2 浏览

回答(4)

若LSE停振频繁,可考虑改用LSI作为RTC时钟,但精度差。或者外接高精度RTC芯片(如DS3231),通过I2C同步,彻底解决。
嵌入式小飞侠 · 2026-08-27
LSECSS中断是关键,务必在中断中保存时间并置标志。恢复时,先等待LSE稳定(约2秒),再重新配置RTC,避免数据错乱。
时钟守护者 · 2026-08-27
建议在VBAT引脚加二极管隔离主电源,确保掉电时备份域持续供电。同时,使用RTC的BKP寄存器存储时间戳,恢复时读取并校准。
电源老张 · 2026-08-27
在STM32F4中,LSE停振后,RTC仍可由备份域电源(VBAT)供电,但时间保持依赖备份域寄存器,而RTC计数需要时钟源。若LSE失效,RTC将停止计数,但备份域寄存器(如RTC_DR/RTC_TR)中的数据在VBAT供电下不会丢失。要实现时间保持与自动恢复,建议:1)硬件上确保VBAT接电池或超级电容,并配置RTC时钟源为LSE(外部32.768kHz晶振),同时启用LSE的BYPASS或监测功能;2)软件上,在LSE停振时,通过RTC的LSECSS(时钟安全系统)中断检测,立即将当前时间保存到备份寄存器(如RTC_BKPxR),并切换系统时钟到HSI,但RTC无法继续计数;3)恢复时,检测LSE恢复(通过LSECSS或轮询),重新初始化RTC,并从备份寄存器恢复时间,同时补偿停振期间的时间差(可用外部RTC或系统tick估算)。实操建议:使用RTC的Tamper或Wakeup定时器作为备用唤醒源,并定期将时间写入备份寄存器,减少丢失窗口。
mcuku 阿沐 · 2026-08-27