在嵌入式應(yīng)用中,系統(tǒng)的功耗越來(lái)越受到人們的重視,這一點(diǎn)對(duì)于需要電池供電的便攜式系統(tǒng)尤其明顯。降低系統(tǒng)功耗,延長(zhǎng)電池的壽命,就是降低系統(tǒng)的運(yùn)行成本。
選用具有低功耗特性的單片機(jī)可以大大降低系統(tǒng)功耗??梢詮墓╇婋妷骸纹瑱C(jī)內(nèi)部結(jié)構(gòu)設(shè)計(jì)、系統(tǒng)時(shí)鐘設(shè)計(jì)和低功耗模式等幾方面考察一款單片機(jī)的低功耗特性。
1.選用盡量簡(jiǎn)單的cpu內(nèi)核
在選擇cpu內(nèi)核時(shí)切忌一味追求性能。8位機(jī)夠用,就沒(méi)有必要選用16位機(jī),選擇的原則應(yīng)該是“夠用就好”?,F(xiàn)在單片機(jī)的運(yùn)行速度越來(lái)越快,但性能的提升往往帶來(lái)功耗的增加。一個(gè)復(fù)雜的cpu集成度高、功能強(qiáng),但片內(nèi)晶體管多,總漏電流大,即使進(jìn)入stop狀態(tài),漏電流也變得不可忽視;而簡(jiǎn)單的cpu內(nèi)核不僅功耗低,成本也低。
2.選擇低電壓供電的系統(tǒng)
降低單片機(jī)的供電電壓可以有效地降低其功耗。當(dāng)前,單片機(jī)從與ttl兼容的5v供電降低到3.3v、3v、2v乃至1.8v供電。供電電壓降下來(lái),要?dú)w功于半導(dǎo)體工藝的發(fā)展。從原來(lái)的3μm工藝到現(xiàn)在的0.25、0.18、0.13μm工藝,cmos電路的門(mén)限電平閾值不斷降低。低電壓供電可以大大降低系統(tǒng)的工作電流,但是由于晶體管的尺寸不斷減小,管子的漏電流有增大的趨勢(shì),這也是對(duì)降低功耗不利的一個(gè)方面。
目前,單片機(jī)系統(tǒng)的電源電壓仍以5v為主,而過(guò)去5年中,3v供電的單片機(jī)系統(tǒng)數(shù)量增加了1倍,2v供電的系統(tǒng)也在不斷增加。再過(guò)五年,低電壓供電的單片機(jī)數(shù)量可能會(huì)超過(guò)5v電壓供電的單片機(jī)。如此看來(lái),供電電壓降低將是未來(lái)單片機(jī)發(fā)展的一個(gè)重要趨勢(shì)。
3.選擇帶有低功耗模式的系統(tǒng)
低功耗模式指的是系統(tǒng)的等待和停止模式。處于這類(lèi)模式下的單片機(jī)功耗將大大小于運(yùn)行模式下的功耗。過(guò)去傳統(tǒng)的單片機(jī),在運(yùn)行模式下有wait和stop兩條指令,可以使單片機(jī)進(jìn)入等待或停止?fàn)顟B(tài),以達(dá)到省電的目的。
等待模式下,cpu停止工作,但系統(tǒng)時(shí)鐘并不停止,單片機(jī)的外圍i/o模塊也不停止工作;系統(tǒng)功耗一般降低有限,相當(dāng)于工作模式的50%~70%。
停止模式下,系統(tǒng)時(shí)鐘也將停止,由外部事件中斷重新啟動(dòng)時(shí)鐘系統(tǒng)時(shí)鐘,進(jìn)而喚醒cpu繼續(xù)工作,cpu消耗電流可降到μa級(jí)。在停止模式下,cpu本身實(shí)際上已經(jīng)不消耗什么電流,要想進(jìn)一步減小系統(tǒng)功耗,就要盡量將單片機(jī)的各個(gè)i/o模塊關(guān)掉。隨著i/o模塊的逐個(gè)關(guān)閉,系統(tǒng)的功耗越來(lái)越小,進(jìn)入停止模式的深度也越來(lái)越深。進(jìn)入深度停止模式無(wú)異于關(guān)機(jī),這時(shí)的單片機(jī)耗電可以小于20na。其中特別要提示的是,片內(nèi)ram停止供電后,ram中存儲(chǔ)的數(shù)據(jù)會(huì)丟失,也就是說(shuō),喚醒cpu后要重新對(duì)系統(tǒng)作初始化。因此在讓系統(tǒng)進(jìn)入深度停止?fàn)顟B(tài)前,要將重要系統(tǒng)參數(shù)保存在非易失性存儲(chǔ)器中,如eeprom中。深度停止模式關(guān)掉了所有的i/o,可能的喚醒方式也很有限,一般只能是復(fù)位或irq中斷等。
保留的i/o模塊越多,系統(tǒng)允許的喚醒中斷源也就越多。單片機(jī)的功耗將根據(jù)保留喚醒方式的不同,降至1μa至幾十μa之間。例如,用戶(hù)可以保留外部鍵盤(pán)中斷,保留異步串行口(sci)接收數(shù)據(jù)中斷等來(lái)喚醒cpu。保留的喚醒方式越多,系統(tǒng)耗電也就會(huì)多一些。其他可能的喚醒方式還有實(shí)時(shí)鐘喚醒、看門(mén)狗喚醒等。停機(jī)狀態(tài)較淺的情況下,外部晶振電路還是工作的。
以r系列單片機(jī)為例:在室溫(25℃)下,不包括i/o口的負(fù)載,以2v供電,將可編程鎖相環(huán)時(shí)鐘設(shè)為16mhz(總線(xiàn)時(shí)鐘8mhz),典型電流值為2.6ma,當(dāng)溫度升高到85℃時(shí),供電電流也升高到3.6ma;而采用3v供電,這一組數(shù)據(jù)升高至3.8ma和4.8ma。用2v供電,直接使用外部晶振2mhz(總線(xiàn)時(shí)鐘1mhz)時(shí),典型運(yùn)行電流降至450μa。在等待狀態(tài)下,因時(shí)鐘并沒(méi)有停止,耗電情況和時(shí)鐘頻率有很大關(guān)系,節(jié)省的功耗有限;而進(jìn)入輕度停止(stop3),以外部中斷喚醒,電流消耗在0.5μa左右。在中度停止態(tài)(stop2),功耗可進(jìn)一步降低。使用內(nèi)部1khz的時(shí)鐘,保持1個(gè)運(yùn)行的時(shí)鐘,周期性喚醒cpu,所增加的電流約為0.3μa。在深度停止態(tài)(stop1),ram的數(shù)據(jù)也不再保留,只能通過(guò)外部復(fù)位重啟系統(tǒng),此時(shí)的電流消耗可降到20na。以上數(shù)據(jù)都是在室溫下測(cè)量所得。當(dāng)環(huán)境溫度升高到85℃時(shí),電流消耗可能增加3~5倍。
4.選擇合適的時(shí)鐘方案
時(shí)鐘的選擇對(duì)于系統(tǒng)功耗相當(dāng)敏感,設(shè)計(jì)者需要注意兩個(gè)方面的問(wèn)題:
第一是系統(tǒng)總線(xiàn)頻率應(yīng)當(dāng)盡量低。單片機(jī)內(nèi)部的總電流消耗可分為兩部分——運(yùn)行電流和漏電流。理想的cmos開(kāi)關(guān)電路,在保持輸出狀態(tài)不變時(shí),是不消耗功率的。例如,典型的cmos反相器電路,當(dāng)輸入端為零時(shí),輸出端為1,p晶體管導(dǎo)通,n晶體管截止,沒(méi)有電流流過(guò)。而實(shí)際上,由于n晶體管存在一定漏電流,且隨集成度提高,管基越薄,漏電流會(huì)加大。溫度升高,cmos翻轉(zhuǎn)閾電壓會(huì)降低,而漏電流則隨環(huán)境溫度的增高變大。在單片機(jī)運(yùn)行時(shí),開(kāi)關(guān)電路不斷由“1”變“0”、由“0”變“1”,消耗的功率是由單片機(jī)運(yùn)行引起的,我們稱(chēng)之為“運(yùn)行電流”。在兩只晶體管互相變換導(dǎo)通、截止?fàn)顟B(tài)時(shí),由于兩只管子的開(kāi)關(guān)延遲時(shí)間不可能完全一致,在某一瞬間會(huì)有兩只管子同時(shí)導(dǎo)通的情況,此時(shí)電源到地之間會(huì)有一個(gè)瞬間較大的電流,這是單片機(jī)運(yùn)行電流的主要來(lái)源。可以看出,運(yùn)行電流幾乎是和單片機(jī)的時(shí)鐘頻率成正比的,因此盡量降低系統(tǒng)時(shí)鐘的運(yùn)行頻率可以有效地降低系統(tǒng)功耗。