在线工博会

如何降低需要监视外部输入的MCU系统功耗
Energy Micro公司 Anders Guldahl
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
目前几乎所有应用都需要降低能耗。对于便携设备和电池供电设备的设计师来说,这是影响所设计产品的最佳性能与可用性的一个约束条件。在美国国内,诸如能源之星(EnergyStar)等计划使得消费者能够更好地理解这个问题,即不仅要降低设备正常使用时的功耗,而且要降低待机模式下的功耗。越来越多的人认识到能源是一种宝贵且有限的资源。
影响系统总体能耗的主要因素之一是位于系统核心的微控制器(MCU)的性能。因此,设计师一直致力于尽最大可能地减小MCU功耗,他们主要关注三个关键领域。
首先是工作能耗,即在给定能量输入条件下MCU能够提供的有用处理工作量,显然这是非常重要的。可以用每兆赫兹(MHz)的电流消耗来衡量MCU的这个指标,32位Cortex M3处理器的基准数是150μA/MHz,Energy Micro公司的EFM32 Tiny Gecko MCU就能达到这个指标。
此外,处理器也需要各种消耗电流尽可能少的睡眠和深度睡眠模式。同样举Gecko系列处理器的例子,停止模式下的电流约为20nA。
然而在实际应用中,影响功耗的第三个因素也许是最重要的。如果处理器在睡眠状态没法监视外部事件以便知道何时苏醒,那么睡眠模式几乎毫无用处。因此在实际使用中,大多数MCU的大部分时间处于中间的“等待输入”模式。
这种情形的例子有很多。智能手机只有在来电或有短信时、或者用户通过人机界面(HMI)传感器做一些操作时才需要被唤醒。智能水表的“正常”状态则是等待水开始流动。
所有这些情况下的常规解决方案是,MCU定期苏醒过来‘检查’其传感输入并进行一些运算,以便发现是否有任务要做。这种方法面临许多挑战。传感器测量一般要求系统产生专门的激励和采样图案,例如,电容传感器需要用正弦波输入进行激励。在功耗和系统响应度之间最好有个权衡:手机“轮询”触摸屏界面次数太少的话(比如每隔几秒)就会给人反应迟钝的感觉而难以使用。而唤醒过程本身的代价就可能比较高,使得从睡眠模式到工作模式的转换简直就是无用功。设计师可能会发现,让MCU处于较高程度的唤醒状态比费力管理这些转换要高效得多。
一种更好更高效的方法是选择拥有更加自治的外设与传感器输入系统的MCU:这样,CPU不必醒过来做每次测量。Energy Micro公司的EFM32 Gecko系列MCU就可以提供这样的系统,它整合了低能耗传感器接口(LESENSE)和外设反射系统(PRS),不需要CPU干预就能实现与I/O元件的交互。因此EFM32系列MCU可以在睡眠模式下实现许多功能,比如容性触摸唤醒、金属物体检测或阻性传感器监视等功能,消耗电流不到1.2μA。
外设反射系统(PRS)(图1)允许片载“产生器”外设产生的信号被路由到其它“消费”外设,然后再由那些消费外设根据这些输入完成相应的操作。“产生器”信号包括模拟比较器和GPIO电平输出、来自ADC和DAC的“转换完成”信号、来自计数器/定时器的上溢/下溢信号以及来自UART或USARTR “发/收完成”状态消息。反射的“消费”外设包括DAC/ADC触发器、定时器输入和UART/USART使能输入。

(图片)

图1: 经过配置的EFM32外设反射系统可以根据TIMER0溢出信号启动一次ADC转换,
同时提供模拟比较器输出,作为TIMER1中比较/捕捉通道的输入

