MCU低功耗設計(一)理論

2021-07-04 07:49:45 字數 3972 閱讀 9456

現代的mcu一般使用cmos技術,耗能包括2方面:

靜態消耗 主要是電晶體消耗能量;

動態消耗 公式=c×v2×f,其中c是cmos的負載電容,v是供電電壓,f是時鐘頻率;

總電能消耗是靜態消耗和動態消耗之和,即:idd=f×idynamicrun[ua/mhz]+istatic[ua].

因此,電能消耗依賴於:

mcu晶元尺寸或者說電晶體的數目;

mcu供電電壓降低電壓可以成平方級別地降低電能消耗;

時鐘頻率可以把時鐘頻率降低到剛好滿足應用需要;

外設數目使能的外設越多,耗能越大;

執行模式合理選擇工作模式可以大幅節能,如,全速工作極短時間後進入睡眠模式。

1.       關閉不需要使用的外設;

2.       所有未使用的引腳必須連線到乙個確定的邏輯電平;

3.       當有外設必須保持啟用時,使用wait模式來獲得低功耗;

4.       使用合適的vdd值;

5.       盡可能地使用低功耗執行模式;

6.       如果不能使用低功耗模式,那就將主頻降低到滿足應用的最小值;

7.       如果可能,使用動態控制i/o引腳的上拉功能。

支援低功耗的mcu一般都有好幾種執行模式,以st公司的stm8l為例,它支援5種低功耗模式:等待、低功耗執行、低功耗等待、主動停止和停止。每一種模式的進入方式,節能級別和外設工作要求,總結表1:

表1 stm8l低功耗執行模式模式

等待 低功耗執行

低功耗等待

主動停止 停止

入口wfi

wfe軟體**

軟體**+wfe

halt

halt 晶振

開 開lsi或lse

lsi或lse

lsi或lse 關

cpu 關

關 開關 關

關 外設

開 開開 開

關,僅rtc開 關

喚醒所有內部和外部中斷,復位

所有內部和外部中斷,復位,喚醒事件

軟體**,復位

內部和外部事件,復位

外部中斷,rtc中斷,復位

外部中斷,復位

電壓調節器

mvrmvr

ulpulp

clk_ickcr

ulp程式執行區

flash

flash

ramram

flash

flash

flash+e2 開

開 關關 關

關 中斷

允許 允許

禁止 禁止

允許 允許

中斷服務後 返回狀態

al=0:main

al=1:wfi

wfe /

/al=0:main

al=1主動停止

al=0:main

al=1:停止

事件處理後 返回狀態 /

main /

低功耗執行 /

/ram+暫存器 保留

保留 保留

保留 保留

保留@3v/25℃

5.9ua

5.4ua

3.3ua

1.0ua

0.4ua

特殊事項 /

/禁止adc /

清除外設懸掛中斷標誌位

上述低功耗執行模式對於開發者來說有點多,尤其剛接觸stm8l處理器。我們需要一般性的指導原則,表2是**於實踐的經驗。

表2 選擇合理的stm8l節能模式

節能要求

應用場合

睡眠時長

喚醒方式

恢復時長

執行模式 苛刻

cpu空閒,等待外部訊號喚醒 長

外部中斷

≥2.8us

halt 苛刻

cpu空閒,等待時鐘週期喚醒 長

rtc週期

≥2.8us

active-halt 嚴格

cpu有持續、微負荷任務執行 /

/≥2.8us

低功耗執行 嚴格

cpu短暫等待中斷發生 短

任意中斷 短

等待中斷 嚴格

cpu短暫等待事件發生 短

註冊事件 短

等待事件 需要

cpu有持續、輕負荷任務執行 /

/ /調整主頻

常見的查詢方式如下,此時cpu無事可幹,白白消耗電能。

adc_cr1 = adc_start;  /* start conversion */

while (!(adc_sr & adc_sr_eoc)) ;  /* wait for eoc bit set */

可以使用等待事件的方式來節省電能。

先配置adc為事件源,並使能相應的中斷:

wfe_cr2 = adc_comp_ev;  /* enable adc as a source of event */

adc_cr1 = adc_eocie;  /* enable interrupt for end of conversion */

當adc轉換完成後,喚醒處於等待的cpu:

adc_cr1 = adc_start;  /* start conversion */

_asm(「wfe」);  /* enter wait mode until waked by adc_eocie*/

應用程式設計時,如果所有中斷事件由isr完成,可以通過將cfg_gcr暫存器中al位置1來節省電能:避免儲存/恢復context、無須主程式執行(返回到wfi模式),如下圖1所示。

圖1  wfi模式下中斷無須上下文切換

將al位置1節省電能的方法同樣可以用於halt模式,原理如下圖2所示。

圖2 halt模式下中斷無須上下文切換

很多應用需要按鍵作為人機介面,按鍵一般連線到i/o上。當按鍵沒有動作時i/o口設定內部上拉而獲得確定的邏輯電平;一旦按鍵按下,i/o口對地導通將產生額外的40~70ua電流,這對於電池供電的低功耗來說是十分重要的。

可以動態地控制i/o口的上拉達到節能的目的:一旦按鍵按下,中斷服務程式將禁止該i/o口的上拉功能;然後軟體定時執行—先使能上拉功能,再檢測i/o口狀態,如果按鍵仍按下再次禁止上拉功能,否則使能i/o口的上拉功能。整個邏輯如下圖3所示:

圖3 動態設定i/o口的上拉而節能

cpu的空閒節能如下圖4所示,它的邏輯包括以下幾個步驟:

(1)發現cpu空閒:帶os系統,表現為任務沒有事件需要響應,或者進入idle程序;無os系統,表現為程式執行結束。

(2) 選擇一種合適的cpu節能模式:chip_enterlowpower()完成進入節能前的準備工作,包括:關閉外設,切換i/o引腳到節能狀態。

(3) 退出節能模式需要呼叫chip_exitlowpower(),可能發生在以下2種情形:

a.  需要使用被關閉外設的isr:

b. 由process直接退出;

chip_exitlowpower()的善後工作包括:使能外設,切換i/o引腳到工作狀態。同時為避免isr和process兩次操作chip_exitlowpower(),該函式設定了狀態變數避免重複退出。

圖4  cpu空閒節能策略

超低功耗MCU如何降低功耗

低功耗是mcu的一項非常重要的指標,比如某些可穿戴的裝置,其攜帶的電量有限,如果整個電路消耗的電量特別大就會經常出現電量不足的情況。平時我們在做產品的時候,基本的功能實現很簡單,但只要涉及到關於低功耗的問題就比較棘手了,比如某些可以低到微安級的mcu微控制器,而自己設計的低功耗怎麼測都是毫安級的,電...

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

電子產品的低功耗問題經常讓產品設計者頭痛而又不得不面對。以微控制器 mcu 為核心的系統,其功耗主要由微控制器功耗和微控制器外圍電路功耗組成。要降低微控制器系統的功耗,需要從硬體和軟體兩方面入手。硬體設計考慮因素 要滿足微控制器系統的低功耗要求,選用具有低功耗特性的微控制器可以很容易實現。因為具有低...

低功耗設計

在數字系統中功耗主要包括動態功耗和靜態功耗。cmos的動態功耗 是訊號在0和1變化之間,電容充放電所消耗的功耗。我們知道,不僅僅cmos器件有寄生電容,導線間也有電容。將電容c充電到電壓vdd所需要的能量cvdd 2。降低動態功耗技術 1 動態電壓調節 2 動態處理溫度補償 3 門控時鐘和可變頻率時...