實時時鐘使用外部的32768Hz 振蕩時鐘經(jīng)由32768分頻產(chǎn)生秒脈沖。寄存器IRTC_COMPEN用來對補償進行配置;這包括補償?shù)臅r間間隔(compensation interval) 和補償值(compensation value) 。補償電路根據(jù)配置在固定的時間間隔內(nèi)(compensation interval)增加或減少振蕩周期。
補償間隔和補償值寄存器
補償間隔(compensation interval)是無符號整數(shù),取值范圍是1-255 秒;補償值(compensation value)的取值范圍是-128 to 127。增加或減少一個振蕩周期將會產(chǎn)生±30.5ppm(1/32768)的頻率偏移,所以此補償電路具有0.119ppm(interval = 255,value = 1)到3906ppm(interval = 1, value = -128)的補償能力。如果補償間隔(compensation interval)或補償值(compensation value)之一設置為0將禁止補償功能。
實時時鐘模塊在補償周期的第一秒進行補償。根據(jù)補償寄存器設置對第一秒鐘增加或減少相應的振蕩周期(compensation value),其它的秒脈沖輸出保持不變。從而導致秒脈沖之間的時長不同,但從長時間來看時間精度因得到補償而大為提高。
MG64的實時時鐘模塊(iRTC)可以配置為在引腳RTCCLKOUT輸出補償后的秒脈沖。圖2-1說明了引腳RTCCLKOUT 輸出秒脈沖的情況。秒脈沖的高電平時長為一個時鐘振蕩周期(1/32768 秒)。
在沒有啟動補償?shù)那闆r下,每個秒脈沖的周期都是T(包含32768個時鐘振蕩)。如果啟動補償并設置補償間隔為M,補償值為V,那么在每個補償周期(M秒內(nèi)),第一個秒脈沖周期會增加或減少V個時鐘振蕩,變?yōu)?2768 ±V個時鐘振蕩。第一個秒脈沖的長度與其它秒脈沖長度不同。
在圖2-1中,補償間隔為M,補償值為V。
T= 32768 個振蕩周期
Tcomp+/- =(32768 ± |V|)個振蕩周期
由補償值決定,第一秒鐘(Tcomp)被減少或增加|V| 個振蕩周期。其它的秒脈沖時長仍然是32768 個振蕩周期。
補償間隔和補償值的選擇可以根據(jù)晶體的誤差和需要的補償精度來決定。
表1中的例子說明如何根據(jù)補償誤差最小化來選擇補償間隔和補償值。
表2列出了當晶體的誤差為-2ppm ,不同補償間隔的補償值及補償后的誤差。根據(jù)公式2為不同的補償間隔計算補償值;根據(jù)公式3可以計算出各補償間隔和補償值組合補償之后的誤差。最佳補償間隔(61)和補償值(-4)是根據(jù)補償后誤差最小而選取的。
公式1用來計算引入誤差后的晶體振蕩周期,它可以由晶體的誤差定義CrystalError = Δf/f推導得出。晶體誤差一般用ppm表示,注意量綱的換算。
在實際的應用中,我們可以根據(jù)需要的補償精度來選擇補償間隔和補償值。最大補償間隔可以根據(jù)實際情況確定。例如如果每分鐘都要高精度輸出,那么補償間隔可以設置為60。
下圖為根據(jù)上述方法選取一些溫度點做補償?shù)膶嶒灲Y(jié)果。Fdev為補償之前的頻率偏差, Fcalib為補償之后的頻率偏差。從實驗數(shù)據(jù)可見,使用正確的補償間隔和補償值,MC9S08MG64的iRTC的精度完全可以控制在2ppm以內(nèi)。
評論
查看更多