《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 單片機低功耗技術(shù)及應(yīng)用

單片機低功耗技術(shù)及應(yīng)用

2008-10-28
作者:李月香1, 袁 濤2, 木合塔爾

  摘? 要: 介紹單片機的低功耗" title="低功耗">低功耗設(shè)計技術(shù)特點及單片機應(yīng)用" title="單片機應(yīng)用">單片機應(yīng)用系統(tǒng)中的低功耗設(shè)計" title="低功耗設(shè)計">低功耗設(shè)計要注意的幾個問題,,并列舉了充分利用片內(nèi)資源實現(xiàn)低功耗及C語言源程序,。

  關(guān)鍵詞: 單片機? 低功耗? 設(shè)計

?

  隨著集成電路技術(shù)和工藝的飛速發(fā)展,真正單片化的單片機已經(jīng)成為主流產(chǎn)品,。它的絕大部分資源都在單片機芯片內(nèi)部;過去需要用外部擴展器件才能實現(xiàn)的功能,,如ROM,、RAM、A/D,、D/A,、數(shù)字量I/O、顯示驅(qū)動等功能,,現(xiàn)在在單片機內(nèi)部就可以完成,。單片機的真正單片化,省去了大量的硬件開發(fā)調(diào)試工作,,大大地提高了工作效率;系統(tǒng)先天的可靠性,、抗干擾能力得到了顯著的改善。經(jīng)實驗測試,,實現(xiàn)同樣功能的系統(tǒng),,采用單片方式比總線擴展方式具有更多的優(yōu)點。系統(tǒng)不僅功能強,、性能可靠,、成本降低,而且進一步微型化和便攜化,。因此,,使用電池作為系統(tǒng)的電源也越來越普遍。系統(tǒng)的最小電源消耗和最大的電池壽命就成為主要的技術(shù)要求,。例如1999年的多國儀器儀表展覽會上,,不止一家國外公司展出了使用電池的工業(yè)流量計,5~10年都不必更換電池和進行維護,。所以低功耗單片機的應(yīng)用有著非常廣闊的天地,。低功耗單片機應(yīng)用符合現(xiàn)代電子終端產(chǎn)品的要求:便攜、節(jié)能,、可靠等,。目前國際上先進的單片機生產(chǎn)廠商,如日本NEC、富士通,、愛普森和美國TI等公司都采用了低功耗設(shè)計,。筆者在一些應(yīng)用中使用了日本NEC公司的78K0和78K0S系列的單片機,其休眠狀態(tài)下的功耗電流可達到0.05~0.01μA,。

1 單片機的低功耗設(shè)計技術(shù)

1.1 高集成度的完全單片化設(shè)計

  將很多外圍硬件集成到了CPU芯片中,,增大硬件冗余。內(nèi)部以低功耗,、低電壓的原則設(shè)計,,這給單片機的低功耗設(shè)計提供了很強的支持。

1.2 內(nèi)部電路可選擇性工作

  通過特殊功能寄存器選擇使用不同的功能電路,,即依靠軟件選擇其中不同的硬件;對于不使用的功能使其停止工作,,以減少無效功耗。

1.3 寬電源電壓范圍

  先進的單片機芯片工藝特點決定了單片機在很寬的電源電壓范圍內(nèi)都能正常工作,。例如,,NEC公司的78K0和78K0S系列的單片機,可以在1.8V~5.5V電源電壓范圍內(nèi)正常工作,。單片機供電電壓范圍的放寬,,可以進一步拓寬單片機的應(yīng)用領(lǐng)域,尤其是便攜式或掌上型儀器或裝置,,可以放心地使用電池作為電源,,而不必關(guān)心電池放電過程電壓曲線是否平穩(wěn)、是否會影響單片機正常工作,,更不必因電池供電而專門增加穩(wěn)壓電路,,從而可減少大約1/3的功率消耗。

1.4 具有高速和低速兩套時鐘

  系統(tǒng)運行頻率越高,,電源功耗就會相應(yīng)增大,。為更好地降低功耗,內(nèi)部集成了兩套獨立的時鐘系統(tǒng),,高速的主時鐘和32.768kHz的副時鐘,。也可在滿足功能需要的情況下按一定比例降低CPU主時鐘頻率" title="時鐘頻率">時鐘頻率,以降低電源功耗,。在不需要高速運行的情況下,,可選用副時鐘低速運行,進一步降低功耗,。通過軟件對特殊功能寄存器賦值可改變CPU的時鐘頻率,,或進行主時鐘和副時鐘切換。

1.5 在線改變CPU的工作頻率

  可根據(jù)CPU處理任務(wù)的不同,,在外部振蕩器不變的情況下,,通過程序改變處理器時鐘控制寄存器PCC的值,,在線改變CPU的頻率。CPU在幾種不同頻率下工作的電源功耗比較如圖1所示,。

?

?

1.6 后備功能

  后備功能是為了進一步降低系統(tǒng)功耗。CPU用主時鐘時有HALT(待機)模式和STOP(休眠)模式,,用副系統(tǒng)時鐘" title="系統(tǒng)時鐘">系統(tǒng)時鐘時有副時鐘運行模式和HALT模式,。如表1所示。

?

?

1.7 內(nèi)部鐘表定時器

  NEC單片機內(nèi)部提供了時鐘定時器,,每隔0.5s產(chǎn)生一次中斷,。在系統(tǒng)處于休眠狀態(tài)時,仍可定時被喚醒,。對于單片機只須間歇工作,、但又需要實時計時功能的應(yīng)用場合,提供了非常有效的節(jié)能方法,。CPU在不工作時可進入STOP模式或HALT模式,,進入低功耗的后備功能狀態(tài)。當(dāng)時鐘中斷到來時,,CPU回到正常工作狀態(tài),,進入時鐘中斷處理程序做時鐘更新處理,然后再進入后備功能狀態(tài),。

