系統(tǒng)詳解Silabs MCU低功耗優(yōu)勢及經(jīng)典案例
引言
本文引用地址:http://2s4d.com/article/176929.htm現(xiàn)在的電子產(chǎn)品,對低功耗的要求越來越高。產(chǎn)品功耗的問題是經(jīng)常讓產(chǎn)品設(shè)計者頭痛而又不得不面對的一個問題。以單片機為核心的系統(tǒng),其功耗主要由單片機功耗和單片機外圍電路功耗組成。
要降低單片機系統(tǒng)的功耗,需要從硬件和軟件兩方面入手。美國SiliconLaboratories公司(Silabs)設(shè)計的高速C8051F系列單片機是一種高度集成的SoC型芯片,兼容傳統(tǒng)的8051單片機內(nèi)核和指令系統(tǒng),但其各方面的性能都遠遠超越了傳統(tǒng)的8051單片機。C8051F系列單片機中增加的外設(shè)或功能部件有:模擬多路選擇器、可編程增益放大器、ADC、DAC、電壓比較器、電壓基準、溫度傳感器、SMBus(I2C)、增強型UART、SPI、可編程計數(shù)/定時器陣列(PCA)、電源監(jiān)視器、看門狗定時器(WDT)和時鐘振蕩器等。另外還有片上的FLASH程序存儲器和RAM。特別是在低功耗設(shè)計方面,提供了多種低功耗模式供用戶選擇,方便客戶設(shè)計出不同低功耗要求的產(chǎn)品。
本文將從以下三個方面來談SilabsMCU低功耗優(yōu)勢及其實現(xiàn)方法:
如何設(shè)計低功耗單片機系統(tǒng);
SilabsMCU低功耗實現(xiàn)方法。
如何設(shè)計低功耗單片機系統(tǒng)
低功耗單片機系統(tǒng)設(shè)計,需要從硬件設(shè)計和應(yīng)用軟件設(shè)計兩方面入手。
硬件設(shè)計
要滿足單片機系統(tǒng)的低功耗要求,選用具有低功耗特性的單片機可以很容易實現(xiàn)。因為具有低功耗特性的單片機可以大大降低系統(tǒng)功耗,這可以從單片機的供電電壓、內(nèi)部結(jié)構(gòu)、系統(tǒng)時鐘和低功耗模式等幾方面來考察一款單片機的低功耗特性。
選擇簡單的CPU內(nèi)核
選擇CPU內(nèi)核時切忌一味追求性能,以“夠用就好”為原則。8位機夠用,就沒有必要選用16位機、32位機;單片機的運行速度越快,往往其功耗也越大。一個CPU越復(fù)雜、集成度越高、功能越強,片內(nèi)晶體管越多,總漏電流也越大,即使進入STOP狀態(tài),漏電流也會變得不可忽視;而簡單的CPU內(nèi)核不僅功耗低,成本也低。
選擇低電壓供電的單片機系統(tǒng)
單片機系統(tǒng)的供電電壓低,可以有效的降低其系統(tǒng)功耗。由于半導(dǎo)體制造工藝的發(fā)展,現(xiàn)在單片機的供電電壓從5V供電降低到3.3V、3V、2V乃至1.8V。供電電壓低,不緊可以降低單片機的功耗,還可以降低單片機外圍電路的功耗。
選擇帶有低功耗模式的單片機系統(tǒng)
低功耗模式指的是系統(tǒng)的Idle、Stop和Suspend等模式。處于這些模式下的功耗將遠遠小于正常運行下的功耗。
Idle模式下,CPU停止工作,但內(nèi)部系統(tǒng)時鐘并不停止,單片機的外圍I/O模塊也不停止工作;系統(tǒng)功耗一般降低有限,相當(dāng)于工作模式功耗的50%左右。
Stop模式下,CPU和內(nèi)部系統(tǒng)時鐘停止工作,所有的數(shù)字外設(shè)也自動停止工作,內(nèi)部RAM的信息以最小功耗被保持,CPU消耗電流可降到μA級,由外 部或內(nèi)部的復(fù)位使系統(tǒng)退出Stop模式,進而喚醒CPU繼續(xù)工作。如果在CPU進入Stop模式時,將各個模擬外設(shè)關(guān)掉,這時的功耗可以降低到nA級。但 是在Stop模式下,CPU被喚醒后要重新對系統(tǒng)作初始化,所有特殊功能寄存器的內(nèi)容將被重新初始化。這在某些低功耗應(yīng)用場合需要注意。
Suspend模式下,CPU、內(nèi)部系統(tǒng)時鐘停止工作,I/O模塊等被懸掛起來,片內(nèi)RAM中存儲的數(shù)據(jù)將被保持,CPU的功耗可以降低到nA級,由喚 醒事件喚醒。當(dāng)CPU被喚醒后,系統(tǒng)不會被CPU復(fù)位,繼續(xù)從進入Suspend模式的地方開始執(zhí)行程序。這是一種非常理想的低功耗模式。
選擇合適的時鐘方案
時鐘的選擇對于系統(tǒng)的功耗相當(dāng)敏感,需要注意三方面的問題:
A)系統(tǒng)總線頻率應(yīng)當(dāng)盡量低
單片機內(nèi)部的總電流消耗可分為運行電流和漏電流兩部份。單片機集成度越高,環(huán)境溫度越高,漏電流也越大。在單片機運行時,開關(guān)電 路不斷地由“1”變“0”、由“0”變“1”,內(nèi)部電容不停地充放電,這些都是單片機運行時電流的主要來源。要實現(xiàn)開關(guān)電路快速關(guān)斷和電容的快速充放電, 需要比較大的電流。運行電流幾乎是和單片機的時鐘頻率成正比的,因此盡量降低系統(tǒng)時鐘的運行頻率可以有效地降低系統(tǒng)功耗。
B)選擇適合低功耗的單時鐘方案
單片機時鐘是使用鎖相環(huán)、外部振蕩器,還是內(nèi)部振蕩器,這與單片機的功耗有很大關(guān)系?,F(xiàn)代單片機普遍采用鎖相環(huán)技術(shù),允許用戶在片外使用頻率較低的振蕩器,通過程序控制,系統(tǒng)時鐘可以在一個很寬的范圍內(nèi)調(diào)整,總線頻率往往能升得很高,但是會帶來額外的功率消耗。僅僅就時鐘方案來講,使用外部振蕩器且不使用鎖相環(huán)是功率消耗最小的一種。
C)選擇適合低功耗的雙時鐘方案
有些場合的應(yīng)用比較復(fù)雜,對MCU的速度要求也很高。盡管采用新的半導(dǎo)體工藝,但MCU速度越高,一般來說功耗也越大。因此很多高速MCU提供了雙時鐘系統(tǒng),并允許MCU在運行中實時快速的進行時鐘切換,以達到降低功耗的目的。
SilabsMCU帶有內(nèi)部高速振蕩器,又可以使用外部振蕩器,并且可以在CPU運行中實時高速地進行內(nèi)、外振蕩器切換。這對于間歇工作的系統(tǒng)是一種非常好的低功耗方式。當(dāng)要處理數(shù)據(jù)時,使用內(nèi)部高速振蕩器;當(dāng)CPU空閑時,切換到外部低速振蕩器,以降低功耗。
使用每MIPS功耗來衡量MCU的低功耗性能是相對比較準確
盡管我們強調(diào)要降低單片機系統(tǒng)的功耗,必須盡量降低單片機的系統(tǒng)時鐘。但使用每MIPS功耗來衡量MCU的功耗與之并不矛盾。這是相對的,要具體問題具體分析。
例如,執(zhí)行一個需要10K條指令的任務(wù),甲MCU的工作電流為3mA,速度為10MIPS,則甲MCU需要工作1mS完成該任務(wù),消耗3mA×1ms×Vcc,然后甲MCU就可以進入低功耗模式了。
而乙MCU的工作電流為1mA,速度為2MIPS,則乙MCU需要工作5ms完成,這樣乙MCU完成該任務(wù)的消耗為1mA×5ms×Vcc。
從上面的例子我們可以得出結(jié)論:電流大但速度快的MCU可能更省電。
應(yīng)用軟件設(shè)計
應(yīng)用軟件設(shè)計對于一個低功耗系統(tǒng)的重要性常常被人們忽略。一個重要的原因是,軟件設(shè)計上的缺陷并不像硬件那樣容易發(fā)現(xiàn),同時也沒有一個嚴格的標(biāo)準來判斷一個軟件的低功耗特性。但是設(shè)計者如果能盡量將應(yīng)用的低功耗特性反映在軟件中,就可以避免那些“看不見”的功耗損失。
用“中斷”代替“查詢”
在沒有要求低功耗的場合,程序使用中斷方式還是查詢方式并不重要。但在要求低功耗場合,這兩種方式相差甚遠。使用中斷方式,CPU可以什么都不做,甚至可以進入等待模式或停止模式;而查詢方式下,CPU必須不停地訪問I/O寄存器,這會帶來很多額外的功耗。
用“宏”代替“子程序”
子程序調(diào)用的入棧出棧操作,要對RAM進行兩次操作,會帶來更大的功耗。宏在編譯時展開,CPU按順序執(zhí)行指令。使用宏,會增加程序的代碼量,但對不在乎程序代碼量大的應(yīng)用,使用宏無疑會降低系統(tǒng)的功耗。
分頻器相關(guān)文章:分頻器原理
評論