當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]本文主要解讀STM32低功耗模式的機(jī)制,并不側(cè)重STM32低功耗的程序?qū)崿F(xiàn),而且借助STM32固件庫實(shí)現(xiàn)STM32低功耗會(huì)變的非常簡單。一、STM32芯片性能使用芯片型號(hào):stm32f030f4,CORTEX-M0.封裝TSSOP20.運(yùn)行模式:內(nèi)部時(shí)鐘(

本文主要解讀STM32低功耗模式的機(jī)制,并不側(cè)重STM32低功耗的程序?qū)崿F(xiàn),而且借助STM32固件庫實(shí)現(xiàn)STM32低功耗會(huì)變的非常簡單。

一、STM32芯片性能

使用芯片型號(hào):stm32f030f4,CORTEX-M0.封裝TSSOP20.

運(yùn)行模式:內(nèi)部時(shí)鐘(HSI),系統(tǒng)時(shí)鐘頻率采用48MHZ。

工作電壓:3.3V

芯片具體參數(shù)如下:



二、芯片功耗

功耗:



芯片工作模式:

工作模式:外設(shè)正常運(yùn)行,內(nèi)核CPU及SRAM供電,未使用外設(shè)的時(shí)鐘默認(rèn)關(guān)閉。

睡眠模式:只有CPU停止工作,各個(gè)外設(shè)正常工作,依靠任何中斷/事件喚醒。

停機(jī)模式:1.8V供電區(qū)域時(shí)鐘被停止,內(nèi)部HSI,PLL,外部時(shí)鐘HSE均關(guān)閉,同時(shí)電壓檢測(cè)器也可進(jìn)入低功耗模式,但SRAM和寄存器不斷電,此時(shí)只能依靠外部中斷(EXTI)和RTC時(shí)鐘才能喚醒。

待機(jī)模式:1.8V供電區(qū)域被時(shí)鐘停止,內(nèi)部HSI,PLL,外部時(shí)鐘HSE均關(guān)閉,同時(shí)電壓檢測(cè)器也可進(jìn)入低功耗模式,SRAM和不屬于待機(jī)電路的寄存器也被斷電關(guān)閉,此時(shí)即使是外部中斷(EXTI)也不能將其喚醒,只能通過復(fù)位(外部復(fù)位,看門狗復(fù)位)、喚醒引腳、RTC時(shí)鐘來喚醒。

注意:無論是在停止模式還是待機(jī)模式下,RTC和IWDG及其時(shí)鐘源不會(huì)被關(guān)閉。

各個(gè)模式功耗:

功耗計(jì)算方式:功耗=工作電壓*工作電流。





I/O模塊損耗:

靜態(tài)損耗:

內(nèi)部上下拉電阻損耗:這部分損耗主要取決于內(nèi)部電阻的大小,一般為了降低內(nèi)部電阻損耗常常需要降低電阻兩端電壓,若引腳為低電壓則采用下拉電阻,若引腳為高電壓則采用上拉電阻。

I/O額外損耗:當(dāng)引腳設(shè)為輸入I/O時(shí),用來區(qū)分電壓高低的斯密特觸發(fā)器電路會(huì)產(chǎn)生一部分消耗,為此可將引腳設(shè)為模擬輸入模式。

動(dòng)態(tài)損耗:對(duì)于懸浮的引腳,由于其電壓不穩(wěn)定會(huì)產(chǎn)生外部電磁干擾和損耗,因此必須把懸浮引腳設(shè)為模擬模式或輸出模式,引腳電壓的切換會(huì)對(duì)外部和內(nèi)部電容負(fù)載產(chǎn)生動(dòng)態(tài)損耗,其損耗與電壓切換頻率和負(fù)載電容有關(guān)。具體損耗值如下:


三、CORTEX-M0低功耗功能、指令、相關(guān)寄存器

CORREX內(nèi)核支持低功耗模式有2種:

