導(dǎo)讀
嵌入式系統(tǒng)運(yùn)行時,RTC 時鐘受多種因素干擾致延時或超時,影響系統(tǒng)時間同步與功能穩(wěn)定。本文將提出從硬件適配到軟件算法優(yōu)化的綜合性方案,以解決此問題,保障 RTC 時鐘的精確性與可靠性。
引起延時和超時的主要原因是計時系統(tǒng)使用的基準(zhǔn)頻率32.768Khz精度不夠。MCU片內(nèi)自帶的RTC功能電路由于受到芯片集成工藝的影響一般計量精度都比較差而且功耗也比較大,一般在對時鐘精度要求比較高的情況下建議直接使用外部RTC專用時鐘芯片,比如PCF8563/PCF85063,下表列出了不同RTC芯片的時鐘精度。
圖1 不同RTC芯片的時鐘精度在選擇高精度的RTC時鐘芯片后,還需注意32.768Khz晶振的匹配電容選型是否符合晶振設(shè)計手冊的要求。
圖2 晶振的匹配電容負(fù)載電容CL 的計算公式:
其中:CL1、CL2 :晶振匹配電容;Cstray:電路板雜散電容
圖3 晶體的連接方式及器件參數(shù)代入數(shù)值:CL =?[?(15*15)/(15+15)?]+5=12.5pF以上是通過硬件電路設(shè)計的優(yōu)化來提高時鐘精度,但由于生產(chǎn)工藝、芯片差異等其它不可控因素的存在,實(shí)際的時鐘精度會存在一定偏差,在時鐘頻偏穩(wěn)定的情況下還可以通過軟件方式進(jìn)一步對時鐘精度進(jìn)行補(bǔ)償,即通過設(shè)置RTC內(nèi)部的補(bǔ)償寄存器來補(bǔ)償時間。補(bǔ)償寄存器的基本原理是通過增加或者減少時鐘的修正脈沖來補(bǔ)償時間而不是改變晶振的頻率,如圖4所示,補(bǔ)償寄存器的bit7設(shè)置補(bǔ)償?shù)哪J?,bit[6:0]設(shè)置補(bǔ)償?shù)闹怠?/p>
圖4 補(bǔ)償寄存器描述
1. 補(bǔ)償值計算方法一計算流程如圖5所示。
圖5 補(bǔ)償值計算方法一
- 先用頻率計或者高精度的示波器測量PCF8563芯片pin7腳CLKOUT的頻率Fmeas(軟件要先設(shè)置pin7輸出才可測到波形);轉(zhuǎn)化成時間tmeas;計算和理想時鐘32.768KHz周期的偏差Dmeas;根據(jù)測量值計算ppm的偏移量;根據(jù)設(shè)置模式計算補(bǔ)償寄存器的值,如圖中32768.48Hz計算得到的ppm偏移量是14.648ppm,如果是模式0,則算出來的補(bǔ)償值為3.375,四舍五入取值3。
根據(jù)補(bǔ)償計算方式的算式整合簡化,若測得實(shí)際頻率F實(shí)測值,ppm的偏移量Eppm可以用以下公式快速計算:
如上補(bǔ)償校準(zhǔn)計算框架圖32768.48Hz算出來的值也是14.648。由此可見,若F實(shí)測值≥32768Hz,則算出的補(bǔ)償值≥0;若F實(shí)測值<32768Hz,則算出的補(bǔ)償值<0。
2. 補(bǔ)償值計算方法二
圖6 補(bǔ)償值計算方法二如圖6所示,±20ppm的晶振頻率每1 ppm的偏差會導(dǎo)致每天偏差0.0864 s。在沒有測試條件測頻率的情況下,可以先測試24h下的時間偏差,時間走的快補(bǔ)償正值,時間走的慢補(bǔ)償負(fù)值,比如某個RTC 24小時下測得比北京時間快7s,那么先算出ppm的偏移量Eppm = 7/0.0864 = 81.0185 ppm,然后算出模式0下補(bǔ)償寄存器的值為81.0185/4.34 = 18.67,取值19;算出模式1下補(bǔ)償寄存器的值為81.0185/4.069 = 19.9119.91,取值20。
再比如某個RTC 24小時下測得比北京時間慢7s,那么先算出ppm的偏移量Eppm = 7/0.0864 = 81.0185 ppm,然后算出模式0下補(bǔ)償寄存器的值為81.0185/4.34 = 18.67,取值-19;算出模式1下補(bǔ)償寄存器的值為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。其他精度的晶振也可以用此類方式推算。
如果產(chǎn)品對RTC精度要求較高,使用常規(guī)RTC通過以上校準(zhǔn)/補(bǔ)償仍達(dá)不到產(chǎn)品要求,就需要考慮選用高精度的RTC芯片,如RX8025T。
ZLG創(chuàng)新性CPM核心板
RZ/G2UL、RZ/G2L處理器
1.0/1.2GHz主頻
Cortex?-A55+Cortex?-M33
參考價格:99元起