本次测评主要测量一下STM32H533进入低功耗模式的功耗情况。
一、STM32H533RE功耗模式
首先来了解一下,STM32H533有几种功耗模式。
查看数据手册和参考手册,有以下三种低功耗模式:休眠、停止、待机模式
1、休眠模式
关闭CPU时钟,中断系统和滴答时钟正常运行,并且可以被中断或者事件唤醒。
2、停止模式
这种模式能够实现最低功耗,并且SRAM内容和寄存器不变,所有的内核区域始终被停止,只有LSI和LSE晶振在运行,RTC也可以配置为运行或者关闭,其他被关闭。并且从停止模式退出后,可以在64M HSI的晶振运行。
3、待机模式
1)待机模式下,内部稳压器是关闭的,因此内核区域是下电了;
2)PLL、HSI RC、HSI48、CSI RC HSE也是被关闭的;
3)RTC可以保持活跃状态;
4)IO状态是保持与进入待机模式之前一样;
5)进入待机模式,SRAM和寄存器的数据是不保持的;除了备份寄存器
6)可以通过外部复位引脚、看门狗复位、唤醒引脚事件、RTC事件唤醒。
具体模式以及唤醒可以看下表
二、电源管理
低功耗模式很大因素和内部电压也有关系。简单看一下,STM32H533内部电源管理
运行模式下电压范围有4种;停止模式下有3种。具体如图所示
注意:
- 上电复位、从停止模式或者待机模式退出后,内核电压是被设置在VOS3(也就是运行模式最低电压);具体可以根据性能要求通过调整PWR_VOSCR 寄存器的VOS bits 。
- 进入停止模式时,必须先设置PWR_PMCR寄存器中的SVOS level 。
好了,了解完基本的信息,来看一下,各个模式下的功耗吧
三、功耗测试
1、编写代码
/* Private define ------------------------------------------------------------// USER CODE BEGIN PD /#define STOP_MODE 0#define SLEEP_MODE 0#define STANDY_MODE 1/ USER CODE END PD */
/* Private macro -------------------------------------------------------------// USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------/void SystemClock_Config(void);/ USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------// USER CODE BEGIN 0 */
/* USER CODE END 0 */
/**
[url=home.php?mod=space&uid=159083]@brief[/url] The application entry point.
@retval int
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init // Delay 5 seconds /HAL_Delay(5000);/ USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals /MX_GPIO_Init();MX_ICACHE_Init();/ USER CODE BEGIN 2 // Enter the CPU to SLEEP mode */
#if SLEEP_MODE
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI) ; //PWR_MAINREGULATOR_ON这个参数是不可用于STM32H5的,主要是保持兼容其他产品
#elif STOP_MODE
/只调用这个,默认配置PMR_PMCR的SVOS为保留/
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);//PWR_MAINREGULATOR_ON这个参数是不可用于STM32H5的,主要是保持兼容其他产品
#elif STANDY_MODE
HAL_PWR_EnterSTANDBYMode();
#endif
// HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI) ;
//HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
/* USER CODE END 2 */
/* Infinite loop // USER CODE BEGIN WHILE /while (1){/ USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
2、测试
1)睡眠模式
1.3uA
2)停止模式
万用表测不到;低于150nA
3)待机模式
H533RE-LED.zip (1.31 MB)(下载次数: 5, 2024-7-11 22:23 上传)