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