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