導讀
嵌入式系統運行時,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瀏覽量
350976 -
時鐘
+關注
關注
10文章
1733瀏覽量
131446 -
RTC
+關注
關注
2文章
538瀏覽量
66460
發布評論請先 登錄
相關推薦
評論