睡眠模式:CPU時(shí)鐘停止,對(duì)應(yīng)stm32睡眠模式

深度睡眠模式:系統(tǒng)時(shí)鐘停止,PLL,FLASH關(guān)閉,對(duì)應(yīng)stm32停機(jī)模式。

進(jìn)入睡眠模式:

當(dāng)CPU處理完中斷后軟件必須能使其進(jìn)入睡眠模式,當(dāng)CPU執(zhí)行WFI指令,其將會(huì)立即進(jìn)入睡眠模式,當(dāng)異常產(chǎn)生或中斷被掛起時(shí),其立即被喚醒。

當(dāng)CPU執(zhí)行WFE指令時(shí),它首先會(huì)檢查對(duì)應(yīng)的事件標(biāo)志位,當(dāng)事件標(biāo)志寄存器為0時(shí)進(jìn)入睡眠模式,否則將寄存器事件標(biāo)志清0并繼續(xù)執(zhí)行程序。事件標(biāo)志可由外部事件標(biāo)志或SEV指令產(chǎn)生。

返回方式:通過設(shè)置內(nèi)核SCB寄存器的Sleep-on-exit位,可以選擇系統(tǒng)被喚醒執(zhí)行完中斷服務(wù)程序后進(jìn)入主線程模式后是否立即進(jìn)入睡眠模式。

從睡眠中喚醒:

WFI喚醒或sleep-on-exit:

一般來說,使能的異??梢詥拘褍?nèi)核。對(duì)于一些系統(tǒng),在喚醒后執(zhí)行中斷處理程序前需要先執(zhí)行重新恢復(fù)的任務(wù),則首先需要屏蔽所有中斷(PRIMASK=1),中斷發(fā)生后內(nèi)核被喚醒但不執(zhí)行中斷處理,待執(zhí)行完恢復(fù)任務(wù)后再將PRIMASK設(shè)為0,此后執(zhí)行中斷處理任務(wù)。

WFE喚醒:

使能異??梢詥拘褍?nèi)核。外部事件或SEV指令發(fā)送的事件也可喚醒內(nèi)核。

注意:當(dāng)SCR的SEVONPEND設(shè)置為1時(shí),任何使能/非使能中斷或事件都可喚醒內(nèi)核。

中斷喚醒控制器(WIC):

WIC只有在SCR寄存器DEEPSLEEP位設(shè)為1時(shí)才能使能,WIC不可編程也沒有相關(guān)的控制寄存器,它僅與硬件信號(hào)有關(guān),當(dāng)進(jìn)入深睡眠時(shí)內(nèi)核大部分模塊被關(guān)閉,系統(tǒng)計(jì)數(shù)器也被關(guān)閉,因此當(dāng)內(nèi)核被喚醒時(shí)需要較多的時(shí)間恢復(fù)到睡眠前的狀態(tài)并處理中斷。

外部事件輸入:可在WFE模式下喚醒內(nèi)核。

相關(guān)指令:

WFE等待事件,若無事件則睡眠,中斷、事件喚醒

WFI等待中斷,立即進(jìn)入睡眠,中斷喚醒

SEV軟件發(fā)送一個(gè)事件,在核系統(tǒng)中可喚醒另一個(gè)內(nèi)核。

微控制器軟件接口標(biāo)準(zhǔn):

由指令對(duì)應(yīng)的C語言接口:

//core_cmInstr.h

void__WFE(void)//WaitforEvent

void__WFI(void)//WaitforInterrupt

void__SEV(void)//SendEvent

相關(guān)寄存器:

SCR寄存器:



SEVONPEND:

0:只有使能的中斷或事件才能喚醒內(nèi)核。

1:任何中斷和事件都可以喚醒內(nèi)核。

SLEEPDEEP:

0:低功耗模式為睡眠模式。

1:進(jìn)入低功耗時(shí)為深度睡眠模式。

SLEEPONEXIT:

0:被喚醒進(jìn)入線程模式后不再進(jìn)入睡眠模式。

