徐蛟
【摘要】隨著社會的發展,人類對便攜式設備、物聯網設備、可穿戴設備等的需求大大增加,而這些設備的續航要求也越來越高,必須對其進行低功耗設計。大部分低功耗設備都以單片機為控制核心,本文分析了電路系統中的功耗模型,并從硬件和固件兩個角度分析了單片機電路低功耗設計的方法。
【關鍵詞】單片機;低功耗;睡眠模式;電源管理
一、單片機電路系統功耗
低功耗電路是在CMOS集成電路的基礎上發展起來的,要分析功耗,應從CMOS集成電路的原理著手。CMOS電路功耗包含動態功耗和靜態功耗。靜態功耗即為電源電壓和電流的乘積,在系統電源加大時,對應的電流也會加大;動態功耗包含瞬時導通功耗和電容充放電功耗。瞬時導通功耗是指電路在信號轉換時,P溝道管和N溝道管同時導通而形成一個回路,回路電流產生的功耗。當電路工作的頻率越高,則CMOS管導通頻率越高,瞬時導通功耗越高。系統電壓越高,CMOS管導通時的電流越大,瞬時導通功耗也越大。當電路輸出端邏輯電平改變時,輸出端電容伴隨著充放電過程。當輸出端由邏輯低電平變成邏輯高電平時,系統電源會通過導通的P溝道電阻對輸出端電容充電,而當輸出端由邏輯高電平變成邏輯低電平時,輸出端電容會通過導通的N溝道電阻放電,這種充放電過程會產生功耗,即為電容充放電功耗。將電容充放電電流與電源電壓積分,可計算出電容充放電功耗P。假如電容大小為C,充放電頻率為f,系統電源為VDD,則P=fCVDD2。由式可知,電容充放電功耗與電路工作頻率、電容大小,和系統電壓大小都成正比。
二、單片機硬件電路設計方法
(一)低功耗單片機選型
TI公司MSP430系列單片機在功耗設計上較優良,一般為低功耗設計時的首選單片機;意法半導體公司推出的STM32L4+系列低功耗單片機也有較好的市場反響,其實現超低功耗的同時也追求高性能。越簡單的單片機,其功耗越小,在選型單片機時注意夠用就好,譬如單片機ROM和RAM過大時,其能耗也將大大增加,因為每個存儲單元都是由CMOS構成,即使不使用,其上也會消耗電能。
(二)系統供電電壓的選擇
系統供電電壓大小是系統功耗最重要的指標。以前51單片機都采用與TTL兼容的5V電壓供電,現在主流單片機已降到3.3V供電。隨著半導體工藝的不斷發展,CMOS電路的門限電平越來越低,需求的供電電壓越來越低,后續1.8V供電的芯片將成為主流。對于低功耗設計,供電電壓越小則系統功耗越小,應盡量選擇低供電電壓。
(三)系統電源管理
電源芯片一般有兩種類型:開關電源和線性電源。對于線性電源,其噪聲較小,但輸入輸出上的壓差會造成能量損耗。開關電源效率較高,很多芯片能量轉換效率達95%以上。在低功耗設計中,電源部分應首選開關電源。針對單片機電路的外圍各功能模塊,可設計成獨立供電的模式,需要使用相應功能時就對其供電,不需要時則關閉供電。獨立供電的模式可通過單片機管腳控制MOS管開關來實現。
(四)系統時鐘選擇
系統運行頻率快,則系統性能高,但由上文可知,運行頻率越快,系統的動態功耗越大。在滿足系統性能的同時,應盡量使用低頻率時鐘。對于單片機,在運行中可根據功能需求,切換其工作時鐘。
三、單片機固件設計方法
(一)及時進入低功耗模式
以STM32L4+系列單片機為例,該單片機提供了豐富的低功耗模式,包含睡眠模式、兩種停止模式、兩種待機模式和關斷模式等等。系統空閑或不工作時,應使單片機及時進入相對的低功耗模式,并在固件中設置其喚醒的事件或中斷。
(二)減少單片機的運算量
單片機運算量越大,其功耗越大。在固件設計時,對一些已知量可以設定成常量。對于運算公式中常量的計算,可以在程序里先計算出定值,譬如計算圓的周長為2πr,可以直接寫成6.28r。對一系列的運算結果可預先算好制成表存放在Flash中,讓單片機查表。對于必須處理的實時計算,注意計算精度,只計算到需求精度就結束。數據計算時首選加減法,后考慮乘除法,在乘除法選擇時選擇乘法而不選擇除法,能夠進行移位運算代替乘除法時,優選移位運算。
(三)多使用中斷或DMA方式
固件設計應盡量不使用查詢的方式,相比于中斷,單片機不斷的查詢會產生較大功耗。在中斷或DMA模式下,單片機空閑后便可進入睡眠等低功耗模式,等待中斷的喚醒。
(四)其他設計要點
單片機讀Flash會比讀RAM節省功耗,在固件設計中,應多進行宏定義,即可降低功耗,也便于程序的維護升級。設計電源管理程序配合硬件按需求對各功能塊進行供電;對于外圍器件有顯示設備的,不要動態掃描,而使用靜態顯示方式。對于外圍器件有按鍵的,也不要動態掃描,盡量設置按鍵中斷方式。能夠固件處理的事情,盡量用固件,不要加外圍電路處理。
四、結語
對于單片機電路的功耗設計是一個系統工程,應綜合考慮硬件和固件的設計。低功耗和高性能的需求常常是一對矛盾體,設計時需在兩者間折中。本文針對單片機電路,從硬件和固件的角度提出了一些較實用的低功耗設計方法。
參考文獻
[1]徐曉磊.單片機系統的低功耗設計與應用[J].電測與儀表,2000,418(37):28~31.
[2]胡儉波.單片機系統的超低功耗設計[J].工業控制計算機,2001(10):65~68.