监控外部输入时降低 MCU 能耗

时间:2023-03-20

今天几乎没有应用程序能够避免降低能耗的需求。对于便携式和电池供电设备的设计人员来说,这是一个影响其产品性能和可用性的限制因素。在国内,EnergyStar 等计划让消费者更加意识到这个问题,不仅是在使用设备时,而且在设备处于待机模式时。能源越来越被认为是一种珍贵而有限的商品。

任何系统总能耗的主要贡献者之一是位于其的微控制器 (MCU) 的性能。因此,设计人员致力于限度地降低 MCU 功耗,重点关注三个关键领域……

个是有功能耗——MCU 可以为给定的能量输入做的有用处理工作量——这显然很重要。MCU 每 MHz 的电流消耗提供了一个现成的衡量指标,32 位 Cortex M3 处理器的基准数据是 Energy Micro 的 EFM32 Tiny Gecko MCU 达到的 150μA/ MHz。

处理器还需要一系列需要尽可能少电流的睡眠和深度睡眠模式。再次以 Gecko 系列处理器为例,停止模式可达到的数字约为 20nA。

然而,在实践中,功耗的第三个方面可能是重要的。如果处理器无法在睡眠时监视外部事件以了解何时唤醒,则睡眠模式几乎没有用处。因此,在实践中,大多数 MCU 大部分时间都处于中间“等待输入”模式。

这种状态的例子很多。智能手机只需要在有来电或消息时唤醒,或者当用户通过 HMI(人机界面)传感器执行适当的操作时。智能水表的“正常”状态是等待水开始流动。

在所有这些情况下,通常的解决方案是让 MCU 定期唤醒以“检查”其感知输入并执行一些计算以查明是否需要采取任何行动。这带来了许多挑战。传感器测量通常需要系统生成特殊的激励和采样模式——例如,电容式传感器需要用正弦波输入来激励。

充其量,在功耗和系统的响应能力之间存在权衡:手机“轮询”其触摸屏界面的次数太少——也许每隔几秒钟——可能会显得迟钝,因此难以使用。

醒来的过程本身就证明是代价高昂的:从睡眠模式过渡到活动模式不会产生任何有用的效果。设计人员可能会发现,让 MCU 处于更高的清醒状态比消耗能量来管理这些转换更有效。

一种更好、更节能的方法是选择具有更自主的外围设备和传感器输入系统的 MCU:这样就不必为每次测量唤醒 CPU。

Energy MicroEFM32 Gecko 系列 MCU 提供了这样一个系统,它结合了低能耗传感器接口 (LESENSE) 和允许 I/O 组件在没有 CPU 干预的情况下进行交互的外设反射系统 (PRS)。因此,EFM32 系列 MCU 可以在功耗低于 1.2μA 的睡眠模式下实现电容式触摸唤醒、金属物体感应或电阻式传感器监控等功能。

图 1.EFM32 外设反射系统配置为启动 ADC 单次转换以响应 TIMER0 溢出,并提供模拟比较器输出作为 TIMER1 上比较/捕获通道的输入。

PRS(图 1)允许将来自片上“生产者”外围设备的信号路由到其他“消费者”外围设备,这些外围设备然后可以根据这些输入执行操作。“生产者”信号包括模拟比较器和 GPIO 电平输出、来自 ADC 和 DAC 的“转换完成”信号、来自计数器/定时器的上溢/下溢信号以及来自 UART 或 USART 的“TX/RX 完成”状态消息。Reflex“消费者”包括 DAC/ADC 触发器、定时器输入和 UART/USART 使能输入。

PRS 有八个通道,每个通道都有一个边缘检测器,可用于从电平信号生成逻辑脉冲。每通道两个寄存器(PRS_SWPULSE 和 PRS_SWLEVEL)允许将每个输出驱动到软件确定的电平或逻辑“1”。

器件的 LESENSE 接口建立在这种自主外设原理之上,允许 MCU 在亚 μA 睡眠模式下监控多达 16 个外部无源(电阻、电容或电感)传感器。它结合了模拟比较器和 DAC,在从 32kHz 时钟源运行的定序器模块的控制下。比较器输出可以计数、比较或作为中断直接传递。为了进行测量,DAC 可用作比较器参考。

