伍衍亮 梁炯輝
珠海格力電器股份有限公司 廣東珠海 519070
一般來說,MCU只需用到一個主時鐘源,但遙控器等低功耗設(shè)備的MCU不同,需要用到主時鐘源和副時鐘源,兩個時鐘源是相互獨立的。傳統(tǒng)空調(diào)器等用的遙控器都采用外部32.768 kHz晶振作為副時鐘,隨著芯片技術(shù)的逐步發(fā)展,芯片內(nèi)部低速振蕩器的質(zhì)量可靠性已經(jīng)變得很好,從產(chǎn)品的成本要求和質(zhì)量隱患等方面進(jìn)行考慮,用芯片內(nèi)部低速振蕩器來取代外部32.768 kHz晶振已經(jīng)成為趨勢。
遙控器一般采用干電池供電,最核心的技術(shù)就是低功耗,芯片處于休眠階段時,高速振蕩器和其它部件均不工作,只有副時鐘可以運(yùn)行,所以可以把功耗降到很低。晶振的精度可達(dá)±20 ppm,而芯片內(nèi)部低速振蕩器的精度只有±15%左右,若遙控器設(shè)定了定時功能,傳統(tǒng)遙控器采用外部32.768 kHz晶振,定時時間的精度則可達(dá)到±20 ppm。但采用芯片內(nèi)部振蕩器時,遙控器定時精度會由±20 ppm變?yōu)椤?5%,這會直接影響用戶的使用舒適感。
本文將以瑞薩遙控器RL78芯片為例,探討一種采用芯片內(nèi)部高速振蕩器來對芯片內(nèi)部低速振蕩器進(jìn)行定時校準(zhǔn)的方法。
RL78芯片本身特性:內(nèi)置高精度高速振蕩器(1~24 MHz),精度±0.5%;內(nèi)置低功耗低速振蕩器15 kHz,精度±15%;STOP模式下RTC(實時時鐘)可以選擇15 kHz工作。其參數(shù)如表1所示,芯片內(nèi)部高速振蕩器精度-溫度曲線如圖1所示。
圖1 芯片內(nèi)部高速振蕩器精度-溫度曲線
表1 RL78芯片內(nèi)部振蕩器參數(shù)
MCU時鐘源選擇如圖2所示:主時鐘源選擇內(nèi)部高速振蕩器,在芯片工作時運(yùn)行;副時鐘源由傳統(tǒng)的外部接晶振的方案改為使用內(nèi)部低速振蕩器,在芯片休眠時工作。
圖2 MCU時鐘源選擇框圖
舉例:內(nèi)部高速振蕩器選擇4 MHz,用外部32.768 kHz晶振時,32.768 kHz在經(jīng)過振蕩器特定數(shù)目n的脈沖后得到一個0.5 s的時間脈沖,稱之為RTC時鐘,則采用芯片內(nèi)部低速15 kHz振蕩器方案時,在軟硬件設(shè)置不更改的情況下,經(jīng)過n個脈沖后,產(chǎn)生的RTC時鐘為:
遙控器設(shè)置定時時間后,要在休眠時進(jìn)行計時,所用時基就是RTC時鐘,用內(nèi)部15 kHz低速振蕩器產(chǎn)生的RTC時間為1.09227 s,誤差為±15%,誤差太大,所以要用精度為±0.5%的高速內(nèi)部振蕩器對定時時間進(jìn)行校準(zhǔn)。
校準(zhǔn)原理是:內(nèi)部低速振蕩器精度很低,體現(xiàn)在產(chǎn)生的脈寬不能保持恒定和準(zhǔn)確,所以每隔一定時間,就啟動一次高精度振蕩器,用高精度振蕩器作為時間的標(biāo)準(zhǔn)量尺,來測量并校正低速振蕩器的脈寬從而提高定時精度。
具體校準(zhǔn)步驟介紹如下:
內(nèi)部低速15 kHz低速振蕩器作為副時鐘源,產(chǎn)生RTC為1.09227 s;
設(shè)置定時后,芯片每1.09227 s從休眠模式喚醒,進(jìn)行校準(zhǔn);
用芯片的一個定時器TIMER1來測量脈寬,時鐘源為4 MHz高速振蕩器,測量對象為15 kHz脈寬寬度,即可理解為頻率為15 kHz的方波,一個方波的時間為
連續(xù)測量31次15 kHz的方波,因一直在運(yùn)行,所以第一個方波是不完整的,故拋棄第一個方波,理論用時為:
計算同樣2 ms內(nèi)4 MHz的理論方波數(shù)為:
用定時器TIMER1在測量30個15 kHz的方波,得到實際上4 MHz的方波個數(shù),從而得到實際誤差:
以4 MHz的誤差Δ代替1.09227 s的誤差,每次累計,得到sum(Δ);
以15 min為一個校準(zhǔn)基數(shù),用15 kHz計時15 min,理論上要跑的RTC次數(shù)位:
即:休眠時運(yùn)行824個1.09227 s就是15 min;
每次測量的2 ms均累計誤差,如果sum(Δ)>8000,說明4 MHz多跑了一個2 ms,則RTC理論上要跑的次數(shù)C=C-1,sum(Δ)數(shù)值要減掉8000;
同理,如果sum(Δ)<8000,說明4 MHz少跑了一個2 ms,則C=824+1,sum(Δ)數(shù)值要加上8000。
當(dāng)實際上RTC的運(yùn)行個數(shù)等于C時,則說明15 min計時完成,其計時精度=芯片內(nèi)部高速振蕩器精度±0.5%。
表2為定時時間誤差理論值,表3為常溫下的實測數(shù)據(jù)。從測試數(shù)據(jù)可以看出,芯片的計時誤差范圍在0.3%以內(nèi),小于內(nèi)部高速振蕩器的±0.5%,說明本文所述校準(zhǔn)算法是有效的。
表2 定時時間誤差理論值
表3 常溫下實測數(shù)據(jù)
帶顯示的遙控器,在休眠時,會每隔一段時間跳出休眠喚醒芯片,跑一次主循環(huán),判斷是否要更新顯示。
原副時鐘采用外部32.768 kHz晶振的遙控器,RTC為0.5 s,即每隔0.5 s會喚醒一次芯片。
副時鐘采用內(nèi)部15 kHz低速振蕩器后,RTC為1.09227 s,即每隔
1.09227 s會喚醒一次芯片,相比較外部32.768 kHz晶振的方案,喚醒的間隔變長了,芯片處于休眠的時間變多了,故無需定時校準(zhǔn)時,芯片的待機(jī)電流會比外部32.768 kHz晶振的方案要低。從這也可以看出,若對顯示實時性要求不高的產(chǎn)品,可以適當(dāng)延長喚醒的間隔,降低待機(jī)電流,延長電源壽命。
若開定時等需要計時的功能后,采用內(nèi)部15 kHz低速振蕩器的方案就需要進(jìn)行定時校準(zhǔn),需在每個喚醒周期內(nèi)加2 ms的校準(zhǔn)程序,且校準(zhǔn)期間,芯片需多打開一個計時器TIMER1對2 ms進(jìn)行計時,故喚醒期間的電流是變大的。
以15 min為一個基準(zhǔn),理論計算待機(jī)功耗,假設(shè)校準(zhǔn)前待機(jī)6 uA,芯片喚醒時全速運(yùn)行1200 uA,則:
休眠時待機(jī)功率:900×998×6=5389200 W;
芯片喚醒期間的運(yùn)行功率:824×2×1200=1977600 W;
定時校準(zhǔn)時的功耗:(1977600+5389200)/900000 = 8.18 uA,比無校準(zhǔn)時多2.12 uA的待機(jī)電流。
考慮到采用內(nèi)部15 kHz低速振蕩器后,芯片喚醒的時間間隔是采用外部32.768 kHz晶振方案時間間隔的一倍多,綜合評估其待機(jī)功率是相當(dāng)?shù)摹?/p>
用高精度的萬用表實際測試開定時校準(zhǔn)后的待機(jī)電流情況如表4。
表4 實測待機(jī)電流情況
從測試情況可以看出,開定時校準(zhǔn)后,采用內(nèi)部15 kHz低速振蕩器方案比采用外部32.768 kHz晶振方案待機(jī)電流只升高約0.3 uA,不會對干電池壽命產(chǎn)生影響。
本文介紹了用高精度的高速振蕩器來對低精度的低速振蕩器計時進(jìn)行校準(zhǔn)的算法,校準(zhǔn)后使低速振蕩器的計時精度等于高速振蕩器的精度,解決了取消外部晶振方案的一大難題。取消外部晶振方案既降低了產(chǎn)品成本,又消除了產(chǎn)品上使用的晶振損壞隱患,降低產(chǎn)品的故障率。同時,此方案不會增大待機(jī)電流,可滿足用戶的使用需求,在遙控器等需要休眠的產(chǎn)品設(shè)計上有參考意義。