|
本帖最后由 wolfgang2015 于 2017-7-5 22:55 编辑 后篇链接: ST线下培训(05-23成都站)STM32L476低功耗设计(二) ——实际测量STM32L476 板子在不同功耗模式下的功耗值 1、实验目标及原理分析 操控STM32L476开发板在以下低功耗模式后测得低功耗值: 1、Shutdown; 2、Standby; 3、Stop2; 4、LPSLeep 2MHz 按照官方手册提供的方法,进入低功耗的相关操作如下: 1)、如需要进入Shutdown模式,步骤如下: a) LPMS="1--"; b) SleepDEEP置位; c) 执行WFI()汇编指令 或 从ISR/WFE返回 在HAL库提供了进入Shutdown模式的函数,在stm32l4xx_hal_pwr_ex.h 中,使用HAL_PWREx_EnterSHUTDOWNMode(); 可进入Shutdown模式; 2)、如需进入Standby模式,步骤如下: a)LPMS="011"; b)RRS置零; c)SleepDEEP置位 d) 执行WFI()汇编指令 或 从ISR/WFE返回 在HAL库提供了进入Shutdown模式的函数, 在stm32l4xx_hal_pwr.h 中,使用HAL_PWR_EnterSTANDBYMode();可进入Standby模式; 3)、如需进入Stop2模式,步骤如下: a)LPMS="010"; b)SleepDEEP置位; c) 执行WFI()汇编指令 或 从ISR/WFE返回 在HAL库提供了进入Stop2模式的函数, 在stm32l4xx_hal_pwr_ex.h中,使用HAL_PWREx_EnterSTOP2Mode();可进入Stop2模式; 4)、如需进入LPSLeep 并使用2MHz系统频率,进入低功耗操作如下: a) LPR置位; B) 执行WFI()汇编指令 ISR返回; 在HAL库提供了进入LPSLeep模式的函数, 在stm32l4xx_hal_pwr.h 中,使用HAL_PWR_EnterSLEEPMode();可进入LPSLeep模式; 另外,需要限定MCU输出2MHz的时钟频率,需要在进入低功耗时对MCU的基础时钟频率进行设置,满足2MHz的系统频率。 2、实验步骤 2.1过程CubeMX代码生成 a)、选择Nucleo-L476RG开发板
b)、使用默认引脚配置,并增加USART2的引脚PA2、PA3设置
c)、使用默认的80MHz的SysCLK
d)、USART2设置:
e)、GPIO设置: LED2 Pin设置
KeyPin设置
f)、NVIC设置
以上搭建了基本应用功能,然后用CubeMX自动生成代码,然后再Keil中进行调试。 备注:这里搭建代码初衷是建立一个标准的工作状态运行环境后,再利用低功耗函数进入低功耗模式,最后通过表格将标准工作状态的能耗与低功耗模式下的能耗进行比较: 标准工作状态使用环境:MCU使用最大主频(80MHz);1~2个LED受程序控制正常闪亮;1个具备中断使能的按键;1个具备收发数据功能的串口设备。 2.2代码调试 之前的LED、按键中断、串口功能可以见之前的系列文章 这里低功耗核心功能函数如下:分别进入ShutDown模式、Standby模式、Stop2模式、LowerPowerSleep模式
这里值得注意的是:进入2MHz主频需要选择MSI,原因在后面描述。 使用以上基础功能对低功耗进行测量后的结果如下 RUN: 15mA;(外设功能活动) SHUTDOWN:0.08uA;(外设功能停止) STANDBY: 0.18uA;(外设功能停止) STOP2: 2.6mA;(外设功能停止) LPSLEEP2MHz: 1.0~3.6mA(外设功能活动);
在进入低功耗功能时还在串口还在发送数据“\0”(波特率不匹配的乱码),截图如下:
2.3试验改进与数据测量 2.3.1关闭必要调度器(FLASH 进入休眠模式)
在进入Low Power Sleep 2MHz模式前关闭调度器 测的各种模式下的功耗值: RUN: 15mA;(外设功能活动) SHUTDOWN: 0.08uA;(外设功能停止) STANDBY: 0.18uA;(外设功能停止) STOP2: 2.6mA;(外设功能停止) LPSLEEP2MHz: 1.0~3.6mA(外设功能活动); 主要针对LPSLEEP的功能改进,应本应用未涉及FLASH的调用,所以对测量结果影响不大,待使用了FSMC接口或IAP相关功能代码后进一步测量。 2.3.2改进引脚功能设置 在进入低功耗之前将无关的引脚功能关闭,或者设置称为逻辑电路的功能。是否能有效降低各种模式下的能耗水平
RUN: 15mA;(外设功能活动) SHUTDOWN: 0.08uA;(外设功能停止) STANDBY: 0.18uA;(外设功能停止) STOP2: 1.55uA;(外设功能停止) LPSLEEP2MHz: 1.0mA(外设功能停止); Stop2 模式 及 LPSLEEP 模式 均出现了功耗下降的情况。但LPSLEEP 2MHz模式与官方提供的最低功耗仍然有差距,优化模式还待挖掘。 2.3.3改进时钟及主频
在CubeMX生成的时钟配置函数中SystemClock_Config(),使用的是HSI,按80MHz额定最大频率跑应用,为规避相关时钟未关闭造成的空转能耗,这里需要将HSI及相关PLL配置关闭停用。 RUN: 15mA;(外设功能活动) SHUTDOWN: 0.08uA;(外设功能停止) STANDBY: 0.18uA;(外设功能停止) STOP2: 1.51uA;(外设功能停止) LPSLEEP2MHz: 0.351mA(外设功能停止); LPSLEEP 模式功耗下降特别大,但仍旧还在百uA级别与官方提供的几十uA还差一个数量级。还需要进一步优化处理。 2.3.4关闭SystemTick及AHB、APB外设时钟进入休眠模式
RUN: 15mA;(外设功能活动) SHUTDOWN: 0.08uA;(外设功能停止) STANDBY: 0.18uA;(外设功能停止) STOP2: 1.51uA;(外设功能停止) LPSLEEP2MHz: 86uA(外设功能停止); LPSLEEP 模式功耗下降几十uA数量级了,界此针对80MHz主频下LED、按键、串口基础功能应用上低功耗优化可以告一段落。已经满足和接近官方提供的参考数据。 2.4试验结果数据汇总一览
main.rar
(5.08 KB, 下载次数: 83)
|
STM32L4R9 QuadSPI Flash通讯速率优化解析 32位总线的DMA传输适配核心方案
【STEVAL-STWINKT1B评测】运行Datalog固件并记录运行时间
【STEVAL-STWINKT1B评测】数字麦/模拟麦对比测试+音频配套上位机软件开发
【板卡评测】STEVAL-STWINKT1B读取 ACC/GYRO/MAG 实时数据
小白也能明白的STM32的低功耗与唤醒机制
【STM32入门学习路径指南】(四步走)
STM32和Arduino对比,谁更耐打?
STM32系统中2种数据掉电保护的方法
STM32 LL为什么比HAL高效?
STM32小白入门指南:从基础到OTA实现方案
微信公众号
手机版
感谢分享!!