0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电流监控和调试工具在MCU设计中应用

工程师兵营 来源:互联网 作者:佚名 2018-07-13 10:00 次阅读

构成物联网 (IoT) 的众多器件关联在一起的其中一个原因是对低能耗的要求。为了满足这一要求,需要在一个整体策略内,从多个层面进行优化。一个成功的设计不仅需要选择低功耗的元器件,还要使用软件以最有效的方式使这些元器件协同工作,从而节省可用的电池容量。即使是硬件和软件实现的稍微变动,也会对整体能耗造成很大的影响。

大多数 IoT 器件的核心是为高能效设计的微控制器 (MCU)。典型的低能耗 MCU 包括一系列智能外设,其代表核心处理器来控制 I/O 和基本的系统功能。串行端口 (UART) 通常能够自主地发送和接收数据,而在处理器内核上运行的软件只需在数据接收完成后从相应的缓冲器中传输字节。通过在诸如 Silicon Labs 的 Gecko EFM32 系列的 MCU 等器件上提供链接的 DMA 传输,甚至是这种交互都可以减至最少。这种情况下,处理器内核只需在收到完整消息后唤醒以检查存储器的内容。

通过允许外设管理 I/O,MCU 可以在大部分时间里都处于休眠模式,这样 MCU 的许多部分将关闭,而不会耗电。占空比是处于活动模式的时间与处于休眠模式的时间之比。低占空比对于电池供电的 IoT 应用非常重要,因为休眠模式仅仅消耗微安量级的电流,而活动模式通常会高出几个数量级。

低占空比允许处理器内核大部分时间处于休眠模式,仅在需要时唤醒以收集数据或进行通信。实施低占空比策略的关键是了解软件如何与硬件进行交互。需要确定哪些功能导致 MCU 唤醒时间过长,然后尽可能更换或重写。一直以来,在开发阶段的早期很难实现这一点,因为需要对硬件成品进行测试才能确定。

Silicon Labs 的 Pearl Gecko 入门套件及类似评估板包括高级能量监视器 (AEM) 功能。当与公司Simplicity Studio 中的高级工具结合使用时,可以在软件开发期间,提供极有价值的洞察信息,让开发人员了解应用需要多少能量。这些信息不仅显示了休眠模式的有效性,还揭示功能层级的优化。

图 1: Pearl Gecko 入门套件板上 AEM 模块的实施。

AEM 功能可监控从通过 USB 总线获取电力的板载 LDO 流出的电流。通常,USB 将用于支持调试及将软件下载到目标 MCU。如图 1 所示,当板载开关设置为电池供电模式时,将无法测量电流。

电源开关设置为 AEM 模式时,板控制器收集的数据将传送至 Simplicity Studio 工具,并可使用能量分析器进行显示。AEM 可以测量 0.1 μA 至 50 mA 大范围(动态范围达 114 dB)的电流。这样便可精确分析不同休眠模式状态的影响以及活动模式的功耗。

为了精确测量跨如此大范围的电流消耗,可以将电流检测放大器与双增益级一起使用。放大器用于测量小型串联电阻器上的压降,而增益级使用两种不同的增益设置进一步放大该电压,从而获得两个电流范围。这两个范围之间的过渡发生在 250 μA 左右。在样本导出之前,会在评估板控制器内对数字进行滤波和平均化处理。

每经过一个计时器刻度,AEM 便会对电流进行一次采样和转换,并通过 USB 将电压和计时信息一起发送至开发工具,其每秒生成的电流样本高达 6250 个。

由于能量分析依赖于跟踪数据进行关联,因此需要将 MCU 上运行的代码编译为包含发送使用任意记录格式调试 (DWARF) 数据的语句。发送至调试器的程序计数器 (PC) 样本通过调试数据与目标文件相关联,以找到在 MCU 上运行的相关源文件、函数和 C 代码行。这样便可以将功率测量与各个功能和任务关联起来。

