stm8低功耗 喚醒

一.MCU耗能因素

現代的MCU一般使用CMOS技術,耗能包括2種,靜態消耗和動態消耗。

總電能消耗=靜態消耗+動態消耗,

即:IDD=f×IDynamicRun[uA/MHz]+IStatic[uA].

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

因此,電能消耗依賴於:

1.MCU芯片尺寸 或者說晶體管的數目;

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

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

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

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

二.節能方法

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

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

3.當有外設必須保持激活時,使用Wait模式來獲得低功耗

4.使用合適的VDD值;

5.儘可能地使用低功耗運行模式;

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

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

三.低功耗模式

支持低功耗的MCU一般都有好幾種運行模式,以ST公司的STM8L爲例,它支持5種低功耗模式:

等待、低功耗運行、低功耗等待、主動停止、停止模式。

表1:STM8L低功耗運行模式:每一種模式的進入方式,節能級別和外設工作要求

模式

等待模式(wait)

低功耗運行

低功耗等待

主動停止

停機模式

入口

WF(I由中斷喚醒)

WFE(則由事件喚醒)

軟件代碼

軟件代碼+WFE

HALT

HALT

晶振

LSI或LSE

LSI或LSE

LSI或LSE

CPU

外設

關,僅RTC開

喚醒

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

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

軟件代碼,復位

內部和外部事件,復位

外部中斷,RTC中斷,復位

外部中斷,復位

電壓調節器

MVR

MVR

ULP

ULP

CLK_ICKCR

ULP

程序執行區

FLASH

FLASH

RAM

RAM

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

/

清除外設懸掛中斷標誌位

單片機中的WFI/WFE指令

進入低功耗模式的兩個指令,

WFI進入則可由任意中斷喚醒,WFE進入則由事件喚醒

WFI = wait for interrupt 等待中斷,即下一次中斷髮生前都在此hold住不幹活
WFE = wait for event 等待事件,即下一次事件發生前都在此hold住不幹活
執行這兩條語句後CPU功耗會降低,通常用這兩條語句來省電。

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

節能要求

應用場合

睡眠時長

喚醒方式

恢復時長

運行模式

苛刻

CPU空閒,等待外部信號喚醒

外部中斷

≥2.8us

HALT(停機模式)

苛刻

CPU空閒,等待時鐘週期喚醒

RTC週期

≥2.8us

Active-halt活躍停機模式

嚴格

CPU有持續、微負荷任務運行

/

/

≥2.8us

低功耗運行

嚴格

CPU短暫等待中斷髮生

任意中斷

等待中斷

嚴格

CPU短暫等待事件發生

註冊事件

等待事件

需要

CPU有持續、輕負荷任務運行

/

/

/

調整主頻

 

 

簡單地來說,就是:

1)wait(等待模式):時鐘關閉、外設可用。通過中斷、外部中斷、復位,能退出本模式。

2)Active-halt(活躍停機模式):時鐘關閉、外設關閉、RTC開啓。通過RTC中斷、外部中斷、復位,能退出本模式。

3)Halt(停機模式)(功耗最低):時鐘關閉、外設關閉。通過外部中斷、復位,能退出本模式。

另外,上圖同時說明了默認上電時是運行模式,在運行模式時可通過如下方法降低功耗:

1)降低時鐘頻率。

2)關閉沒用的外設時鐘。

3)(香瓜補充)無用的IO口配置爲輸出低。

 

 

四、調試低功耗的調試一般分爲以下幾個步驟:

1、休眠模式的設置;2、I/O口狀態的配置;3、硬件電路的調試;4、各個功能之間的工作間隙。

 

 

 

五.進入低功耗模式與低功耗喚醒流程的具體步驟?

答:

1)進入低功耗模式的流程

①關閉外設時鐘。

②所有IO設置爲輸出低(注意低電平使能的得設置爲輸出高)。

③初始化中斷口的IO。

④時鐘頻率降至最低(2M)。

⑤打開中斷總開關。

⑥調用停機模式的函數。

 

2)低功耗喚醒的流程

①初始化系統時鐘。

②初始化用到的外設。

 

 

所有中斷允許處理器從等待模式退出。只有重置或事件允許處理器從低功率等待模式退出。這種模式在低功率運行模式下執行WFE指令。一個事件的喚醒使系統回到低功率運行模式(參見更多細節)。只有外部和其他特定的中斷允許處理器從停止和active暫停模式退出(請參閱中斷,並在中斷向量表中從主動暫停中喚醒。數據表)。當從停止模式中醒來時,當幾個未決中斷出現時,第一個中斷中斷服務只能是一種中斷模式功能的中斷。這是選擇通過圖30所示的決策過程。如果最高優先級的中斷不能從停止模式喚醒設備,它將會被服務。如果有任何內部或外部中斷(例如,在計時器中)發生中斷指令正在執行,停止指令已經完成,但是中斷調用了在停止指令完成後立即啓動喚醒進程。在這種情況下MCU實際上是從暫停模式喚醒到運行模式,並有相應的延遲在數據表中指定的tWUH。在執行停止指令之前,用戶程序必須清除任何未決的外圍設備中斷(在相應的外圍配置中清除未決的中斷寄存器)。否則,停止指令就不會執行,程序執行也不會執行仍在繼續。

 

MCU激活級別是通過在cfggcr寄存器中編程AL位來配置的(參見全局配置寄存器(cfggcr))。這個鑽頭用於控制MCU的低功率模式。在非常低的功率應用中,MCU大部分時間都在wfi/暫停模式下,並被喚醒(通過中斷)特定的時刻,以執行特定的任務。其中一些重複的任務是足夠短的時間可以直接在ISR中進行處理(中斷服務程序),而不是繼續回到主程序。爲了解決這個問題,你可以在進入低之前設置AL位電源模式(通過執行wfi/停止指令)。因此,中斷例程使設備恢復到低功率模式。然後中斷例程直接返回到低功耗模式。由於寄存器的事實,運行時/isr的執行減少了上下文只在第一次中斷時保存。因此,所有的操作都可以在非常簡單的應用程序中在ISR中執行。在更復雜的,中斷例程可以通過簡單的重置重新啓動主程序美聯。例如,一個應用程序可能需要被自動喚醒單元(AWU)喚醒。每隔50毫秒,就可以檢查一些針/傳感器/按鈕的狀態。大部分的時間,因爲這些大頭針不活躍,MCU可以在不運行的情況下返回到低功率模式主程序。如果其中一個大頭針是活動的,ISR就會決定啓動主程序通過重置AL位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章