本帖最后由 toofree 于 2019-5-13 15:02 编辑 NUCLEO-G071RB之——2、RUN模式功耗测试 看了STM32G071x8/xB数据手册,运行模式下功耗参数相当不错,于是动手测试了一下。得到的结果比较满意。 7 l: d" R1 \# X, s 先看看数据手册(DS12232 Rev 2,第62页),RUN模式功耗大概100uA/MHz。+ ~. d9 N @0 e* N+ W5 a 0 Y5 @1 x1 f- [- I. z, Z [' Q 0 }6 ^3 i, q6 ^8 P3 s 对照原理图,MCU连接外设的管脚不多。USART2两个管脚,SWD管脚,一个LED控制管脚。除此之外,用户按键、复位电路、外部晶振(不用的话)都没有功耗。 ; I, z$ w h, J7 W7 K 可以看到三个电源都是接到了VDD,那么只要测试MCU总电源VDD的入口电流就可以。9 _8 M5 X9 v+ H% _1 F JP3跳线帽移除,串联进去万用表,可测试电流。" s7 U- ^/ X l! g; ` Y" ~/ c 用了MOS管驱动LED点灯,最大限度的减小了MCU IO口输出功耗对测试的影响,PA5高电平状态也就相当于有3.3uA的电流,低电平时更是避免了LED上拉电压对IO口的影响。 % M7 s7 G- G! v* m8 l; }+ l 用STM32CubeMX 5.0.1建立测试工程,步骤忽略。 只使用了Systick计数器;PA5设置为输出;SWD功能禁掉,PA13、PA14作为IO输出功能);USART2_TX、USART_RX管脚没有处理,自然是作为默认输入状态,不产生功耗。 3 @5 w) X5 H' O& c1 g9 r 数据手册中提供了两种测试参数,即使用16MHz的内部时钟源,分别是系统时钟为16MHz和64MHz的状态,因此本次实验也对这两种状态分别测试。(贴末附有测试工程压缩包。)+ Y4 F0 I; M" j4 h# I# u: F 16MHz系统时钟工程设置: 64MHz系统时钟工程设置: 先使用STM32CubeMX的Tools工具对功耗进行估算,两种系统时钟下分别为1.54mA、6.62mA。 " w2 t/ d7 [. D) P0 u% k! u Y 设置方法,点“Step”的“加号”添加方案,弹出设置选项。 如下图进行设置。由于要点LED灯,用到了GPIOA外设,因此需要勾上GPIOA,勾上后多出来功耗44.8uA;不添加GPIOA外设的功耗为1.5mA;相加得总功耗为1.54mA。7 U% @! W9 Q b+ S 对比添加GPIOA外设的功耗关系。/ Z5 B+ ?4 |/ ^% i k/ b7 z 2 _, a! ~, O: _9 V# I STM32CubeMX生成Keil测试工程。只“main.c”文件的主程序循环中,添加了HAL_Delay()延时和LD4闪灯。这时设置LD4点亮的延时参数为1ms,熄灭时间为999ms,也是为了最大程度降低点亮LED时,PA1管脚输出电流对整体功耗的影响。让LD4灯闪的目的,是让更直观的看到程序的确是在运行。(在NUCLEO-G071RB板上LED丝印名称为LD4,在程序中用了LED4,见到本贴中的LD4或LED4,都是一回事,不必计较!) 4 K" n; v- |7 p) J “main.h”文件中自动生成有LED4的GPIO和Pin脚宏定义。 经测试得出结果: 使用内部时钟源HSI16,系统时钟为16MHz时的电流为 1.427 mA,相当于1.427/16=89.2uA/MHz; 使用内部时钟源HSI16,系统时钟为64MHz时的电流为 5.675 mA,相当于5.675/64=88.7uA/MHz。 (测试图片没得拍,两只手拿着万用表表笔,串联到JP3两端给供得电。)5 Z, w) Z$ w: W- l0 B7 f" w- a 2 W. G$ P; W1 l, `& \3 U 至此实验结束,实验结果与预期一致。 , k A2 ?" l* @9 B6 \ 附上实验相关文件及测试工程:. k/ }- H. [ U% h/ ~, d" a |
多谢图图捧场支持 !
七哥的帖子一定要好好捧场
原来现任每天发签到帖的管管叫图图
要加现任图图的QQ吗:694319435 嘻嘻
管管就是贵人多忘事,我们已是QQ好友了,之前只是没对应上
1551 好尴尬啊!对不起 我不是故意的 我们太久没聊天惹!
看你们聊得这么欢,我觉得有必要刷一波存在感了~
头像什么时候换成这只猫了!
趁你不注意的时候,哈哈~~