在 Simplicity Studio 中使用分析工具时,用户可以访问三个窗口。它们显示了相关代码、电流消耗图和功能级别视图。通过单击电流图上的任意点,可高亮显示代码列表窗口中的部分代码。这对应于在给定时刻运行且具有给定级别的电流消耗的实际代码段。功能列表提供了每个功能的总能耗及其占整个应用测量总量的百分比。如果用户想要稍后分析信息,则可以将数据导出到文件,然后再将其导入以供进一步分析。

为了说明如何使用 Simplicity Studio 中提供的功耗监控工具,我们来看一个通过 UART 端口进行通信的 MCU 示例。将数据从 Gecko 的 LEUART 缓冲器移至主存储器以供稍后处理的一种简单直接的方法是定期轮询外设。如果数据可用,状态标记 (LEUART_STATUS_RXDATAV) 将指示可以检索数据。

长期高功耗图

图 2: 采用串口轮询的长期高功耗。

在活动处理器内核上运行代码会导致产生几毫安的恒定电流消耗。通过单击图表,可以高亮显示产生此功耗的功能。为了节省能耗,MCU 需要避免使用轮询来检查数据可用性。为实现此目的,可以在数据获取之间将处理器置于休眠状态,并在接收缓冲器数据变得可用时使用中断来唤醒处理器。电流消耗在休眠期间明显下降,而在中断服务例程 (ISR) 运行时则会达到峰值。在能量分析器窗口中准确找到 ISR 后便可以看出这一点。

中断服务响应的实施图

图 3: 实施中断服务响应可以将具有较高电流消耗的时间段缩至更短。

但是,处理数据接收中断后,代码的其他部分可能显示为因保持处理器处于活动状态而消耗了比预期更多的功率。单击相关功能可显示传输功能现在负责额外的功耗。虽然对传输功能进行编程的一个简单方法是设置 while{} 循环以等待每个字节的传输完成,但这将使处理器的运行时间超过必要的运行时间。与接收端口的情况类似,可以将该循环替换为中断(在每个字节传输完成后唤醒处理器)。现在处理器会在每帧字节之间进入休眠模式,从而降低平均电流消耗。

字节级传输之间的休眠图

图 4: 在字节级传输之间进入休眠可进一步降低功耗。

Gecko MCU 上的 LEUART 模块可以在深度休眠模式下工作。在此模式下,高频振荡器处于关闭状态,而低频振荡器(RC 或晶体)仍在运行并为 LEUART 提供时钟。利用这种模式可以使 ISR 处理之间的电流消耗降至微安量级。

提高能效的深度休眠模式图

图 5: 使用深度休眠模式可提高低占空比应用的能效。

通过将更多的缓冲器处理移至链接的 DMA 引擎,使其负责在发送或接收全部帧后触发中断,可以实现进一步的改进。这种策略可以使处理器内核休眠更长时间,且主要通过功能级别的数据分析任务来优化功耗。

结论:

上述示例展示了电流监控和调试工具在优化 MCU 应用能效方面的重要性。不是等到开发结束才能执行能量优化,而在整个开发阶段都可以执行分析,开发人员可以清晰地看到迭代改进。再加上高级休眠模式和无需长时间的处理器干预即可运作的智能硬件,工程团队可以轻松地实现能效方面的重大改进。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    145

    文章

    15899

    浏览量

    342786
  • Silicon Labs
    +关注

    关注

    11

    文章

    306

    浏览量

    62243
  • 电流监控
    +关注

    关注

    0

    文章

    36

    浏览量

    11025