1:被喚醒后執(zhí)行完相應(yīng)的中斷處理函數(shù)后進(jìn)入睡眠模式。

四、STM32時(shí)鐘管理

運(yùn)行模式下可通過關(guān)閉和降低相關(guān)外設(shè)的時(shí)鐘頻率來減少功耗。

APB外設(shè)時(shí)鐘和DMA時(shí)鐘可用軟件禁止。

睡眠模式停止CPU時(shí)鐘。在CPU睡眠中存儲(chǔ)器接口時(shí)鐘(Flash和RAM接口)可被停止。當(dāng)連接到APB所有外設(shè)的時(shí)鐘禁止后,當(dāng)進(jìn)入睡眠期間AHB到APB橋時(shí)鐘由CPU的硬件關(guān)閉。

CPU進(jìn)入停止模式時(shí)停止V18域、PLL、HSI、HSI14和HSE振蕩器的時(shí)鐘。

HDMICEC,USART1和I2C1即使在MCU進(jìn)入停止模式下仍有能力打開HIS振蕩器(假如HIS被選為這些外設(shè)的時(shí)鐘)。

在LSE振蕩器已使能的情況下,HDMICEC和USART1當(dāng)在系統(tǒng)進(jìn)入停止模式下也可由LSE振蕩器驅(qū)動(dòng)(假如LSE被選為這些外設(shè)時(shí)鐘)。但是這些外設(shè)沒有打開LSE振蕩器的能力。

CPU進(jìn)入待機(jī)模式時(shí)停止V18域、PLL、HSI、HSI14和HSE振蕩器的時(shí)鐘。

當(dāng)設(shè)置DBGMCU_CR寄存器中的DBG_STOP或DBG_STANDBY位,那么CPU在相應(yīng)的深度睡眠模式下也可以具有調(diào)試功能。

當(dāng)系統(tǒng)由中斷(停止模式)或復(fù)位(待機(jī)模式)喚醒后,HSI振蕩器被選為系統(tǒng)時(shí)鐘(不管進(jìn)入停止模式或待機(jī)模式前選用的是何種時(shí)鐘)。

假如當(dāng)前正在進(jìn)行閃存編程,只有在閃存編程全部完成之后才會(huì)進(jìn)入深度睡眠模式(深度睡眠延后)。若當(dāng)前正在使用APB域,那么只有全部完成APB域的操作后才進(jìn)入深度睡眠模式。

五、STM32低功耗設(shè)置



STM32工作模式主要有運(yùn)行、睡眠、停止、待機(jī)4種模式,前面已介紹過。詳細(xì)見第二節(jié)。

供電框圖

由上圖可以看到整個(gè)stm32芯片的供電圖,模擬電路部分采用VDDA獨(dú)立供電,各個(gè)部分可以獨(dú)立被關(guān)斷或開啟。備份電路部分由電池供電,主要有RTC時(shí)鐘及相關(guān)的備份寄存器,VDD掉電后可由電池供電,對(duì)于沒有VBAT引腳的芯片,其電源直接與VDD相連。核心部分分為1.8V工作域和VDD工作域,1.8V工作域主要有內(nèi)核、存儲(chǔ)、外設(shè)部分,VDD供電域主要有I/O、待機(jī)電路(喚醒電路,獨(dú)立看門狗)、電壓調(diào)節(jié)器(VoltageRegulator)。

電壓調(diào)節(jié)器

器件復(fù)位后電壓調(diào)節(jié)器總是打開著的,其根據(jù)應(yīng)用模式有三種不同的工作模式。

運(yùn)行模式:調(diào)節(jié)器以全功耗模式為域(內(nèi)核,內(nèi)存和數(shù)字外設(shè))提供1.8V電源。

停止模式:調(diào)節(jié)器以低功耗模式為保持寄存器及SRAM數(shù)據(jù)部分域提供1.8V的電源。

