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