梁世清 包海泉 季海濤 何崢嶸
(江蘇林洋電子股份有限公司,江蘇 啟東 226200)
內(nèi)置實(shí)時(shí)時(shí)鐘 (real-time clock,RTC)在電能表成本方面具有優(yōu)勢,業(yè)界一般都是采用一片時(shí)鐘芯片,如RX8025T。電能表是一種對時(shí)鐘有精確要求的產(chǎn)品,但由于晶振受溫度影響會產(chǎn)生頻偏,導(dǎo)致時(shí)鐘不精確。為了提高時(shí)鐘的精確度,設(shè)計(jì)了一種溫度補(bǔ)償晶體頻偏的RTC控制器。RTC時(shí)鐘控制器能夠?qū)崟r(shí)補(bǔ)償溫度影響帶來的頻偏誤差,從而得到精準(zhǔn)的時(shí)鐘。
外接低速時(shí)鐘信號(low speed external clock signal,LSE)的頻率一般為32768Hz。當(dāng)RTC預(yù)分頻寄存器RTC_PRLH/RTC_PRLL(一個(gè)20位的寄存器)的頻率設(shè)置為32768Hz時(shí),RTC每隔32768個(gè)時(shí)鐘周期輸出一個(gè)秒脈沖。ANTI_TAMP管腳用來測試LSE晶振經(jīng)64分頻后的頻率[1-10]。
軟件校準(zhǔn)RTC的原理如下。
①設(shè)置RTC時(shí)鐘校準(zhǔn)寄存器BKP_RTCCR;
② 每個(gè)單位能實(shí)現(xiàn)0.954×10-6(1000000/220)的精度校準(zhǔn);
③RTCCR寄存器取值范圍為0~127;
④對于32768Hz晶振,其可補(bǔ)償頻偏范圍(調(diào)慢)為:
⑤設(shè)置RTC預(yù)分頻寄存器RTC_PRLH/RTC_PRLL,如由預(yù)設(shè)值32768調(diào)整為32766;
⑥ 設(shè)置BKP_RTCCR寄存器,此時(shí),對于32768Hz晶振補(bǔ)償?shù)念l偏范圍(調(diào)快)為:
RTC校準(zhǔn)工作原理圖如圖1所示。
圖1 RTC校準(zhǔn)工作原理圖Fig.1 Operational principle of RTC calibration
基于上述原理,內(nèi)置RTC時(shí)鐘控制器可以在固定的時(shí)間窗口32 s(220/32768)補(bǔ)償晶振偏差帶來的時(shí)鐘偏差。在長期運(yùn)行的條件下,電能表時(shí)鐘精度可滿足要求;但在短期內(nèi),通過測試秒脈沖平均精度來測試RTC精度,這種方案不可取。
此外,溫度的變化會給晶體的晶振帶來偏差,所以必須根據(jù)實(shí)時(shí)環(huán)境溫度來調(diào)整頻偏,即調(diào)整RTC預(yù)分頻寄存器RTC_PRLH/RTC_PRLL和RTC時(shí)鐘校準(zhǔn)寄存器BKP_RTCCR的值。
目前,內(nèi)置RTC已經(jīng)應(yīng)用于國網(wǎng)內(nèi)置(帶載波)二代三相智能多功能電能表。RTC相關(guān)的硬件包括處理器(stm32f100vct6)自帶的RTC,3.6 V電池供電(保證在外部電源停電的情況下,RTC正常工作);在軟件方面,主要從校準(zhǔn)RTC寄存器值和校準(zhǔn)寄存器的調(diào)整這兩個(gè)方面對RTC進(jìn)行校準(zhǔn)。下面主要從軟件方面實(shí)現(xiàn)RTC的校準(zhǔn)機(jī)制。
愛普生32.768 kHz晶體頻偏隨溫度變化的曲線如圖2 所示[11]。
圖2 晶體頻偏隨溫度變化曲線Fig.2 Curve of the crystal frequency offset vs.temperature
頻偏和溫度的數(shù)學(xué)模型為:
為了擬合接近實(shí)際晶振的二次系數(shù)k,并對同一批次的晶振進(jìn)行數(shù)據(jù)采集和數(shù)據(jù)處理,在不同的溫度下(用TCN75采集環(huán)境溫度),采用頻譜儀實(shí)驗(yàn)測試ANTI_TAMP(MCU的PC.13)管腳來獲取精準(zhǔn)的數(shù)據(jù)。溫度-脈沖數(shù)-RTC晶振64分頻頻表如表1所示。
表1 晶振64分頻頻率表Tab.1 64 frequency division of crystal oscillation
根據(jù)表1的相關(guān)數(shù)據(jù),經(jīng)數(shù)據(jù)處理擬合得到k=-0.035。結(jié)合相關(guān)數(shù)學(xué)模型,可以生成一張溫度-頻偏的表。在國網(wǎng)項(xiàng)目中,生成了一張溫度范圍為-40~80℃共120個(gè)點(diǎn)的頻偏表。
根據(jù)軟件校準(zhǔn)RTC原理,在實(shí)際的應(yīng)用中,設(shè)實(shí)際調(diào)節(jié)步數(shù)為k,理論上可以分2步進(jìn)行計(jì)算,即2×106/32768≈61×10-6;設(shè)實(shí)際調(diào)節(jié)的值為 R,實(shí)際校準(zhǔn)寄存器的值為V,則有:
式中:m為通過查溫度-頻偏數(shù)據(jù)表得到的值。
設(shè)實(shí)際要調(diào)整的預(yù)分頻寄存器的值為n,則有:
三相表多功能表處理器的系統(tǒng)時(shí)鐘T=18.432 MHz,而處理器的定時(shí)器均為16位。因此,無法得到一個(gè)1 s的計(jì)數(shù)器。
為了解決這個(gè)問題,采用處理器CortexTM-M3內(nèi)核的24 位定時(shí)器(向下計(jì)數(shù))進(jìn)行500 ms定時(shí)[4],在500 ms定時(shí)器中斷過程中對處理器的秒脈沖輸出口線翻轉(zhuǎn),使秒脈沖輸出口線輸出秒脈沖。對于RTC的32768Hz晶振,一個(gè)周期(220/32768)=32 s。在32 s的周期內(nèi),每0.5 s進(jìn)行誤差計(jì)算,然后對32 s內(nèi)的累積誤差取平均,再將這個(gè)平均誤差寫入到24位定時(shí)器預(yù)分頻寄存器,這樣就能起到調(diào)整秒脈沖的目的,使時(shí)鐘更加精確。
在軟件設(shè)計(jì)方面,通過配置24位定時(shí)器500 ms產(chǎn)生定時(shí)器中斷,在500 ms定時(shí)器中斷過程中可以讀出24位定時(shí)器預(yù)分頻寄存器的值。理論上,每個(gè)500 ms讀出的值應(yīng)該是相同的,但實(shí)際上晶體的晶振會受溫度影響產(chǎn)生頻偏,所以就存在前一個(gè)500 ms讀出的值與后一個(gè)500 ms讀出的值不一致,這樣相鄰的500 ms就有一個(gè)誤差。如在第一個(gè)1 s,前一個(gè)500 ms讀出的值x0與后一個(gè)500 ms讀出的值x1之間存在一個(gè)誤差。同理,在第32 s,前一個(gè)500 ms讀出的值x62與后500 ms讀出的值x63之間也存在一個(gè)誤差,于是在32 s的周期內(nèi)就有64個(gè)這樣的誤差,稱為累積誤差和,那么要計(jì)算出0.5 s寫入24位定時(shí)器預(yù)分頻寄存器的值,只需將累積誤差和除以64。以下是具體的推導(dǎo)過程。
設(shè)500 ms定時(shí)器中斷寫入預(yù)分頻器的值為P:
設(shè)秒脈沖預(yù)分頻器的值為Q,32 s累積誤差和為S,則有:
在32 s的周期內(nèi),每個(gè)500 ms的平均誤差W為:
所以實(shí)際寫入脈沖預(yù)分頻器的值Q為:
對于同一批次的晶振,在設(shè)定好晶振旁路的電容后,通過不必進(jìn)行數(shù)據(jù)處理而直接用二次曲線的k值。內(nèi)置RTC目前已經(jīng)作為時(shí)鐘成功應(yīng)用于國網(wǎng)二代表,每天的平均誤差小于0.5 s,滿足國網(wǎng)技術(shù)條件要求,大大降低了產(chǎn)品的成本。內(nèi)置RTC控制器也可以應(yīng)用于其他對時(shí)鐘有高要求的產(chǎn)品。
[1]王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[2]張君.晶振實(shí)時(shí)測量系統(tǒng)設(shè)計(jì)[D].南京:南京航空航天大學(xué),2004.
[3]鄧乾中.自校準(zhǔn)實(shí)時(shí)時(shí)鐘RTC的研究和設(shè)計(jì)[D].武漢:華中科技大學(xué),2008.
[4]李浩,蘭鐵巖.實(shí)時(shí)時(shí)鐘芯片RTC4553原理及應(yīng)用[J].電測與儀表,2003,40(8):35 -37.
[5]賈維.實(shí)時(shí)時(shí)鐘 RTC的研究[D].西安:西安電子科技大學(xué),2009.
[6]朱永峰,陸生禮,茆邦琴.SOC設(shè)計(jì)中的多時(shí)鐘域處理[J].電子工程師,2003(11):60-61.
[7]謝修祥,王廣生.異步多時(shí)鐘系統(tǒng)的同步設(shè)計(jì)技術(shù)[J].電子工程師,2005(5):18 -20.
[8]李根岱.可校準(zhǔn)實(shí)時(shí)時(shí)鐘芯片的研究設(shè)計(jì)[D].武漢:華中科技大學(xué),2009.
[9]白天力.基于RTC技術(shù)的即時(shí)通信軟件的研究與設(shè)計(jì)[D].北京:北京郵電大學(xué),2006.
[10]曾勁.內(nèi)嵌電源管理的實(shí)時(shí)時(shí)鐘芯片的研究與設(shè)計(jì)[D].武漢:華中科技大學(xué),2009.
[11]許齊慶.晶體振蕩器溫頻特性的改善[D].西安:西安電子科技大學(xué),2010.