定序器控制哪些引脚连接到比较器、比较器处于活动状态多长时间以及何时应传递输出以进行计数或比较。使用 DAC 电压或 GPIO 引脚的激励也可以在比较器处于活动状态之前或期间执行。测量后,计数器或比较器的输出被缓冲和存储以供以后处理。

扫描完成后,结果可以传递到具有可配置“下一个”状态和触发条件的低功耗解码器。这使得捕获大量传感器读数和组合成为可能,并且仅通过随时间匹配模式来唤醒 CPU(图 2)。例如,当温度和湿度传感器都达到其阈值时,或者当压力传感器连续触发 10 次时,可以触发唤醒。

图 2:模拟事件的条件唤醒。

传感器结果也可以通过 PRS 传递,以构建更复杂的系统。这使得逻辑上组合多个 GPIO 引脚以触发唤醒或使用解码器解码串行传输的数据成为可能。

例如,水表中旋转叶片的运动可以用LESENSE测量,并通过PRS与LESENSE连接的正交计数器计算旋转。例如,旋转 10 次后,可以唤醒 CPU 以更新显示和使用统计信息。对于传统的 MCU,比较器的所有排序和控制都需要 CPU,而通过 LESENSE 和 PRS 处理这些可以让芯片保持深度睡眠模式。

电容式感应示例 
电容式感应非常常用于 HMI 应用,例如控制面板和遥控器。原理是将电容传感器包含在 RC 振荡器电路中。当手指触摸传感器时,电容会发生变化,进而改变振荡器电路的基频。

这种安排可以通过将 LESENSE 检测引脚直接连接到外围设备来实现。来自比较器输出的振荡信号被传递到外设,每个上升沿用于递增计数器。设定时间后,LESENSE 将计数器值捕获到结果缓冲区并清除计数器。然后将缓冲的结果与阈值水平进行比较:由于手指触摸会导致较低的振荡频率和较小的计数值,因此只有当计数器值低于阈值时,LESENSE 才会唤醒 CPU。

图 3:电容式传感器。

以这种方式实现的电容感应功能消耗的电流受多个因素的影响,包括电容覆盖层的厚度和采样频率。

经验结果表明,对于采样频率为 5Hz 的 5mm 亚克力覆盖层,每个触摸板的额外消耗约为 500nA。这导致以 5Hz 采样的四按钮触摸应用的总功耗约为 3μA。没有采样的静态功耗小于 1μA。为了改善用户体验,次触摸事件后采样速度可以提高到 10Hz,从而产生 5μA 总功耗。

旋转计数 
正如我们已经观察到的,旋转计数是另一种应用,其中 LESENSE 和 PRS 的组合可以显着降低能耗。这有相当不同的应用,通常在控制和反馈系统中。

一个典型的系统(图 4)是使用带有两个线圈的感应传感实现的,靠近一个旋转的轮子放置,其中一半被金属覆盖。LESENSE 以足够快的速度对每个线圈进行采样,以捕获车轮经过的金属部分。每次采样的输出通过 PRS 系统馈送到正交计数器。如果计数器在同一方向上达到定义的旋转次数(图 4 中的三个),它会发出可用于唤醒 CPU 的中断。

图 4:计数旋转。

总结 
让 MCU 感知外部世界同时让 CPU 处于睡眠模式的技术是降低能耗的重要工具。Energy Micro LESENSE 接口使 EFM32 微控制器能够在执行此操作的同时监控许多不同类型的模拟传感器。从低频时钟源运行,LESENSE 可以在亚 μA 睡眠模式下监控多达 16 个传感器。典型的平均电流消耗约为 1.2μA。

应用包括任何类型的电容式、电感式或电阻式传感、旋转计数、GPIO 状态解码或类似应用。LESENSE 还具有完全可配置的解码器,可以评估传感器状态并在出现特殊的传感器输出组合或检测到随时间变化的模式时唤醒 CPU。因此,节能传感器的实现是无穷无尽的,而可能性仅受设计师想象力的限制。

上一篇:电机控制中可编程 SoC 与专用 MCU 之间的权衡
下一篇:使用混合信号示波器进行高效 I2C 总线调试

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料