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
    +关注

    关注

    146

    文章

    16840

    浏览量

    349715
  • Silicon Labs
    +关注

    关注

    11

    文章

    318

    浏览量

    62437
  • 电流监控
    +关注

    关注

    0

    文章

    39

    浏览量

    11098
收藏 人收藏

    评论

    相关推荐

    TCP&UDP调试工具

    TCP&UDP调试工具
    发表于 10-30 10:41 0次下载

    MODBUS调试工具(modscan32)

    MODBUS调试工具(modscan32)
    发表于 10-24 10:39 0次下载

    更强的无线(双)串口数据记录 调试工具

    1、介绍这是一个具备Wi-Fi功能的无线双串口调试工具;除了基本的无线串口外还具备将串口数据自动记录到TF卡,可自定义数据上报地址,预留可定义IO功能逻辑等功能,具有很高的可玩性;配合自研上位机
    的头像 发表于 08-02 08:11 476次阅读
    更强的无线(双)串口数据记录 <b class='flag-5'>调试工具</b>

    求助,请问ESP8266调试工具在哪里下载?

    请问ESP8266调试工具在那里下载?
    发表于 07-22 07:42

    借用J-link调试工具进行消息的发送

    幽默的小编先问大家一个问题:想让我们的MCU打印出一段消息,需要怎么办才能让这段消息显示PC端呢?相信大家最常用的方式是通过MCU的串口将消息打印到PC端的串口调试终端上。那再换一个
    的头像 发表于 07-16 15:00 379次阅读
    借用J-link<b class='flag-5'>调试工具</b>进行消息的发送

    这个调试工具咋卖39.9?分析了原理后,我悟了

    工程名称:立创DAPLINK调试工具前言今天,讲透这个嵌入式产品的设计原理。如图所示,这是一个基于立创·GD32F407天空星开发板设计的DAPLINK调试工具。是本次的学习案例。下文会围绕其
    的头像 发表于 06-21 08:04 180次阅读
    这个<b class='flag-5'>调试工具</b>咋卖39.9?分析了原理后,我悟了

    请问esp32的wifi调试工具是用哪个?

    请问依稀啊esp32的wifi调试工具是用哪个?
    发表于 06-21 06:33

    CW-DAPLINK调试工具

    CW-DAPLINK是武汉芯源半导体有限公司专为CW32系列MCU的在线调试和编程工具而设计的。 它通过SWD接口和应用单板的MCU进行在线通信。通过CW-DAPLINK的全速USB接
    的头像 发表于 04-09 17:16 669次阅读
    CW-DAPLINK<b class='flag-5'>调试工具</b>

    使用STM32L4系列芯片时,调试工具JLink必须是V9或以上版本吗?

    大家好,我使用JLink V8下载并调试STM32L4R9ZI芯片的时候发现会有警告框。参考正点原子“潘多拉STM32L475开发板教程”,教程建议使用调试工具JLink时候,必须
    发表于 04-08 06:17

    什么是CAN总线调试工具调试的内容主要包括哪几个方面?

    CAN总线调试工具是用于对CAN总线进行调试和故障排除的设备或软件工具,它们具有高速数据捕获能力、数据过滤和触发功能,以及用于解析和显示CAN帧的软件界面。
    的头像 发表于 04-03 11:23 954次阅读

    如何在CY8CPROTO-062S2-43439配置AIROC蓝牙测试和调试工具CYW43439?

    如何在 CY8CPROTO-062S2-43439 配置 AIROC 蓝牙测试和调试工具CYW43439? 该设备我的电脑中被检测到 KitProg3 USB-UART,并且还显示
    发表于 02-29 08:14

    电流探头电机调试的具体测试方法和操作步骤

    电流探头电机调试的重要性 电流探头电机调试
    的头像 发表于 01-08 15:40 540次阅读

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

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

    如何使用GDB调试工具

    qemu-system-x86的pid为269427,则用下面的命令将进程附加到GDB调试 gdb attach 269427 #gdb attach [进程号] 或者先打开gdb,gdb
    的头像 发表于 11-09 17:17 739次阅读
    如何使用GDB<b class='flag-5'>调试工具</b>

    GDB调试工具的原理

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