PRS有8个通道,每个通道都有一个边沿检测器,可以用来从电平信号产生逻辑脉冲。每个通道的两个寄存器(PRS_SWPULSE和PRS_SWLEVEL)允许每个输出被驱动到软件定义的电平或逻辑‘1’。
MCU的LESENSE接口建立在这种自治外设原理之上,允许MCU在不到1?A的睡眠模式下监视多达16个外部无源(电阻、电容或电感)传感器。这种MCU整合了模拟比较器和DAC,并受运行于32kHz时钟源的定序器控制。比较器输出可以用于计数、比较或直接用作中断。要想实现精确测量,可以将DAC用作比较器的参考基准。
定序器控制哪个引脚连接到比较器、比较器工作了多长时间以及何时应该将输出送去计数或比较。也可以在比较器工作之前或工作之中利用DAC电压或GPIO引脚进行激励。在测量之后,计数器或比较器输出被缓冲和存储,以供随后的处理。
在扫描完成后,结果将被传送给一个低功耗的解码器,这个解码器具有可配置的“下一个”状态和触发条件。这样便可能捕捉许多传感器读数和组合,并且仅在匹配一段时间内的图案后才唤醒CPU(图2)。例如,当温度和湿度传感器都达到各自的阈值时才触发唤醒,或者当压力传感器连续触发10次时才唤醒CPU。

(图片)

图2: 基于模拟事件的条件唤醒

传感器结果也能经过PRS搭建更复杂的系统。这样就可以从逻辑上组合多个GPIO引脚来触发一次唤醒,或使用解码器解码串行传送的数据。
举例来说,水表中旋转叶片的运动可以用LESENSE来测量,而用正交计数器计数的旋转叶片是通过PRS连接LESENSE的。比如经过10次旋转后,CPU可以被唤醒以更新显示器和使用统计数据。在使用传统MCU时,比较器的所有排序和控制都需要CPU参与,而通过LESENSE和PRS处理可以使CPU芯片处于深度睡眠模式。
容性检测示例
容性检测在控制面板和遥控等HMI应用中很常见。原理是在RC振荡器电路中包含容性传感器。当手指触摸传感器时,电容值发生改变,进而改变振荡器电路的基频。
这种安排可以通过将LESENSE检测引脚直接连接到外部设备来实现。来自比较器输出的振荡信号被送到这个外设,每个上升沿用于增加计数值。在经过一段设定的时间后,LESENSE将计数器值传送给结果缓冲器,然后复位计数器。然后缓冲的结果将与阈值电平进行比较:由于手指触摸会导致更低的振荡频率和更小的计数值,因此LESENSE只在计数值低于阈值时才会唤醒CPU。
以这种方式实现的容性检测功能所消耗的电流受几种因素的影响,包括容性覆膜的厚度和采样频率。
经验表明,对于5mm的丙烯酸覆膜和5Hz的采样频率,每个触摸板增加的功耗约500nA。对于4键触摸、采样频率为5Hz的应用来说总功耗大约是3?A。没有采样时的静态功耗不到1μA。为了改善用户体验,在第1次触摸事件后采样速度可以增加到10Hz,此时总功耗为5μA。

(图片)

图3: 容性传感器

计算旋转次数
正如我们已经观察到的那样,旋转计数是LESENSE与PRS组合可以显著降低功耗的另外一种应用。旋转计数有完全不同的应用,通常是在控制和反馈系统中。
典型系统(图4)可以使用带两个线圈的感性传感来实现,方法是将两个线圈靠近一个旋转轮放置,旋转轮的一半则用金属覆盖。LESENSE足够快的采样每个线圈,以捕捉经过的轮子金属部分。每次采样的输出通过PRS系统馈送给正交计数器。如果计数器在相同方向达到定义好的旋转次数(图4中的3次),它产生一个中断,这个中断就可以用来唤醒CPU。

(图片)

图4: 计算旋转次数

本文小结
给MCU提供感知外部世界的功能同时让CPU处于睡眠模式的技术是降低能耗的重要手段。Energy Micro LESENSE接口可以帮助EFM32微控制器在深度睡眠模式下监视许多不同种类的模拟传感器。在低频时钟源下运行的LESENSE可以在不到1μA的睡眠模式下监视多达16个传感器。典型的平均电流消耗约1.2μA。
该方案可以应用于各种容性、感性或阻性检测、旋转计数、GPIO状态解码或类似应用。LESENSE还有一个完全可配置的解码器,它能评估传感器状态,并在传感器输出的特定组合发生时或检测到某段时间内的匹配图案时唤醒CPU。综上所述,具有能源友好的传感器实现永无止境,而可能性仅限于设计师的想像力。 11/3/2012


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站