罪恶克星 发表于 2025-2-24 18:58:16

ZLG嵌入式笔记 | RTC时钟偶发性延时或超时该怎么办?

嵌入式系统运行时,RTC 时钟受多种因素干扰致延时或超时,影响系统时间同步与功能稳定。本文将提出从硬件适配到软件算法优化的综合性方案,以解决此题目,保障 RTC 时钟的精确性与可靠性。

引起延时和超时的主要原因是计时系统使用的基准频率32.768Khz精度不够。MCU片内自带的RTC功能电路由于受到芯片集成工艺的影响一般计量精度都比较差而且功耗也比较大,一般在对时钟精度要求比较高的情况下发起直接使用外部RTC专用时钟芯片,好比PCF8563/PCF85063,下表列出了不同RTC芯片的时钟精度。
https://i-blog.csdnimg.cn/direct/aa95eafeb0974bd1a49438bcaca8f45b.png
图1 不同RTC芯片的时钟精度
在选择高精度的RTC时钟芯片后,还需注意32.768Khz晶振的匹配电容选型是否符合晶振设计手册的要求。
https://i-blog.csdnimg.cn/direct/00fec0e3eb254a0db151ee3e507fdaa0.png
图2 晶振的匹配电容
负载电容CL 的计算公式:

其中:CL1、CL2 :晶振匹配电容;Cstray:电路板杂散电容
https://i-blog.csdnimg.cn/direct/56c1d00a59754460b4f1015c0a58f484.png
图3 晶体的毗连方式及器件参数
代入数值:CL = [ (15*15)/(15+15) ]+5=12.5pF以上是通过硬件电路设计的优化来提高时钟精度,但由于生产工艺、芯片差异等其它不可控因素的存在,实际的时钟精度会存在一定偏差,在时钟频偏稳定的情况下还可以通过软件方式进一步对时钟精度进行补偿,即通过设置RTC内部的补偿寄存器来补偿时间。补偿寄存器的根本原理是通过增加或者减少时钟的修正脉冲来补偿时间而不是改变晶振的频率,如图4所示,补偿寄存器的bit7设置补偿的模式,bit设置补偿的值。
https://i-blog.csdnimg.cn/direct/387e0a6567314a1da56801efc0e0437c.png
图4 补偿寄存器描述
1. 补偿值计算方法一
计算流程如图5所示。
https://i-blog.csdnimg.cn/direct/0114a035705543cd8eda1a4c4069d825.png
图5 补偿值计算方法一

[*]先用频率计或者高精度的示波器测量PCF8563芯片pin7脚CLKOUT的频率Fmeas(软件要先设置pin7输出才可测到波形);
[*]转化成时间tmeas;
[*]计算和理想时钟32.768KHz周期的偏差Dmeas;
[*]根据测量值计算ppm的偏移量;
[*]根据设置模式计算补偿寄存器的值,如图中32768.48Hz计算得到的ppm偏移量是14.648ppm,如果是模式0,则算出来的补偿值为3.375,四舍五入取值3。
根据补偿计算方式的算式整合简化,若测得实际频率F实测值,ppm的偏移量Eppm可以用以下公式快速计算:
https://i-blog.csdnimg.cn/direct/c280ad7b09f142958c497bfb6afe257d.png
如上补偿校准计算框架图32768.48Hz算出来的值也是14.648。由此可见,若F实测值≥32768Hz,则算出的补偿值≥0;若F实测值<32768Hz,则算出的补偿值<0。
2. 补偿值计算方法二
https://i-blog.csdnimg.cn/direct/dc62dddfad6941328d0087b347306f72.png
图6 补偿值计算方法二
如图6所示,±20ppm的晶振频率每1 ppm的偏差会导致天天偏差0.0864 s。在没有测试条件测频率的情况下,可以先测试24h下的时间偏差,时间走的快补偿正值,时间走的慢补偿负值,好比某个RTC 24小时下测得比北京时间快7s,那么先算出ppm的偏移量Eppm = 7/0.0864 = 81.0185 ppm,然后算出模式0下补偿寄存器的值为81.0185/4.34 = 18.67,取值19;算出模式1下补偿寄存器的值为81.0185/4.069 = 19.9119.91,取值20。再好比某个RTC 24小时下测得比北京时间慢7s,那么先算出ppm的偏移量Eppm = 7/0.0864 = 81.0185 ppm,然后算出模式0下补偿寄存器的值为81.0185/4.34 = 18.67,取值-19;算出模式1下补偿寄存器的值为81.0185/4.069 = 19.91,取值-20。
注意:0.0864 s的计算方式为:ppm的单元是百万分之一,20ppm一天的偏差描述为(24小时*60分*60秒*20)/106 = 1.728s,所以1ppm一天的偏差时间为1.728s/20 = 0.0864 s。其他精度的晶振也可以用此类方式推算。
如果产品对RTC精度要求较高,使用常规RTC通过以上校准/补偿仍达不到产品要求,就必要考虑选用高精度的RTC芯片,如RX8025T。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: ZLG嵌入式笔记 | RTC时钟偶发性延时或超时该怎么办?