1. 程式人生 > >低功耗MCU系統軟硬體設計考慮

低功耗MCU系統軟硬體設計考慮

http://bbs.21ic.com/icview-2401364-1-1.html

電子產品的低功耗問題經常讓產品設計者頭痛而又不得不面對。以微控制器(MCU)為核心的系統,其功耗主要由微控制器功耗和微控制器外圍電路功耗組成。要降低微控制器系統的功耗,需要從硬體和軟體兩方面入手。

硬體設計考慮因素
要滿足微控制器系統的低功耗要求,選用具有低功耗特性的微控制器可以很容易實現。因為具有低功耗特性的微控制器可以大大降低系統功耗,這可以從微控制器的供電電壓、內部結構、系統時鐘和低功耗模式等幾方面來考察一款微控制器的低功耗特性。一般來講,使用者在選擇技術供應商和產品過程中,需要對下面的一些重要硬體引數進行更加深入的考量:

選擇簡單的CPU核心
選擇CPU核心時切忌一味追求效能,以“夠用就好”為原則。8位機夠用,就沒有必要選用16位機、32位機;微控制器的執行速度越快,往往其功耗也越大。一個CPU越複雜、整合度越高、功能越強,片內電晶體越多,總漏電流也越大,即使進入STOP狀態,漏電流也會變得不可忽視;而簡單的CPU核心不僅功耗低,成本也低。

選擇低電壓供電的微控制器系統
微控制器系統的供電電壓低,可以有效地降低其系統功耗。由於半導體制造工藝的發展,現在微控制器的供電電壓從5V供電降低到3.3V、3V、2V乃至1.8V。供電電壓低,不緊可以降低微控制器的功耗,還可以降低微控制器外圍電路的功耗。

選擇帶有低功耗模式的微控制器系統
低功耗模式指的是系統的Idle、Stop和Suspend等模式。處於這些模式下的功耗將遠遠小於正常執行下的功耗。Idle模式下,CPU停止工作,但內部系統時鐘並不停止,微控制器的外圍I/O模組也不停止工作;系統功耗一般降低有限,相當於工作模式功耗的50%左右。
如果在CPU進入Stop模式時,將各個模擬外設關掉,這時的功耗可以降低到nA級。但是在Stop模式下,CPU被喚醒後要重新對系統作初始化,所有特殊功能暫存器的內容將被重新初始化。這在某些低功耗應用場合需要注意。
Suspend模式下,CPU、內部系統時鐘停止工作,I/O模組等被懸掛起來,片內RAM中儲存的資料將被保持,CPU的功耗可以降低到nA級,由喚醒事件喚醒。當CPU被喚醒後,系統不會被CPU復位,繼續從進入Suspend模式的地方開始執行程式。這是一種非常理想的低功耗模式。
在硬體層面來說,對上面的這些引數進行仔細衡量是十分必要的,除此之外,選擇合適的時鐘方案和使用每MIPS功耗來衡量MCU的低功耗效能也是非常關鍵的。

應用軟體考慮因素
應用軟體設計對於一個低功耗系統的重要性常常被人們忽略。一個重要的原因是,軟體設計上的缺陷並不像硬體那樣容易發現,同時也沒有一個嚴格的標準來判斷一個軟體的低功耗特性。但是設計者如果能儘量將應用的低功耗特性反映在軟體中,就可以避免那些“看不見”的功耗損失:

用“中斷”代替“查詢”
在沒有要求低功耗的場合,程式使用中斷方式還是查詢方式並不重要。但在要求低功耗場合,這兩種方式相差甚遠。使用中斷方式,CPU可以什麼都不做,甚至可以進入等待模式或停止模式;而查詢方式下,CPU必須不停地訪問I/O暫存器,這會帶來很多額外的功耗。

用“巨集”代替“子程式”
子程式呼叫的入棧出棧操作,要對RAM進行兩次操作,會帶來更大的功耗。巨集在編譯時展開,CPU按順序執行指令。使用巨集,會增加程式的程式碼量,但對不在乎程式程式碼量大的應用,使用巨集無疑會降低系統的功耗。

儘量減少CPU的運算量
減少CPU的運算工作量,可以有效地降低CPU的功耗。減少CPU運算的工作可以從很多方面入手:用查表的方法替代實時的計算;不可避免的實時計算,算到精度夠了就結束,避免“過度”的計算;儘量使用短的資料型別,例如,儘量使用字元型的8位資料替代16位的整型資料,儘量使用分數運算而避免浮點數運算等。

讓I/O模組間歇執行
在系統執行過程中,不用的I/O模組要關掉,間歇使用的I/O模組要及時關掉,以節省電能。同時,不用的I/O引腳要設定成輸出或設定成輸入,用上拉電阻拉高。
總之,在微控制器系統設計過程中,需要深入理解微控制器低功耗的特性,並在硬體和應用軟體的設計過程中充分利用微控制器的低功耗特性,從而設計出符合低功耗要求的產品。