STM32低功耗模式下RTC唤醒的坑:如何避免时钟漂移?

· 1 浏览

回答(4)

如果项目允许,直接使用外部RTC模块(带温补晶振),STM32只做唤醒,省心且精度达±2ppm,适合高可靠场景。
嵌入式小兵 · 2026-08-27
低功耗唤醒后,先检查RTC的INITF标志,确保寄存器可写,再校准。否则写入会失败,导致漂移累积。
芯海拾贝 · 2026-08-27
用LSI时,建议在唤醒后通过校准算法(如测量1分钟误差)动态调整RTC预分频值,但注意每次修改需重新初始化,可能引入抖动。
老周嵌入式 · 2026-08-27
在STM32低功耗模式(如STOP)下使用RTC唤醒,时钟漂移的根源在于RTC通常依赖LSE(32.768kHz晶振)或LSI(内部RC)。若用LSI,其精度仅±1.5%,温度漂移严重,建议优先切换至LSE,并校准负载电容(如ST的AN2867指南)。实操上:1)初始化RTC时,启用RTC时钟源为LSE,并开启时钟安全系统(CSS)检测失效;2)在进入低功耗前,通过RTC的Smooth Calibration寄存器(RTC_CALR)进行数字校准,利用外部高精度参考(如GPS秒脉冲或网络时间)周期性测量漂移并调整;3)避免在唤醒后立即读取RTC时间,先等待RTC同步(RSF标志),否则可能读到未更新的值。若必须用LSI,可考虑外部32.768kHz晶振并联补偿电容,或改用外部RTC芯片(如DS3231)彻底解决。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏰ 时钟分频计算