設計低功耗MCU系統,軟硬兼施是關(guān)鍵
電子產(chǎn)品的低功耗問(wèn)題經(jīng)常讓產(chǎn)品設計者頭痛而又不得不面對。以單片機(MCU)為核心的系統,其功耗主要由單片機功耗和單片機外圍電路功耗組成。要降低單片機系統的功耗,需要從硬件和軟件兩方面入手。
本文引用地址:http://dyxdggzs.com/article/201710/366992.htm硬件設計考慮因素
要滿(mǎn)足單片機系統的低功耗要求,選用具有低功耗特性的單片機可以很容易實(shí)現(例如,Siliconlaboratories設計的高速C8051F系列單片機)。因為具有低功耗特性的單片機可以大大降低系統功耗,這可以從單片機的供電電壓、內部結構、系統時(shí)鐘和低功耗模式等幾方面來(lái)考察一款單片機的低功耗特性。一般來(lái)講,用戶(hù)在選擇技術(shù)供應商和產(chǎn)品過(guò)程中,需要對下面的一些重要硬件參數進(jìn)行更加深入的考量:
選擇簡(jiǎn)單的CPU內核
選擇CPU內核時(shí)切忌一味追求性能,以“夠用就好”為原則。8位機夠用,就沒(méi)有必要選用16位機、32位機;單片機的運行速度越快,往往其功耗也越大。一個(gè)CPU越復雜、集成度越高、功能越強,片內晶體管越多,總漏電流也越大,即使進(jìn)入STOP狀態(tài),漏電流也會(huì )變得不可忽視;而簡(jiǎn)單的CPU內核不僅功耗低,成本也低。
選擇低電壓供電的單片機系統
單片機系統的供電電壓低,可以有效地降低其系統功耗。由于半導體制造工藝的發(fā)展,現在單片機的供電電壓從5V供電降低到3.3V、3V、2V乃至1.8V。供電電壓低,不緊可以降低單片機的功耗,還可以降低單片機外圍電路的功耗。
選擇帶有低功耗模式的單片機系統
低功耗模式指的是系統的Idle、Stop和Suspend等模式。處于這些模式下的功耗將遠遠小于正常運行下的功耗。Idle模式下,CPU停止工作,但內部系統時(shí)鐘并不停止,單片機的外圍I/O模塊也不停止工作;系統功耗一般降低有限,相當于工作模式功耗的50%左右。
如果在CPU進(jìn)入Stop模式時(shí),將各個(gè)模擬外設關(guān)掉,這時(shí)的功耗可以降低到nA級。但是在Stop模式下,CPU被喚醒后要重新對系統作初始化,所有特殊功能寄存器的內容將被重新初始化。這在某些低功耗應用場(chǎng)合需要注意。
Suspend模式下,CPU、內部系統時(shí)鐘停止工作,I/O模塊等被懸掛起來(lái),片內RAM中存儲的數據將被保持,CPU的功耗可以降低到nA級,由喚醒事件喚醒。當CPU被喚醒后,系統不會(huì )被CPU復位,繼續從進(jìn)入Suspend模式的地方開(kāi)始執行程序。這是一種非常理想的低功耗模式。
在硬件層面來(lái)說(shuō),對上面的這些參數進(jìn)行仔細衡量是十分必要的,除此之外,選擇合適的時(shí)鐘方案和使用每MIPS功耗來(lái)衡量MCU的低功耗性能也是非常關(guān)鍵的。
應用軟件考慮因素
應用軟件設計對于一個(gè)低功耗系統的重要性常常被人們忽略。一個(gè)重要的原因是,軟件設計上的缺陷并不像硬件那樣容易發(fā)現,同時(shí)也沒(méi)有一個(gè)嚴格的標準來(lái)判斷一個(gè)軟件的低功耗特性。但是設計者如果能盡量將應用的低功耗特性反映在軟件中,就可以避免那些“看不見(jiàn)”的功耗損失:
用“中斷”代替“查詢(xún)”
在沒(méi)有要求低功耗的場(chǎng)合,程序使用中斷方式還是查詢(xún)方式并不重要。但在要求低功耗場(chǎng)合,這兩種方式相差甚遠。使用中斷方式,CPU可以什么都不做,甚至可以進(jìn)入等待模式或停止模式;而查詢(xún)方式下,CPU必須不停地訪(fǎng)問(wèn)I/O寄存器,這會(huì )帶來(lái)很多額外的功耗。
用“宏”代替“子程序”
子程序調用的入棧出棧操作,要對RAM進(jìn)行兩次操作,會(huì )帶來(lái)更大的功耗。宏在編譯時(shí)展開(kāi),CPU按順序執行指令。使用宏,會(huì )增加程序的代碼量,但對不在乎程序代碼量大的應用,使用宏無(wú)疑會(huì )降低系統的功耗。
盡量減少CPU的運算量
減少CPU的運算工作量,可以有效地降低CPU的功耗。減少CPU運算的工作可以從很多方面入手:用查表的方法替代實(shí)時(shí)的計算;不可避免的實(shí)時(shí)計算,算到精度夠了就結束,避免“過(guò)度”的計算;盡量使用短的數據類(lèi)型,例如,盡量使用字符型的8位數據替代16位的整型數據,盡量使用分數運算而避免浮點(diǎn)數運算等。
讓I/O模塊間歇運行
在系統運行過(guò)程中,不用的I/O模塊要關(guān)掉,間歇使用的I/O模塊要及時(shí)關(guān)掉,以節省電能。同時(shí),不用的I/O引腳要設置成輸出或設置成輸入,用上拉電阻拉高。
總之,在單片機系統設計過(guò)程中,需要深入理解單片機低功耗的特性,并在硬件和應用軟件的設計過(guò)程中充分利用單片機的低功耗特性,從而設計出符合低功耗要求的產(chǎn)品。
評論