H7一直宣传的是高性能,高性能就代表着高能耗。那么我就很好奇,H7的休眠时的低功耗情况如何?ST官网的宣传页面如下
- 在运行模式(外设关),典型为147 µ/MHz @VDD = 3.3 V和25 °C
- 低功耗待机模式下的典型功耗电流为3.5 µA
- 在不带RTC、带4 KB备用的VBAT模式(低功耗模式)下,典型功耗为1.45 *µA
技术手册中sleep、stop、standby、VBAT模式下的参数如下
在开发板上有一个电流检测的排针,JP1,默认跳帽连接,我们可以去除跳帽,然后串入电流表,即可测量H735的电流情况,连接如下
然后创建一个CUBEMX工程
因为我们不需要使用外设,就直接生成工程即可
在main函数中增加stop、standby模式的测试代码
- /* delay5s,留一些时间给下一次烧录,避免在休眠时无法烧录进程序 */
- HAL_Delay(5000);
- #if 0
- /* stop模式 */
- HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
- #endif
- #if 0
- /* standby模式 */
- __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
- HAL_PWR_EnterSTANDBYMode();
- #endif
复制代码
根据需要测试的模式,开启对应的开关
测试过程中我发现有一点很奇怪,烧录完成后休眠功耗偏高很多,但是断电,把供电跳帽从STLK换到CHRG,再上电,电流就正常很多了。我看了原理图,我检测的是3V3流向VDD_MCU的电流,VDD_MCU都是接到了H735上,应该和stlink没啥关系才对,很奇怪
STOP模式电流:984uA
standby模式电流:72.1uA
我注意到standby模式的电流比手册上的高了好多,但是我兜兜转转找了好多资料,尝试了很多,都没能成功。只好作罢
不过我要再分享一下我在找资料的过程中的一些其他发现
1.cubemx还可以仿真计算功耗,就在TOOL中。你可以输入温度、电压、模式、外设配置情况等,软件就可以仿真计算出这种情况下的电流,可以方便的帮助工程师在开发过程中判断当前阶段的电流是否正常。毕竟技术手册中的只是一些典型情况,实际使用中的场景是多种多样的
2.H735芯片内的供电部分非常丰富,可以LDO供电、SMPS供电、SMPS给LDO供电等等
用户可以根据自己的实际情况选择一种适合自己的供电方式。
735开发板默认使用的是SMPS供电方式,SMPS相比LDO模式最大的好处就是降低功耗,但是他也有个坏处,会其他器件造成干扰,所以具体如何选择要看实际使用情况
3.H7的电源管理比较复杂,分成了3个区域,在不同模式下可以对不同的电路进行掉电,这样设计虽然复杂,但是可以最大程度的让功耗处于一个合理的状态,减少不必要的器件的通电
总结:我感觉这次功耗测试没能测试到和手册中近似的值,有可能是以下几个问题
1.硬件上有些电路在漏电,因为这是一块DK板,引脚和很多其他器件连在一起了,可能会有漏电,如果手上有一块通核心的NUCLEO做对比就可以排除这个怀疑了
2.外围供电方式、cubemx、函数调用问题,H7的电源管理十分复杂,供电有很多种,电源域管理也有很多种。我只调用HAL库中通用的函数,有可能没有关闭某些外设,导致的。
|