收藏 人收藏

    评论

    相关推荐

    脚本调试工具有哪些?脚本调试工具怎么用?

    脚本调试是软件开发过程中非常重要的一环,它能帮助开发者快速定位并解决代码中的错误。大多数编程语言都提供了各种各样的脚本调试工具,本文将介绍一些常见的脚本调试工具以及它们的基本使用方法。 GDB
    的头像 发表于 12-01 14:40 259次阅读

    GDB调试工具的原理

    一、GDB调试工具的原理 1.1 未执行进程调试 启用gdb调试运行gdb ./test的时候,在操作系统里发生了很多复杂的事情,系统首先会启动gdb进程,这个进程会调用系统函数fork()来创建
    的头像 发表于 11-09 17:04 262次阅读
    GDB<b class='flag-5'>调试工具</b>的原理

    多核应用调试工具CodeViser介绍

    随着各种智能设备的使用,嵌入式微处理器和微控制器被广泛应用于各个领域,复杂应用需要合适的调试工具支持。J&DTech是总部位于韩国专业嵌入式系统软件调试工具供应商。基于调试专业知识
    的头像 发表于 10-20 16:51 394次阅读
    多核应用<b class='flag-5'>调试工具</b>CodeViser介绍

    windows上使用的ble调试工具

    分享一个windows上使用的ble调试工具
    发表于 10-09 07:23

    多串口调试工具ycjCom1

    多串口调试工具_ycjCom1
    发表于 09-25 08:08

    ARM跟踪调试工具1.2版安装指南

    ADS提供。ARM跟踪试工具1.2版用户指南也可作为ADS手册套件的一部分在DynaText查看。(DynaText查看器是ADS安装过程安装的。)
    发表于 08-02 11:02

    单片机开发调试工具有哪些?

    单片机的调试是一个有条不紊的过程,用于查找和减少单片机程序中的错误数量,使其按预期工作。有时候,单片机程序调试很困难,因为某一个系统模块中的微小变化可能会在另一个子系统中产生错误。单片机开发过程中使用的调试工具在开发时间和
    的头像 发表于 07-07 12:29 986次阅读

    CS+ V8.01.00集成开发环境用户手册:RH850调试工具

    CS+ V8.01.00集成开发环境用户手册:RH850调试工具
    发表于 07-06 20:06 0次下载
    CS+ V8.01.00集成开发环境用户手册:RH850<b class='flag-5'>调试工具</b>

    CS+ V8.01.00集成开发环境用户手册:RX调试工具

    CS+ V8.01.00集成开发环境用户手册:RX调试工具
    发表于 07-06 20:05 0次下载
    CS+ V8.01.00集成开发环境用户手册:RX<b class='flag-5'>调试工具</b>

    CS+ V8.02.00集成开发环境用户手册:RX调试工具

    CS+ V8.02.00集成开发环境用户手册:RX调试工具
    发表于 07-05 20:51 0次下载
    CS+ V8.02.00集成开发环境用户手册:RX<b class='flag-5'>调试工具</b>

    IzoT 调试工具数据表

    IzoT 调试工具数据表
    发表于 07-04 20:05 0次下载
    IzoT <b class='flag-5'>调试工具</b>数据表

    IzoT 调试工具(CT) 用户指南

    IzoT 调试工具 (CT) 用户指南
    发表于 07-04 19:50 0次下载
    IzoT <b class='flag-5'>调试工具</b>(CT) 用户指南

    分享一个非常强大的串口调试工具

    LLCOM是一个可运行lua脚本的高自由度串口调试工具
    的头像 发表于 05-29 09:54 3183次阅读
    分享一个非常强大的串口<b class='flag-5'>调试工具</b>

    CS+ V8.09.00集成开发环境用户手册:RH850调试工具

    CS+ V8.09.00集成开发环境用户手册:RH850调试工具
    发表于 05-12 19:28 0次下载
    CS+ V8.09.00集成开发环境用户手册:RH850<b class='flag-5'>调试工具</b>

    一款专业且全面的嵌入式开发调试工具

    不知道大家平时做嵌入式开发时用调试工具进行调试,今天给大家分享一款专业且全面的嵌入式调试工具集:Micro-Lab。
    的头像 发表于 04-15 14:10 801次阅读