实测STM32的RTC,什么校准都不做,不断电,半年后快了13分钟

【测试结果】

TOOL的RTC时钟一直都是通过上位机这里手动校准的,这次做了了实验,测试期间不做任何校准,看看半年后效果。

测试是从去年的9月29号开始

截至到今年的4月5号,快了13分钟


【误差原因】

因为晶振对温度敏感,下面是典型的温度对晶振影响:

STM32支持LSI内部低速时钟或者LSE外置低速时钟,使用外部就要接32768Hz的晶体。

一个月的典型误差50秒左右。


【校准】

以外置RTC  DS3231为例,精度是:
Accuracy ±2ppm from 0°C to +40°C        ---- 每个月30天算的最大误差是2*10^-6 * 24 * 60 *60 * 30 = 5.184秒
Accuracy ±3.5ppm from -40°C to +85°C  ---- 每个月30天算的最大误差是3.5*10^-6 * 24 * 60 *60  * 30 = 9.072秒

使用STM32内部RTC不行,白天温度不稳定的话,当天的误差差不多就有1-2秒。主要是晶振不是温补的。

ST提供了一些方案,但是不实用:

方法1:Smooth digital calibration

这种方法使用比较麻烦,当前提供的案例需要用户使用超高精度的信号时钟,精确到几个ppm,发送这个信号给板子做校准。然后示波器测量实际的输出效果来确实是否采用这个校准值。



 

方法2: RTC时钟同步

官方提供的例子没什么参考价值,倒腾了高精度的HSE来实现。

方法3: 使用50Hz/60Hz高精度参考时钟辅助

这个实用性也有点差。

3、当前推荐方案

(1)使用外置温补晶振,但价格略高,10块钱左右:

(2)使用自带温补的RTC芯片。
 

【RTC校准软件包】

https://www.st.com/en/embedded-software/x-cube-rtc.html

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arduino STM32RTC 是一个在 Arduino 开发板上使用的实时时钟模块。它能够提供精确的时间和日期信息,并且在掉的情况下可以保持数据的准确性。但是,如果掉STM32RTC 不更新时间和日期,可能有以下几个原因。 首先,可能是 RTC 池已经耗尽或损坏。RTC 池是供实时时钟模块的,当主源断开时它能够维持 RTC 的工作。如果 RTC 池出现问题,它将无法提供持续的源给 RTC,这就会导致时间和日期不更新。您可以尝试更换 RTC 池解决这个问题。 其次,可能是设置了错误的时钟源或者配置参数。在 Arduino STM32RTC 中,您需要正确配置时钟源和其他参数,以确保 RTC 正常工作。如果配置不正确,RTC 可能不会更新时间和日期。您可以检查您的代码,确保正确配置了时钟源和参数。 此外,可能是在掉后未正确初始化 RTC,导致它无法继续更新时间和日期。在 Arduino 中,您可以通过软件或硬件重置 RTC,并确保在初始化后它能够正常更新。如果 RTC 在掉后没有正确初始化,您可以尝试在开机时重新初始化它。 最后,可能是硬件故障导致 RTC 无法更新。如果以上的解决方法都没有解决问题,那可能是 RTC 模块本身出现了故障。在这种情况下,您可以尝试更换 RTC 模块,以恢复其正常功能。 总结来说,如果 Arduino STM32RTC 在掉后不更新,可能是 RTC 池耗尽或损坏、配置错误、未正确初始化或硬件故障等原因。通过检查和修复这些问题,您应该能够解决 RTC 不更新的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值