2 單片機應(yīng)用系統(tǒng)中的低功耗設(shè)計要注意的問題

  (1)系統(tǒng)中單片機以外的其它電路器件盡可能選用靜態(tài)功耗低的器件,,如選用CMOS電路芯片。

  (2)外部設(shè)備的選擇也要盡可能支持低功耗設(shè)計,。

  (3)設(shè)計外部中斷喚醒電路,,使單片機在等待時可進入休眠模式或待機模式,需要時由外部中斷信號喚醒,。

  (4)設(shè)計外部器件的電源控制電路,,使外部器件或設(shè)備在不工作時關(guān)斷供電,減少無效功耗,。

  (5)設(shè)計充分利用系統(tǒng)低功耗特點的軟件,。

3 在線改變CPU的時鐘頻率以降低功耗的C語言程序舉例

  CPU在不需要高速運行時,可設(shè)置在較低的時鐘頻率下工作,,在運行過程中可根據(jù)需要在線改變CPU的時鐘頻率,。下面是一個通過按鍵產(chǎn)生外部中斷信號改變NEC單片機μPD780058的CPU時鐘頻率的程序,它使CPU在主,、副時鐘間切換運行,。通過I/O口P6的位0引腳連接1個LED小燈,每按下一次按鍵就使CPU的時鐘頻率改變,。在主時鐘和副時鐘頻率下工作時,,用同樣的軟件延時程序控制小燈點亮的時間,,以此觀察CPU的運行速度。

  程序清單:

//**************宏定義**************

#define??? PCCMODEM?  0x00????????? //CPU時鐘控制寄存器PCC

?????????????????????????????????????//定義為選主系統(tǒng)時鐘

#define??? PCCMODES??? 0xf0 ??????? ?//CPU時鐘控制寄存器PCC

  ??????????????????????????????? ?//定義為選副系統(tǒng)時鐘

#define??? PORT60????? 1???????????? //P6口位0賦初值

#define?  PORTM60?????0???????????? //P6口位0設(shè)為輸出

#define ?? INTM0M??????0x00?????????? //定義外部中斷INTP1的

????????????????????????????????????? //中斷觸發(fā)沿為下降沿

//*****單片機內(nèi)部功能使用的定義*****

#pragma??? sfr??????????????????????? //使用特殊功能寄存器

#pragma????HALT?????????????????????? //使用HALT功能

#pragma????interrupt INTP1 inter RB1? //使用中斷功能

#pragma????DI???????????????????????? //使用關(guān)中斷功能

#pragma????EI???????????????????????? //使用開中斷功能

//*************變量定義*************

unsigned?? int???? b,;??????????????? //定義軟件延時計數(shù)變量

char???????msflag,;??????????????????? //定義主、副時鐘切換標(biāo)志

//**************主函數(shù)**************

void main()

{

PCC=PCCMODEM,;?????????????? ????????? //CPU用主系統(tǒng)時鐘

P6.0=PORTM60,;??????????????????????? ?//P6口的位0賦初值

PM6.0=PORTM60;????????????????????????//P6口的位0為輸出

INTM0= INTM0M,;??????????????????????? //INTP1下降沿觸發(fā)

PMK1=0,;???????????????????????????????//清除INTP1中斷屏蔽

msflag=0;?????????????????????????????//選用主副時鐘的標(biāo)志

EI(),;?????????????????????????????????//開中斷

while(1)

{

????????????? if (msflag==0)??????????? //時鐘切換標(biāo)志為0時

???????????????????? msflag=1,;???????? //標(biāo)志變?yōu)?

????????????? else msflag=0; ????????? //否則標(biāo)志變?yōu)?

?????? ?????? P6.0=0,;????????????????? //點亮LED燈

?????? ? ???? b = 0,;?????? ??????????? //軟件延時的計數(shù)值賦初值

????????????? while(b<=10000)

????????????? {

???????????????????? b++;??? ????????? //軟件延時(注意系統(tǒng)時鐘為

??????????????????????????????????????? //主時鐘與副時鐘延時

??????????????????????????????????????? //時間的長短是不同的)

????????????? }????

????????????? P6.0=1,;??????????????????//熄滅LED燈

????????????? HALT(),;??????????????????//進入HALT狀態(tài)

}

}

//************中斷服務(wù)函數(shù)************

void inter(void)

{

????????????? if (msflag ==0)???????????? //若時鐘切換標(biāo)志為0

???????????????????? PCC=PCCMODES;????  //CPU使用副時鐘

????????????? else????????????????????????//否則

???????????????????? PCC=PCCMODEM,;???   //CPU使用主時鐘

}

  低功耗單片機的應(yīng)用使電子產(chǎn)品,、控制系統(tǒng)更符合當(dāng)今時代的要求,達到便攜,、低功耗和高可靠性,。加之用高級語言(如C語言)對單片機進行開發(fā)的工具日臻完善。更為快速高效的開發(fā)應(yīng)用提供了良好的條件和環(huán)境,。低功耗的節(jié)能單片機應(yīng)用系統(tǒng)將會帶來很好的社會效益和經(jīng)濟效益,。

?

參考文獻

1 何為民. 低功耗單片微機系統(tǒng)設(shè)計.北京:北京航空航天大學(xué)出版社,1993年6月

2 吳玉平譯.μPD780024,,780034,,780024Y,780034Y子系列8位單片微控制器用戶手冊.北京:電子工業(yè)出版社,,1994年4月

3 日本NEC公司.CC78K0 C Compiler V.3.10 or later?Language User's Manual,,1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]