|
隨著集成電路技術(shù)和工藝的飛速發(fā)展,真正單片化的單片機(jī)已經(jīng)成為主流產(chǎn)品。它的絕在部分資源都在單片機(jī)芯片內(nèi)部;過去需要用外部擴(kuò)展器件才能實(shí)現(xiàn)的功能,如ROM、RAM、A/D、D/A、數(shù)字量I/O、顯示驅(qū)動(dòng)等功能,現(xiàn)在在單片機(jī)內(nèi)部就可以完成。單片機(jī)真正單片化,省去了大量的硬件開發(fā)調(diào)試工作,大大地提高了工作效率;系統(tǒng)先天的可靠性、抗干擾能力得到了顯著的改善。經(jīng)實(shí)驗(yàn)測(cè)試,實(shí)現(xiàn)同樣功能的系統(tǒng),采用單片方式比總線擴(kuò)展方式具有更多的優(yōu)點(diǎn)。系統(tǒng)不僅功能強(qiáng)、性能可靠、成本降低,而且進(jìn)一步微型化和便攜化。因此,使用電池作為系統(tǒng)的電源也越來越普遍。系統(tǒng)的最小電源消除和最大的電池壽命就成為主要的技術(shù)要求。例如1999年的多國(guó)儀器儀表展覽會(huì)上,不止一家國(guó)外公司展出了使用電池的工業(yè)流量計(jì),5~10年都不必更換電池和進(jìn)行維護(hù)。所以低功耗單睡要同的應(yīng)用有著非常廣闊的天地。低功耗單片機(jī)應(yīng)用符合現(xiàn)代電子終端產(chǎn)品的要求:便攜、節(jié)能、可靠等。目前國(guó)際上先進(jìn)的單片機(jī)生產(chǎn)廠商,如日本NEC、富士通、愛普森和美國(guó)TI等公司都采用了低功耗設(shè)計(jì)。筆者在一些應(yīng)用中使用了日本NEC公司的78k0和78K0S系列的單片機(jī),其休眠狀態(tài)下的功耗電流可達(dá)到0.05~0.01μA。 1 單片機(jī)的低功耗設(shè)計(jì)技術(shù) 1.1高集成度的完全單片化設(shè)計(jì) 將很多外圍硬件集成到了CPU芯片中,增大硬件冗余。內(nèi)部以低功耗、低電壓的原則設(shè)計(jì),這給單片機(jī)的低功耗設(shè)計(jì)提供了很強(qiáng)的支持。 1.2內(nèi)部電路可選擇性工作 通過特殊功能寄存器選擇使用不同的功能電路,即依靠軟件選擇其中不同的硬件;對(duì)于不使用的功能使其停止工作,以減少無效功耗。 1.3寬電源電壓范圍 先進(jìn)的單片機(jī)芯片工藝特別決定了單片機(jī)在很寬的電源電壓范圍內(nèi)部能正常工作。例如,NEC公司的78K0和78K0S系列的單片機(jī),可以在1.8V~5.5V電源電壓范圍內(nèi)正常工作。單片機(jī)供電電壓范圍的放寬,可以進(jìn)一步拓寬單片機(jī)的應(yīng)用領(lǐng)域,尤其是便攜式或掌上型儀器或裝置,可以放心地使用電池作為電源,而不必關(guān)心電過程電壓曲線是否平衡、是否會(huì)影響單片機(jī)正常工作,更不必因電池供電而專門增加穩(wěn)壓電路,從而可減少大約1/3的功率消耗。 1.4具有高速和低速兩套時(shí)鐘 系統(tǒng)運(yùn)行頻率越高,電源功耗就會(huì)相應(yīng)增大。為更好地降低功耗,內(nèi)部集成了兩套獨(dú)立的時(shí)鐘系統(tǒng),高速的主時(shí)鐘和32.768kHz的副時(shí)鐘。也可在滿足功能需要的情況下按一定比例降低CPU主時(shí)鐘頻率,以降低電源功耗。在不需要高速運(yùn)行的情況下,可選用副時(shí)鐘低速運(yùn)行,進(jìn)一步降低功耗。通過軟件對(duì)特殊功能寄存器賦值可改變CPU的時(shí)鐘頻率,或進(jìn)行主時(shí)鐘和副時(shí)鐘切換。 1.5在線改變CPU的工作頻率 可根據(jù)CPU處理任務(wù)的不同,在外部振蕩器不變的情況下,通過程序改變處理器時(shí)鐘控制寄存器PCC的值,在線改變CPU的頻率。CPU在幾種不同頻率下工作的電源功耗比較如圖1所示。 1.6后備功能 后備功能是為了進(jìn)一步降低系統(tǒng)功耗。CPU用主時(shí)鐘時(shí)有HALT(待機(jī))模式和STOP(休眠)模式,用副系統(tǒng)時(shí)鐘時(shí)有副時(shí)鐘運(yùn)行模式和HALT模式。如表1所示。 表1NEC單片機(jī)后備模式 時(shí)鐘源模描述 主系統(tǒng)時(shí)鐘HALTCPU時(shí)鐘關(guān)閉,外圍時(shí)鐘工作 STOP主時(shí)鐘停振,除中斷控制器外的其它外圍電路停止工作 副時(shí)鐘系統(tǒng)副時(shí)鐘運(yùn)行主時(shí)鐘停振,CPU使用副時(shí)鐘,鐘表定時(shí)器工作,其它外圍電路停止工作 HALT主時(shí)鐘停振,CPU時(shí)鐘關(guān)閉,鐘表定時(shí)器工作,其它外圍電路停止工作 1.7內(nèi)部鐘表定時(shí)器 NCE單片機(jī)內(nèi)部提供了時(shí)鐘定時(shí)器,每隔0.5s產(chǎn)生一次中斷。在系統(tǒng)處于休眠狀態(tài)時(shí),仍可定時(shí)被喚醒。對(duì)于單片機(jī)只須間歇工作、但又需要實(shí)時(shí)計(jì)時(shí)功能的應(yīng)用場(chǎng)合,提供了非常有效的節(jié)能方法。CPU在不工作時(shí)可進(jìn)入STOP模式或HALT模式,進(jìn)入低功耗的后備功能狀態(tài)。當(dāng)時(shí)鐘中斷到來時(shí),CPU回到正常工作狀態(tài),進(jìn)入時(shí)鐘中斷處理程序做時(shí)鐘更新處理,然后再進(jìn)入后備功能狀態(tài)。 2 單片機(jī)應(yīng)用系統(tǒng)中的低功耗設(shè)計(jì)主要注意的問題 (1)系統(tǒng)中單片機(jī)以外的其它電路器件盡可能選用靜態(tài)功耗低的器件,如選用CMOS電路芯片。 (2)外部設(shè)備的選擇也要盡可能支持低功耗設(shè)計(jì)。 (3)設(shè)計(jì)外部中斷喚醒電路,使單片機(jī)在等待時(shí)可進(jìn)入休眠模式或待機(jī)模式,需要時(shí)由外部中斷信號(hào)喚醒。 (4)設(shè)計(jì)外部器件的電源控制電路,使外部器件或設(shè)備在不工作時(shí)關(guān)斷供電,減少無效功耗。 (5)設(shè)計(jì)充分利用系統(tǒng)低功耗特點(diǎn)的軟件。 3 在線改變CPU的時(shí)鐘頻率以降低功力量的C語言程序舉例 CPU在不需要高速運(yùn)行時(shí),可設(shè)置在較低的時(shí)鐘頻率下工作,在運(yùn)行過程中可根據(jù)需要在線改變CPU的時(shí)鐘頻率。下面是一個(gè)通過按鍵產(chǎn)生外部中斷信號(hào)改變NCE單片機(jī)μPD780058的CPU時(shí)鐘頻率的程序,它使CPU在主、副時(shí)鐘切換運(yùn)行。通過I/O口P6的位0引腳連接1個(gè)LED小燈,每按下一次按鍵就使CPU的時(shí)鐘頻率改變。在主時(shí)鐘和副時(shí)鐘頻率下工作時(shí),用同樣的軟件延時(shí)程序控制小燈點(diǎn)亮的時(shí)間,以此觀察CPU的運(yùn)行速度。 程序清單: //**************宏定義************** #definePCCMODEM0x00//CPU時(shí)鐘控制寄存器PCC //定義為選主系統(tǒng)時(shí)鐘 #definePCCMODES0xf0//CPU時(shí)鐘控制寄存器PCC //定義為選副系統(tǒng)時(shí)鐘 #definePORT601/P6口位0賦初值/ #definePORTM600//P6口位0設(shè)為輸出 #defineINTM0M0x00//定義外部中斷INTP1的 //中斷觸發(fā)沿為下降沿 //*****單片機(jī)內(nèi)部功能使用的定義***** #pragmasfr//使用特殊功能寄存器 #pragmaHALT//使用HALT功能 #pragmainterruptINTP1interRB1//使用中斷功能 #pragmaDI//使用關(guān)中斷功能 #pragmaEI//使用開中斷功能 //*************變量定義************* unsignedintb;//定義軟件延時(shí)計(jì)數(shù)變量 charmsflag;//定義主、副時(shí)鐘切換標(biāo)志 //**************主函數(shù)************** voidmain() { PCC=PCCMODEM;//CPU用主系統(tǒng)時(shí)鐘 P6.0=PORTM60;//P6口的位0賦初值 PM6.0=PORTM60;//P6口的位0為輸出 INTM0=INTM0M;//INTP1下降沿觸發(fā) PMK1=0;//清除INTP1中斷屏蔽 Msflag=0;//選用主副時(shí)鐘的標(biāo)志 EI();//開中斷 While(1) { if(msflag==0)//時(shí)鐘切換標(biāo)志為0時(shí) msflag=1;//標(biāo)志變?yōu)? elsemsflag=0;//否則標(biāo)志變?yōu)? P6.0=0;//點(diǎn)亮LED燈 b=0;//軟件延時(shí)的計(jì)數(shù)值賦初值 while(b<=10000) { b++;//軟件延時(shí)(注意系統(tǒng)時(shí)鐘為) //主時(shí)鐘與副時(shí)鐘延時(shí) //時(shí)間的長(zhǎng)短是不同的) } P6.0=1;//熄滅LED燈 HALT();//進(jìn)入HALT狀態(tài) } } //************中斷服務(wù)函數(shù)************ voidinter(void) { if(msflag==0)//若時(shí)鐘切換標(biāo)志為0 PCC=PCCMODES;//CPU使用副時(shí)鐘 Else//否則 PCC=PCCMODEM;//CPU使用主時(shí)鐘 } 低功耗單片機(jī)的應(yīng)用使電子產(chǎn)品、控制系統(tǒng)更符合當(dāng)今時(shí)鐘的要求,達(dá)到便攜、低功耗和高可靠性。加之用高級(jí)語言(如C語言)對(duì)單片機(jī)進(jìn)行開發(fā)的工具日臻完善。更為快速高效的開發(fā)應(yīng)用提供了良好的條件和環(huán)境。低功耗的節(jié)能單片機(jī)應(yīng)用系統(tǒng)將會(huì)帶來很好的社會(huì)效益和經(jīng)濟(jì)效益。 |