待機(jī)模式:調(diào)節(jié)器斷電,除了待機(jī)電路及備份域電路外,寄存器和SRAM的內(nèi)容全部丟失。

相關(guān)寄存器介紹:

1,cortex-mo中的SCR寄存器

SEVONPEND:

0:只有使能的中斷或事件才能喚醒內(nèi)核。

1:任何中斷和事件都可以喚醒內(nèi)核。

SLEEPDEEP:

0:低功耗模式為睡眠模式。

1:進(jìn)入低功耗時(shí)為深度睡眠模式。

SLEEPONEXIT:

0:被喚醒進(jìn)入線程模式后不再進(jìn)入睡眠模式。

1:被喚醒后執(zhí)行完相應(yīng)的中斷處理函數(shù)后進(jìn)入睡眠模式。

2,電源控制寄存器PWR_CR



其中與低功耗有關(guān)的控制位:

CSBF:清除待機(jī)標(biāo)志,該位始終讀出為0,寫1清除待機(jī)標(biāo)志。

CWUF:清除喚醒標(biāo)志,該位始終讀出為0。寫1清除喚醒標(biāo)志。

PDDS:掉電深睡眠

0:當(dāng)CPU進(jìn)入深睡眠時(shí)進(jìn)入停機(jī)模式,調(diào)壓器的狀態(tài)由LPDS位控制。

1:當(dāng)CPU進(jìn)入深睡眠時(shí)進(jìn)入待機(jī)模式。

LPDS:深睡眠下的低功耗

0:在停機(jī)模式下電壓調(diào)節(jié)器開啟

1:在停機(jī)模式下電壓調(diào)節(jié)器處于低功耗模式

3,電源控制/狀態(tài)寄存器(PWR_CSR)



EWUP2/EWUP1:使能WKUP2或EWUP1引腳。

0:WKUP1/2引腳作為通用IO口。WKUP1引腳上的事件不能將CPU從待機(jī)模式喚醒。

1:WKUP1/2引腳用于將CPU從待機(jī)模式喚醒,WKUP1引腳被強(qiáng)置為輸入下拉的配置(WKUP1引腳上的上升沿將系統(tǒng)從待機(jī)模式喚醒)。

SBF:待機(jī)標(biāo)志

該位由硬件設(shè)置,只能設(shè)置電源控制寄存器PWR_CR的CSBF位清除。

0:系統(tǒng)不在待機(jī)模式

1:系統(tǒng)進(jìn)入待機(jī)模式

WUF:喚醒標(biāo)志

由硬件設(shè)置,只能設(shè)置電源控制寄存器PWR_CR的CWUF位清除。

0:沒有喚醒事件發(fā)生

1:從WKUP或RTC鬧鐘產(chǎn)生一個(gè)喚醒事件

注意:當(dāng)WKUP引腳已經(jīng)是高電平時(shí),在(通過設(shè)置EWUP位)使能WKUP引腳時(shí),會(huì)檢測(cè)到一個(gè)額外喚醒的事件。

低功耗模式的進(jìn)入與退出問題

1、睡眠模式

進(jìn)入睡眠模式:

當(dāng)STM32在運(yùn)行狀態(tài)時(shí),執(zhí)行WFI或WFE指令可進(jìn)入睡眠模式。

條件:SLEEPDEEP=0,設(shè)為睡眠模式。此時(shí)CPU時(shí)鐘被停止。

若令被喚醒的STM32執(zhí)行完中斷處理任務(wù)后進(jìn)入睡眠模式,則可將SLEEPONEXIT設(shè)為1.

退出睡眠模式:

執(zhí)行WFI指令進(jìn)入睡眠,可通過使能中斷喚醒。執(zhí)行WFE指令進(jìn)入睡眠可由事件喚醒,CPU時(shí)鐘打開。產(chǎn)生事件的兩種方式:

配置一個(gè)外部或內(nèi)部EXTI線做為事件模式。

使能

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