一款好的電子產品,都需要認真考慮電源管理的問題,電池供電的產品更應該注意低功耗的實現。
STM32電源介紹
嵌入式開發直播課 - STM32 USART串口的應用 - 創客學院直播室?www.makeru.com.cn
每一塊STM32芯片中都有一個電源控制器(PWR),不同系列的STM32有相似,也有差異。
1.電壓
絕大部分STM32的電壓要求介于 1.8 V 到 3.6 V 之間,嵌入式線性調壓器用于提供內部 1.2 V 數字電源。2.類型
STM32的電源通常分為三類:數字電源、模擬電源、備份電源。
數字電源:VDD也是其主電源,主要用于數字部分;
模擬電源:VDDA用于模擬部分的電源,比如ADC,這樣可以單獨濾波并屏蔽 PCB 上的噪聲。
備份電源:VBAT用于備份區域的電源,比如RTC、備份SRAM等,一旦主電源斷開,VBAT可以為這些區域提供電源。

▲ STM32F4備份域
3.調壓器多數STM32都有電源調節器(有些型號沒有),為備份域和待機電路以外的所有數字電路供電,調壓器輸出電壓約為 1.2 V。
運行模式:調壓器為 1.2 V 域(內核、存儲器和數字外設)提供全功率。停止模式:調壓器為 1.2 V 域提供低功率,保留寄存器和內部 SRAM 中的內容。待機模式:調壓器掉電。除待機電路和備份域外,寄存器和 SRAM 的內容都將丟失。
STM32的低功耗模式
STM32的工作模式通常可分為4類:運行模式、睡眠模式、停止模式、待機模式。根據STM32類型不同,可將工作模式進一步劃分。比如STM32L低功耗系列,睡眠模式可進一步劃分為:普通睡眠模式和低功耗睡眠模式。
- 以STM32F4為例:
- 運行模式:默認進入該模式;
- 睡眠模式:內核停止,外設保持運行
- 停止模式:所有時鐘都停止
- 待機模式:1.2 V 域斷電

▲ STM32睡眠/停止/待機模式圖解
STM32低功耗設計要點
STM32低功耗通常會結合項目實際情況,以及應用場景來進行針對性設計。以下面幾個案例來進行說明。
案例一:有工程師提到:STM32F103 進入STOP 模式后無法通過串口喚醒 ?
分析原因:這位工程師對低功耗喚醒機制理解有誤:STM32進入 STOP 模式后不能直接通過 UART 等中斷外設喚醒, 只能通過 EXTI 外部中斷方式喚醒。
解決辦法:我們可以在 MCU 進入 STOP 前將 RX 腳設為 EXTI 模式,并使能對應的中斷來實現。案例二:有工程師提到:STM32F051進入低功耗之后,實際功耗遠大于理想功耗。分析原因:造成問題的原因可能是工程師通過直接調用“停止模式”,進入低功耗,但部分IO外部有上拉電阻,進入低功耗之前未做調整,導致功耗偏大。
解決辦法:進入低功耗之前,對使用和未使用IO狀態進行調整。比如有外部上拉,可配置成模擬輸入等。
案例三:有工程師提到:通過按鍵喚醒STM32F103,串口不能正常工作?分析原因:經分析發現,開發者進入的低功耗模式為待機模式,喚醒之后,未初始化串口外設,導致串口不能正常工作。在待機模式下,所有外設都關閉,意味著所有外設配置都為默認值。解決辦法:喚醒STM32之后,重新初始化串口(以及所有使用的)外設。
復盤一下
▼電源基礎知識:需要掌握電源電壓、類型、調節器;
▼低功耗模式:有四種,運行模式、睡眠模式、停止模式、待機模式
▼低功耗設計要點:避免因基礎原理導致的錯誤。
