导读
嵌入式系统运行时,RTC 时钟受多种因素干扰致延时或超时,影响系统时间同步与功能稳定。本文将提出从硬件适配到软件算法优化的综合性方案,以解决此问题,保障 RTC 时钟的精确性与可靠性。
引起延时和超时的主要原因是计时系统使用的基准频率32.768Khz精度不够。MCU片内自带的RTC功能电路由于受到芯片集成工艺的影响一般计量精度都比较差而且功耗也比较大,一般在对时钟精度要求比较高的情况下建议直接使用外部RTC专用时钟芯片,比如PCF8563/PCF85063,下表列出了不同RTC芯片的时钟精度。

图1 不同RTC芯片的时钟精度
在选择高精度的RTC时钟芯片后,还需注意32.768Khz晶振的匹配电容选型是否符合晶振设计手册的要求。

图2 晶振的匹配电容负载电容CL 的计算公式:

其中:CL1、CL2 :晶振匹配电容;Cstray:电路板杂散电容

图3 晶体的连接方式及器件参数
代入数值:CL =[(15*15)/(15+15)]+5=12.5pF以上是通过硬件电路设计的优化来提高时钟精度,但由于生产工艺、芯片差异等其它不可控因素的存在,实际的时钟精度会存在一定偏差,在时钟频偏稳定的情况下还可以通过软件方式进一步对时钟精度进行补偿,即通过设置RTC内部的补偿寄存器来补偿时间。补偿寄存器的基本原理是通过增加或者减少时钟的修正脉冲来补偿时间而不是改变晶振的频率,如图4所示,补偿寄存器的bit7设置补偿的模式,bit[6:0]设置补偿的值。

图4 补偿寄存器描述
1. 补偿值计算方法
一计算流程如图5所示。

图5 补偿值计算方法一
- 先用频率计或者高精度的示波器测量PCF8563芯片pin7脚CLKOUT的频率Fmeas(软件要先设置pin7输出才可测到波形);
- 转化成时间tmeas;
- 计算和理想时钟32.768KHz周期的偏差Dmeas;
- 根据测量值计算ppm的偏移量;
- 根据设置模式计算补偿寄存器的值,如图中32768.48Hz计算得到的ppm偏移量是14.648ppm,如果是模式0,则算出来的补偿值为3.375,四舍五入取值3。
根据补偿计算方式的算式整合简化,若测得实际频率F实测值,ppm的偏移量Eppm可以用以下公式快速计算:

如上补偿校准计算框架图32768.48Hz算出来的值也是14.648。由此可见,若F实测值≥32768Hz,则算出的补偿值≥0;若F实测值<32768Hz,则算出的补偿值<0。
2. 补偿值计算方法二

图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。
-
mcu
+关注
关注
146文章
17123浏览量
350995 -
时钟
+关注
关注
10文章
1733浏览量
131451 -
RTC
+关注
关注
2文章
538浏览量
66468
发布评论请先 登录
相关推荐
如何用大数据分析来解决偶发性异常问题?
CYT2B97低功耗模式下RTC唤醒偶发性失败的原因?
嵌入式设备在远端运行,会有偶发性代码跑飞的情况,无法到现场调试的情况下如何检查出问题?
AD9129偶发性底噪过高,请问怎么解决?
分享下一些嵌入式隐形问题或偶发性问题的定位思路
交换机芯片KSZ9896偶发性死机
原子的P100下载器经常偶发性出现下载失败如何解决?
AD9129偶发性底噪过高怎么解决?
2013 款路虎神行者 2 车偶发性无法起动

盛显科技:投影融合处理器连接出现超时,该怎么办?

评论