本帖最后由 聪聪哥哥 于 2025-8-5 20:51 编辑
作为STM32u系列的单片机,低功耗无疑是其一大亮点。
超低功耗的STM32U385xx设备支持多种低功耗模式,以便在CPU无需持续运行时节省电力,例如在等待外部事件时。用户需要自行选择能够在低功耗消耗、较短启动时间和可用的唤醒源之间实现最佳平衡的模式。
STM32U385xx低功耗模式概述详细说明了相关的低功耗模式。一:下面是手册中对几种不同的低功耗的描述:
有关几种模式的介绍:
待机模式
待机模式用于在BOR状态下实现最低功耗。内部调节器被关闭,从而关闭核心域供电。MSI(MSIS和MSIK)RC、HSI16 RC以及HSE晶体振荡器也会被关闭。
RTC可以保持活动状态(带RTC的待机模式,不带RTC的待机模式)。
在待机模式下,欠压复位(BOR)始终处于活动状态。
在待机模式下,每个I/0的状态可以通过软件选择:具有内部上拉、内部下拉或浮动的I/0。
进入待机模式后,除了备份域和待机电路中的寄存器外,SRAM和寄存器内容将全部丢失。可选的是,在待机模式下可以保留全部的SRAM2、8K字节、24K字节或32K字节,这由低功耗调节器提供(待机模式与SRAM2保留模式)。
BOR可以配置为超低功耗模式,以进一步减少待机模式下的功耗。
当发生外部复位(NRST引脚)、IWDG早期唤醒事件或复位、WKUP引脚事件(可配置上升沿或下降沿)RTC事件(警报、周期性唤醒、时问戳)、算改检测或L3C复位模式检测时,该设备将退出待机模式。
唤醒后的系统时钟最高可达12 MHz的MSIS:
关机模式
关闭模式可实现最低的功耗。内部调节器被关闭,从而关闭核心域。HSI16、MSI(MSIS和MSIK)、LSI以及HSE振荡器也会被关闭。
RTC可以保持活动状态(带RTC的关机模式,不带RTC的关机模式)。
在关机模式下,B0R不可用。在这种模式下无法进行电源电压监测,因此不支持切换至备用域。
SRAM和寄存器内容丢失,除了备份域中的寄存器。
当发生外部复位(NRST引脚)、WKUP引脚事件(可配置的上升沿或下降沿)或RTC事件(警报、周期性唤醒时间戳)、篡改检测或I3C复位模式检测时,该设备将退出关机模式。系统时钟在唤醒后为MSIS,频率为12 MHZ。
外部唤醒的介绍:
多个外围设备支持自主模式,使其能够在停止状态0、停止状态1和停止状态2下保持功能并执行DMA传输。它们的中断会从停止状态唤醒。
在停止0和停止1模式下,自主外设包括DAC1(2通道)、LPTIMx(x=1至4)、U(S)ARTx(x=1、3、4、5)、LPUART1、SPIx(x=1至3)、12Cx(x=1至3)、13Cx(x=1至2)、ADF1以及GPDMA1。
在“停止2”模式下,自动外围设备包括LPTIM1、LPTIM3、LPTIM4、LPUART1和I2C3。如果这些外围设备中任意一个请求使用AHB/APB时钟进行DMA传输,那么整个核心域将切换至“停止1”高泄漏模式,并将时钟分配给GPDMA1、已启用的SRAM以及外围设备,以执行自动外围设备DMA传输。随后,核心域将自动返回到“停止2”低泄模式。
二:STM32 cube MX 软件配置如下所示:
三:代码编写如下所示:
3.1 睡眠模式
首先需要配置一下系统的电源供应:
if(HAL_PWREx_ConfigSupply(PWR_SMPS_SUPPLY) != HAL_OK)
{
Error_Handler();
}
进入睡眠模式:
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
实测图片如下所示:
3.2 待机模式
代码如下所示:
/* Enable WakeUp line PWR_WAKEUP_LINE2 connected to PC.13 */
HAL_PWR_EnableWakeUpLine(PWR_WAKEUP_LINE2, PWR_WAKEUP_SELECT_1, PWR_WAKEUP_POLARITY_HIGH);
/* Clear all related wakeup flags*/
__HAL_PWR_CLEAR_FLAG(PWR_WAKEUP_FLAG2);
/* Enter the Standby mode */
HAL_PWR_EnterSTANDBYMode();
3.3 停止模式0:
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERMODE_STOP0, PWR_STOPENTRY_WFI);
/* ... STOP 0 mode ... */
/* Configure the system clock */
SystemClock_Config();
3.4 停止膜式1:
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERMODE_STOP1, PWR_STOPENTRY_WFI);
/* ... STOP 1 mode ... */
/* Configure the system clock */
SystemClock_Config();
可见,测试的几种不同的低功耗模式,在待机模式下的功耗式最低的,只有几个μA,非常适合低功耗的产品应用。
|