一.MCU耗能因素
現(xiàn)代的MCU一般使用CMOS技術(shù),耗能包括2方面:
靜態(tài)消耗 主要是晶體管消耗能量;
動態(tài)消耗 公式=C×V2×f,其中C是CMOS的負載電容,V是供電電壓,f是時鐘頻率;
總電能消耗是靜態(tài)消耗和動態(tài)消耗之和,即:IDD=f×IDynamicRun[uA/MHz]+IStatic[uA].
因此,電能消耗依賴于:
MCU芯片尺寸或者說晶體管的數(shù)目;
MCU供電電壓降低電壓可以成平方級別地降低電能消耗;
時鐘頻率可以把時鐘頻率降低到剛好滿足應用需要;
外設(shè)數(shù)目使能的外設(shè)越多,耗能越大;
運行模式合理選擇工作模式可以大幅節(jié)能,如,全速工作極短時間后進入睡眠模式。
二.節(jié)能方法
1. 關(guān)閉不需要使用的外設(shè);
2. 所有未使用的引腳必須連接到一個確定的邏輯電平;
3. 當有外設(shè)必須保持激活時,使用Wait模式來獲得低功耗;
4. 使用合適的VDD值;
5. 盡可能地使用低功耗運行模式;
6. 如果不能使用低功耗模式,那就將主頻降低到滿足應用的最小值;
7. 如果可能,使用動態(tài)控制I/O引腳的上拉功能。
三.低功耗模式
支持低功耗的MCU一般都有好幾種運行模式,以ST公司的STM8L為例,它支持5種低功耗模式:等待、低功耗運行、低功耗等待、主動停止和停止。每一種模式的進入方式,節(jié)能級別和外設(shè)工作要求,總結(jié)表1:
表1 STM8L低功耗運行模式
上述低功耗運行模式對于開發(fā)者來說有點多,尤其剛接觸STM8L處理器。我們需要一般性的指導原則,表2是來源于實踐的經(jīng)驗。
表2 選擇合理的STM8L節(jié)能模式
四.鮮為人知的技巧
1. 使用Wait替換查詢方式達到節(jié)能目的
常見的查詢方式如下,此時CPU無事可干,白白消耗電能。
ADC_CR1 = ADC_START; /* start conversion */
while (!(ADC_SR & ADC_SR_EOC)) ; /* wait for EOC bit set */
可以使用等待事件的方式來節(jié)省電能。
先配置ADC為事件源,并使能相應的中斷:
WFE_CR2 = ADC_COMP_EV; /* enable ADC as a source of event */
ADC_CR1 = ADC_EOCIE; /* enable interrupt for end of conversion */
當ADC轉(zhuǎn)換完成后,喚醒處于等待的CPU:
ADC_CR1 = ADC_START; /* start conversion */
_asm(“wfe”); /* enter wait mode until waked by ADC_EOCIE*/
2. 無須上下文切換的中斷模式
應用程序設(shè)計時,如果所有中斷事件由ISR完成,可以通過將CFG_GCR寄存器中AL位置1來節(jié)省電能:避免保存/恢復context、無須主程序運行(返回到WFI模式),如下圖1所示。
圖1 WFI模式下中斷無須上下文切換
將AL位置1節(jié)省電能的方法同樣可以用于HALT模式,原理如下圖2所示。
圖2 HALT模式下中斷無須上下文切換
3. 動態(tài)設(shè)置I/O口的上拉功能
很多應用需要按鍵作為人機接口,按鍵一般連接到I/O上。當按鍵沒有動作時I/O口設(shè)置內(nèi)部上拉而獲得確定的邏輯電平;一旦按鍵按下,I/O口對地導通將產(chǎn)生額外的40~70uA電流,這對于電池供電的低功耗來說是十分重要的。
可以動態(tài)地控制I/O口的上拉達到節(jié)能的目的:一旦按鍵按下,中斷服務程序?qū)⒔乖揑/O口的上拉功能;然后軟件定時執(zhí)行—先使能上拉功能,再檢測I/O口狀態(tài),如果按鍵仍按下再次禁止上拉功能,否則使能I/O口的上拉功能。整個邏輯如下圖3所示:
圖3 動態(tài)設(shè)置I/O口的上拉而節(jié)能
4. CPU空閑節(jié)能策略
CPU的空閑節(jié)能如下圖4所示,它的邏輯包括以下幾個步驟:
(1)發(fā)現(xiàn)CPU空閑:帶OS系統(tǒng),表現(xiàn)為任務沒有事件需要響應,或者進入idle進程;無OS系統(tǒng),表現(xiàn)為程序運行結(jié)束。
(2) 選擇一種合適的CPU節(jié)能模式:chip_EnterLowPower()完成進入節(jié)能前的準備工作,包括:關(guān)閉外設(shè),切換I/O引腳到節(jié)能狀態(tài)。
(3) 退出節(jié)能模式需要調(diào)用chip_ExitLowPower(),可能發(fā)生在以下2種情形:
a. 需要使用被關(guān)閉外設(shè)的ISR:
b. 由process直接退出;
chip_ExitLowPower()的善后工作包括:使能外設(shè),切換I/O引腳到工作狀態(tài)。同時為避免ISR和process兩次操作chip_ExitLowPower(),該
函數(shù)設(shè)置了狀態(tài)變量避免重復退出。
圖4 CPU空閑節(jié)能策略
-
低功耗
+關(guān)注
關(guān)注
10文章
2396瀏覽量
103670 -
電能
+關(guān)注
關(guān)注
1文章
682瀏覽量
36795
發(fā)布評論請先 登錄
相關(guān)推薦
評論