
当某些读者看到出版物的标题时可能会胡说八道。 作者在资源上犯了错误吗? 还是计划将其放置在“极客健康”中心? 它们将部分正确,但仅部分正确...在削减范围内,我们将讨论一种减少和优化电子设备能耗的方法。
不久前, X-NUCLEO-LPM01A电路板掉入了我的手,在我决定研究一种具有自主电源的设计设备的功耗之前,它一直处于闲置状态。

该板由意法半导体(STMicroelectronics )开发,定位为“功率屏蔽,用于功耗测量的Nucleo扩展板”。 我没有在网络上找到可与该devkit一起使用的解释性俄语描述,而是决定自己解决这个问题,并同时与受人尊敬的habro社区共享信息。
如果突出显示主电源,则扩展板是一个1.8伏至3.3伏的可编程电源,能够实时测量负载电流(在动态模式下直至
50 mA),采样频率高达100 kHz。 该设备既可以独立运行,也可以作为硬件-软件组合的一部分运行。 为了以图形方式显示测量值,使用了STM32Cube MonitorPower实用程序。 该软件还允许您设置所有必要的参数,并在事件发生时(触发启动)进行处理。 X-NUCLEO-LPM01A经过了锐化处理,可与Nucleo-32( 64,144 ),Arduino Nano(Uno)板配合使用,为此,在其上放置了相应的屏蔽,但是可以与任意板一起使用。 下图显示了被研究设备与板上连接器之一的连接。

除应用程序软件外, X-NUCLEO-LPM01A还支持命令模式, 任何终端程序都应在该命令模式下工作。 (在这里,我似乎有些兴奋, HTerm踢了半个球,但是我不得不和我最喜欢的ZOC一起玩)。 此外,根据描述判断,通过使用VCP驱动程序,该设备可以以高达3686400波特的速度将数据倒入COM端口。 特别是通过传输二进制数据流(对于高于50 KHz的采样频率)来确保如此高的速度,对于ASCII字符,速度会稍低。
更具体地说,我将尝试使用X-NUCLEO-LPM01A解决的任务是:
要在程序代码的研究位置使用触发触发器X-NUCLEO-LPM01A获得有关设计产品中感兴趣节点的动态功耗的信息。
在设备连续运行的过程中,组织必要碎片的积累,以进行后续的广义分析。
下面的屏幕截图显示了数据记录期间SD卡的当前日志。

STM32Cube MonitorPower不仅可以定性,而且可以定量评估所研究设备的能耗。 图片的下部显示了所消耗电流的最小,最大值,平均值和积分能量值。 此类数据可用于整个测量和所选片段。
在用户手册中,请注意,触发触发测量是通过D7 arduino护罩的支腿上的脉冲来执行的。 事实证明,该过程只有一个开始,并随后进行连续记录。 尝试组织起停模式以记录电流(在脉冲的两个前沿)的尝试均未成功。 即,一旦在上升前沿的正确位置开始记录,就不可能通过脉冲下降前沿来减慢该过程。 这与我期望从该设备获得的信息不完全相同。
可以使用终端程序中的命令序列来设置完全受控的启动-停止模式团队 | 说明 |
htc | 主机控制捕获 |
伏特3300-03 | 测量通道上的电源电压3300 mV |
acqtime 0 | 不受时间限制的连续测量 |
频率10000 | 采样频率10 kHz |
开始 | 开始测量 |
... | 计量(将数据倒入终端) |
停止 | 测量结束 |
问题在于这是与目标控制器中的事件不同步的手动控件。 当然,您可以尝试在被研究设备的侧面而不是主机上形成指示的命令序列,但是来自X-NUCLEO-LPM01A的数据输出流也将散布到控制器中,并且不清楚如何处理它们,并将输出重定向到“ somewhere_to_other_place”也不可用,(尽管板上有UART Tx,Rx引脚,但它们在手册中显示为“保留”,并且可能不包含在当前固件版本中)。 我摆脱了这种情况,如下所示:
在主机(计算机)侧形成以下命令序列团队 | 说明 |
htc | 主机控制捕获 |
伏特3300-03 | 测量通道上的电源电压3300 mV |
acqtime 1 | 测量时间 (可以使用10 µs至10秒的范围) |
trigsrc d7 | 测量开始与上升沿同步 D7引脚上的脉冲 |
频率10000 | 采样频率10 kHz |
开始 | 开始测量 |
... | 计量(数据从脉冲的边缘开始并停止 在acqtime指定的时间后倒入) |
现在,将分批捕获数据,而不是连续流。 这种方法使您可以在程序的不同位置和不同时间间隔探索电路的消耗,而这些时间间隔彼此之间相距甚远。 也就是说,如果需要收集有关一个小时(一天,一周)工作的设备的能耗信息,则无需编写连续的流(即使以最大采样率运行),也无需了解这种混乱情况,只需提供上述操作算法即可。 而且,如果终端程序将时间标记写入其日志,如下图所示,那么从此类文件中解析事件的时间顺序将非常简单。

就像带有运动检测和时间戳记的录像机。
让我给您一些使用X-NUCLEO-LPM01A获得的屏幕截图。 首先是从内置ADC读取数据时控制器的功耗。 定时器中断以4 KHz的频率读取32个值,并将其存储在内存中。

第二,类似的读取和保存数据,但是在每次测量之后,只有控制器使用一种可用的节能模式“允许自己进入睡眠状态”,直到下一次定时器中断发生为止。

在测量过程中,电流消耗的明显变化量为〜6 mA,这是很明显的。 这两个示例并未声称可以优化低功耗设备的功耗,而仅演示了X-NUCLEO-LPM01A的功能 ,该功能能够测量1 nA以下的电流。
最后,我要说的是,以我的拙见,这个devkit似乎是一个非常合适的工具,可以在嵌入式表上的示波器和逻辑信号分析仪旁边代替它。 而且,使用上述方法不仅可以“限制控制器”在功率关键型设备开发中的胃口,而且可以更好地了解现代电子设备开发人员积极使用的多种节能模式下的过程动态。
开发板的成本-超过7000卢布,掩盖了图片的彩虹,但是在现代,如此微不足道的数量能否阻止真正的怪胎拥有这种出色的devkit?
PS尽管在UM中指出UART是为将来的应用保留的,但我仍然坚持使用它,发现它作为第二接口(I / O从VCP复制)以921600 8N1的速度运行,并且可以用作命令,形成开始和停止以开始-测量结束。 这种方法的缺点是所研究的控制器必须免费提供免费的UART,更不用说在低时钟频率下通常不可能实现921600波特的事实。
PPS在写完这篇文章之后,我注意到在测量入口处和测量结束时,最后一张照片中〜2 mA的差异。 我可能没有关闭ADC时钟,或者我让定时器工作了,但这是因为Leonid Kanevsky喜欢说:“一个完全不同的故事” ...