如何降低需要监视外部输入的MCU系统功耗
目前几乎没有应用不需要降低能耗。对于便携设备和电池供电设备的设计师来说,这是影响所设计产品的最佳性能与可用性的一个约束条件。在美国国内,诸如能源之星(EnergyStar)等计划使得消费者能够更好地理解这个问题,即不仅要降低设备正常使用时的功耗,而且要降低待机模式下的功耗。越来越多的人认识到能源是一种宝贵且有限的资源。
影响系统总体能耗的主要因素之一是位于系统核心的微控制器(MCU)的性能。因此,设计师一直致力于尽最大可能地减小MCU功耗,他们主要关注三个关键领域。
首先是工作能耗,即在给定能量输入条件下MCU能够提供的有用处理工作量,显然这是非常重要的。可以用每兆赫兹(MHz)的电流消耗来衡量MCU的这个指标,32位Cortex M3处理器的基准数是150μA/MHz。
此外,处理器也需要各种消耗电流尽可能少的睡眠和深度睡眠模式。同样举Gecko系列处理器的例子,停止模式下的电流约为20nA。
然而在实际应用中,影响功耗的第三个因素也许是最重要的。如果处理器在睡眠状态没法监视外部事件以便知道何时苏醒,那么睡眠模式几乎毫无用处。因此在实际使用中,大多数MCU的大部分时间处于中间的“等待输入”模式。
这种情形的例子有很多。智能手机只有在来电或有短信时、或者用户通过人机界面(HMI)传感器做一些操作时才需要被唤醒。智能水表的“正常”状态则是等待水开始流动。
所有这些情况下的常规解决方案是,MCU定期苏醒过来‘检查’其传感输入并进行一些运算,以便发现是否有任务要做。这种方法面临许多挑战。传感器测量一般要求系统产生专门的激励和采样图案,例如,电容传感器需要用正弦波输入进行激励。在功耗和系统响应度之间最好有个权衡:手机“轮询”触摸屏界面次数太少的话(比如每隔几秒)就会给人反应迟钝的感觉而难以使用。而唤醒过程本身的代价就可能比较高,使得从睡眠模式到工作模式的转换简直就是无用功。设计师可能会发现,让MCU处于较高程度的唤醒状态比费力管理这些转换要高效得多。
外设反射系统(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。
计算旋转次数
正如我们已经观察到的那样,旋转计数是LESENSE与PRS组合可以显著降低功耗的另外一种应用。旋转计数有完全不同的应用,通常是在控制和反馈系统中。
典型系统(图4)可以使用带两个线圈的感性传感来实现,方法是将两个线圈靠近一个旋转轮放置,旋转轮的一半则用金属覆盖。LESENSE足够快的采样每个线圈,以捕捉经过的轮子金属部分。每次采样的输出通过PRS系统馈送给正交计数器。如果计数器在相同方向达到定义好的旋转次数(图4中的3次),它产生一个中断,这个中断就可以用来唤醒CPU。
图3: 容性传感器。
图4: 计算旋转次数。
本文小结
给MCU提供感知外部世界的功能同时让CPU处于睡眠模式的技术是降低能耗的重要手段。
|