无论是用于智能电表,无线传感器节点还是移动健康监测产品,微控制器都是许多实时应用的核心,这些应用要求对现实事件做出及时响应。在许多这些应用中,微控制器(MCU)依赖于复杂的睡眠模式技术,这些技术可以暂停大部分或全部操作,从而最大限度地降低能耗,使其能够在有限的能源上运行数年甚至数十年。这些实时环境给设计人员和程序员带来了特殊的挑战,因为降低MCU能耗的相同睡眠状态通常也会降低其快速响应事件的能力。
本文将帮助您理解您需要的技术和架构功能可确保您的传感器/控制网络能够可靠地支持其所有实时任务,同时最大限度地延长电池寿命。
新应用需要较长的使用寿命
低成本,高能效的嵌入式处理器和智能对象技术的出现推动了智能建筑/智能家居,智能电网,安全,环境监测和能源管理系统等应用的智能分布式网络的发展。同样的技术也被用于为智能电表等现有产品增加智能,用于能源,天然气和水的分配以及健康,健身和便携式医疗设备。虽然操作和设计要求差异很大,但所有这些应用必须使用其电池或能量收集系统提供的有限能源资源可靠运行多年。
AA碱性电池通常用于为许多分布式系统元件供电初始容量为1500-2500 mAh,但当考虑到其自放电率时,设计人员应该可以使用大约1000 mAh的电池,使用时间超过电池标称的5 - 7年使用寿命(图1)。
图1:AA/LR6碱性电池的保质期与温度的关系。由Energizer Battery Manufacturing Inc.提供
一些埋藏或难以接近的应用(如智能无线水表和煤气表)面临更大的挑战。为了达到10 - 20年的使用寿命,他们使用具有专门的低泄漏化学品的电池。因此,必须积极调整仪表的能源预算,以保持在全球市场中具有竞争力的价格。
对于这些应用,功耗预算为5-20μA(平均/稳态)并不罕见)。典型设计可能具有能量预算,可分配20%的可用容量来传输活动,30%用于接收命令,20%用于数据收集和系统维护。这样只剩下30%的电池容量来支持系统的睡眠/空闲模式,它将占用超过99%的寿命。同样,依赖于热能或光伏能量收集系统的分布式传感器网络中的无线节点必须依赖于1-2 mAh/天的能量预算。
管理mcu唤醒时间至关重要
如果功能受限的应用程序得到正确实施,大多数能源密集型子系统(RF和PHY层收发器,显示器等......)已经设计为仅在其活动状态下花费尽可能多的时间,因此它们需要可能是MCU代表了优化系统总功率预算的最佳机会之一。通过充分利用MCU的待机和休眠模式,可以实现大部分额外的节能。
大多数现代MCU具有多种低功耗模式(通常为“睡眠/待机”,“深度睡眠“和”关闭“),具有不同级别的CPU,内存和I/O功能。 “睡眠/空闲”和“深度睡眠”模式的具体功能因处理器而异,但所涉及的一般原则基本相同。
一般来说,睡眠越深,MCU消耗的功率越少。
然而,由于从较深的睡眠模式唤醒需要更多时间,因此节省电力是有代价的。影响唤醒时间的一些因素包括:
唤醒电路中的滞后和传播延迟
MCU内核电源管理的启动和稳定
重新启动并稳定CPU时钟电路
恢复处理器的寄存器和其他内部配置
恢复系统内存
服务所需的CPU周期触发重启的中断
实时响应与节能
如果主处理器必须处理的所有事件,实现低功耗操作相对容易是可以预测的。如果节能是唯一的问题,系统将默认为“关闭/关闭模式”。在这种情况下,处理器可以在编程其实时时钟(或其他时序逻辑)之后进入掉电模式,以足够早地触发唤醒过程,以确保它为下一个事件做好准备。需要处理器进入其活动模式的更可预测事件的一些示例包括:
许多使用ZigBee/802.15,Wi-Fi和其他无线技术的应用都需要时隙协议,这些协议要求主处理器定期检查来自其他网络节点的消息。
Real-时钟中断与系统相关的任务,定期计划的收集数据到达以及其他可预测的外部事件。
不幸的是,上一节中描述的大多数应用程序也需要MCU来实时响应计划外事件 - 或至少半实时响应。这些事件的示例包括:
运动/加速度数据,阈值/警报条件,电源中断以及其他重要的非计划事件可能要求主机处理器在几毫秒或几微秒内响应以防止系统损坏或避免丢失关键数据。
某些有线和无线协议以随机间隔传输,要求处理器或专用无线电控制器随时准备好响应传入的数据包。/li>
从这些示例中,很容易看出,如果您选择的睡眠模式太深,MCU恢复正常运行可能需要很长时间才能及时响应触发的任何内容唤醒状态。缺少警报/警报可能意味着丢失关键数据,对用户命令的响应速度慢得令人无法接受,或者损害整个网络的响应时间。
低功耗rtos - 创新还是矛盾?
< p>进一步使问题复杂化的是实时操作系统(RTOS),它们开始在一些嵌入式应用中获得认可,因为它们可以为设计带来确定性行为和简化的编程。除了它的优点外,RTOS还带来了另一层次的技术挑战。希望实现RTOS的设计人员必须解决到目前为止所讨论的所有问题,但他们还必须牢记:
许多RTOS要求MCU处于活动状态(或至少处于待机状态)状态和只有少数(如AVIX和FreeRTOS)可以在深度睡眠/关闭模式下支持它们。
RTOS通常会带来额外的开销,无论是代码大小,更重要的是,从休眠模式恢复或执行微秒重要的其他任务所需的指令数。
幸运的是,良好的硬件设计和智能编码实践可以让许多人在RTOS中享受到RTOS带来的好处。能量受限的应用。开发低功耗RTOS驱动系统所涉及的一些基本问题将在本文末尾进行讨论。
仔细研究睡眠
优化低功耗嵌入式设计的主要方法之一是找到仍然能够对实时事件提供足够响应的最低睡眠模式。在我们完成确定最适合特定应用的睡眠模式所需的步骤之前,了解MCU的功耗,可用功能以及返回活动状态所需的时间非常有用。每个待机/休眠模式。
为了说明每种休眠模式状态的特性,我们将使用Energy Micro的EFM32“Gecko”系列能量优化32位MCU。尽管Gecko架构已经过优化,可以超越每种模式的基本要求,但大多数用于这些类型应用的MCU都具有相似的工作状态和特性(图2)。
注意:许多MCU架构都有单个“深度睡眠”模式,包括EFM32的EM2和EM3能量状态的一些功能。
图2:EFM32系列的能量模式转换。由Energy Micro提供。
睡眠/待机 - (EFM32称为“EM1”) - 允许快速返回活动模式(通常通过中断),代价是功耗稍高一点。在此模式下:
高频时钟MCU振荡器仍在运行,但CPU时钟树已禁用。这使得CPU能够在唤醒触发后的下一个时钟周期内恢复执行指令。
高频外设时钟树处于活动状态,允许高速外设,如DMA,高速UART/USART,ADC/DAC和AES加密/解密以自动运行。
32.768 kHz低频振荡器保持开启状态,允许低速外设保持运行。
MCU的保留了指针和配置寄存器的状态,无需在掉电时保存或在上电时恢复。保持寄存器内容不变通常可以为每次唤醒节省数百到数千个指令周期。
随机存取存储器保持活动状态,可以通过DMA访问。
功耗:EMF32 =45μA/MHz;典型等效32位MCU =200μA
返回活动模式的时间:EMF32 = 1个时钟周期。
深度睡眠 - (EFM32称为“EM2”) - 使MCU的关键元件保持活动状态,同时禁用高频系统时钟和其他非必要负载。在此模式下:
高频MCU振荡器关闭。
用于为片上外设提供时钟的32.768 kHz低频振荡器保持接通,允许选择低频能源功能保持运作。 (包括LCD驱动器,RTC,看门狗定时器,低功耗UART(LEUART),触摸感应接口和I2C/USB总线)。
上电复位,欠压检测电路
完全保留RAM和CPU寄存器允许MCU快速返回活动状态并快速恢复程序。
功耗:EMF32 =低至900 nA( RTC从精确的时钟源运行)¹;典型的等效32位MCU =10μA至50μA。
返回活动模式的时间:EMF32 =2μs;典型的等效32位MCU =5μs至8μs。
停止 - (EFM32称为“EM3”)更深层次的深度睡眠模式这可以进一步节省电力,同时保持有限的自主外围设备活动和快速唤醒。在此模式下:
禁用高频和低频振荡器。
保留MCU的指针和配置寄存器的状态。
保留全部RAM内容。
上电复位,引脚复位EM4唤醒和欠压检测器保持活动状态。
CPU可以被异步外部中断或几个内部源唤醒,包括其模拟比较器(ACMP),脉冲计数器(PCNT),以及由I2C主设备寻址时。
EFM32在EM2和EM3状态下都保留了完整的内部存储器,而在某些类似的MCU中存储器丢失。
功耗:EFM32 =0.59μA;典型的等效32位MCU =10μA至30μA。
返回活动模式的时间:EMF32 =2μs;典型的等效32位MCU =5μs至8μs。
关闭 - (在EFM32中称为EM4或“关闭模式”) - 此“附近” -death“state保留了触发外部激励唤醒所需的最低功能。节能是以更长的唤醒时间为代价的。在这种模式下:
除复位引脚上的中断监控电路,GPIO引脚唤醒和实时计数器外,所有功能和时钟都掉电。
重启需要器件复位或中断以及冷启动MCU内核和高频RC振荡器,必须在CPU执行第一条指令之前上电并稳定。
与大多数MCU一样,EFM32的寄存器和主存储器内容是丢失了,必须重新加载。但是,EFM32包含一个512字节的内存块,即使在此状态下也会保留。
除GPIO引脚分配外,所有器件配置信息都会丢失。
功耗,EFM32 = 20 nA(运行RTC时为400 nA);典型的等效32位MCU =1.5μA。
处理器从关闭模式返回活动模式的时间:EFM32为160μs。
备用电池模式 - 独特的Energy Micro功能。此模式为截止模式提供了一种有吸引力的替代方案,可以保留一些更重要的功能并实现更快的唤醒。它通常仅在主电源发生故障且系统处于备用电源时使用。在此模式下:
RTC保持活动状态。
保留CPU RAM的选定512字节块。
MCU仅绘制400 nA - 这种模式下的Energy Micro EFM32 MCU需要大约7年的时间才能消耗大约25%的AA电池容量(每个电容降至1000 mAh)。
虽然通常使用对于备份/电池更换操作,EM3A可能是某些应用的关闭模式的绝佳替代方案。
哪种睡眠模式?
一旦理解了每个MCU休眠模式的唤醒时间和功率电平,就可以相对轻松地找到能够最大限度节省功耗的电源,同时确保您的设计能够快速响应到实时事件。选择过程包括仔细研究目标应用程序,系统和支持它的MCU的几个方面。例如,我们将使用电池供电的模块来监控货运集装箱在运输过程中遇到的情况(图3):
图3:这种商用集装箱监视器安装在集装箱的主门上。它使用低功耗MCU记录GPS坐标,温度(可选),冲击/振动,门开启以及可能指示篡改的事件。由Starcom Systems提供。
列出应用程序生成的所有警报/警报条件,并确定它在注册之前能够容忍的最短时间。
容器监视器通常是配备GPS接收器,温度传感器,接触开关以检测篡改,加速度计用于测量沿途发生的颠簸,颠簸和冲击。根据应用的要求,它通常还配备一个或多个无线电接口。
在正常情况下,MCU大多数时间将保持睡眠模式,每10或15天出现几毫秒分钟记录温度条件。来自篡改检测开关的活动确实需要实时关注,但是对该事件的及时响应的窗口是在几百毫秒甚至几秒内测量的。但是,处理器必须能够在加速度计输入超过预编程阈值水平的毫秒或更短的时间内唤醒并开始测量冲击和振动水平。
对于每个待机,睡眠和深度睡眠模式,将产生警报或警报条件的时间与MCU准备开始参与之间所涉及的所有延迟相加。
继续运输容器监视器的示例,我们可以假设加速度计检测/比较器电路几乎没有或没有延迟,但是,根据它所处的睡眠模式,MCU将经历几微秒到几百毫秒的延迟。它可以开始关注唤醒它的警报事件。
添加服务警报/警报条件所需代码的执行时间,以获得关键事件与MCU响应时间之间的总延迟。
这部分应用程序代码的长度因应用程序而异。它还取决于MCU是否必须通过中断服务程序(ISR)或直接跳转到处理手头事件的代码。比较每种睡眠模式的最大响应时间,并确定落在应用程序最大容许延迟范围内的最低功耗模式。
验证您是否处于睡眠模式选中具有您需要的资源。例如,如果应用程序需要RTC,则不能低于深度睡眠。
如果您选择的睡眠模式无法提供所需的电池寿命,则有您可以使用其他几种技术来微调您的设计,这将在下一节中介绍。
其他最小化CPU活动的策略
尽管它们很重要,但睡眠模式只是电源管理方程中的一个变量。与任何复杂的等式一样,睡眠模式如何用于特定解决方案取决于其伴随变量。下面列出的策略是如何使用这些其他变量来充分利用MCU睡眠模式的示例。
确定应用程序所需的常规低级功能并识别MCU架构使用不需要CPU干预的片上硬件可以处理尽可能多的数据。除了大多数MCU上的计数器/定时器/RTC功能外,一些高级架构(包括Energy Micro)处理:
A/D转换和自主数据收集
监控报警阈值(模拟
硬件加速加密/解密
显示控制/刷新
触摸屏管理
如果您使用的MCU可以自主地在内部和外部外围设备之间进行内存传输和其他事务处理,请务必充分利用它。例如,可以自主接收和缓冲数据包到存储器的I2C总线收发器或UART允许MCU保持在睡眠模式,直到实际需要对传入消息采取措施。某些MCU的外围设备需要外部硬件或CPU干预。
如果您的MCU基于ARM Cortex架构,您可以通过使用可选配置缩短CPU响应时间,该配置可让CPU在中断时唤醒请求并直接跳转到应用程序代码。跳过中断服务程序(ISR)会从MCU的响应时间以及与ISR相关的任何其他代码开销中减少12个时钟周期。
选择适合您应用的处理器时钟速度是另一种工具,可用于微调设计的工作功率和在睡眠模式下花费的时间。在许多情况下,导致总能耗最低的处理器速度可能不是最慢的时钟速度。
更快地运行设备以节省能源的想法可能看起来违反直觉,但是半导体的能量消耗是其静态消耗(无论时钟频率如何都存在)的总和,其有效消耗(随着工作速度(MIPS/μW)而增加)通常随着时钟频率的增加而下降。因此,如果我们假设时钟频率加倍意味着将CPU完成任务(图4a)所需的时间缩短一半或更多,则动态功耗的增加会被减少的处理时间所抵消,而静态功耗则适用于较短的时间段将被大致切割相同的百分比(图4b)。
图4:使用更快的时钟速度来减少MCU的执行时间可以降低其整体功耗。
通过最大化有线和无线链路的传输速度,通常可以实现额外的节能。这是因为许多有线(电力线,以太网等)和无线(Wi-Fi,ZigBee等)的PHY通常比MCU本身消耗更多或更多的功率。除非有其他考虑因素(例如更高传输速率下更长的链路协商时间),否则可以通过确保处理器的时钟速度足以使其以收发器的最大可用发送/接收速率处理数据来最小化收发器的功耗。/p>
RTOS问题
这里讨论的大多数应用程序使用“主循环”式架构,其时间关键子程序由实时时钟或外围I/O元件产生的中断驱动。一些嵌入式代码仍然在汇编级别编写,但更强大的MCU,改进的编译器和高级软件工具使得用C/C ++或类似的高级语言编写许多应用程序成为可能。
此外,越来越多的低功耗设计使用实时操作系统(RTOS)通过确保对预定和非预定事件的确定性响应来驯服可能不守规矩的应用程序。
C和RTOS都提供了优势实时嵌入式应用程序,包括简化的开发和代码,往往更加健壮。生成的代码结构还可以对将来的升级进行稳定的代码修改。最后,RTOS提供的定义良好的层和接口允许它使用有用的中间件,如网络堆栈和I/O驱动程序。
尽管有这些优点,但RTOS还存在一些问题,使它们无法在这里讨论的应用程序常见的轻量级,功耗受限的环境中得到更广泛的应用。最明显的是,RTOS通常需要32位MCU,这些MCU通常需要比这些应用中常用的8位或16位MCU大得多的能量预算。
运行RTOS也引起了人们的关注关于它是否需要使用MCU内的硬件模块(例如定时器或实时时钟),这些硬件模块可能在其较深的睡眠状态下不可用。大多数RTOS都提供有限或不支持睡眠模式的功能,但有一小部分,但越来越多的产品适合睡眠模式,包括AVIX-RT和FreeRTOS。
AVIX拥有最快的基准测试分数之一在业界,低延迟和非常轻的内存占用。它可用于大多数基于ARM Cortex-M3 32位处理器以及其他几种处理器的MCU,但它经过专门优化,可充分利用EFM32的低能耗模式。
FreeRTOS是一种用于微控制器的开源跨平台操作系统标准,支持28个架构和17个工具链。它可以免费下载,免费部署,可以在商业应用程序中使用,无需公开您的专有源代码。它也可以作为OpenRTOS获得,这是一个商业许可和支持的版本,包括功能齐全的专业级USB,文件系统和TCP/IP组件。
虽然两种RTOS产品都支持多种MCU架构,但Energy Micro的EFM32系列有一些建筑特征可以帮助他们充分利用其低能耗模式,这将在下一节中讨论。
能源微优势
到目前为止,大多数技术和设计实践都适用于任何专为能量约束应用而设计的MCU。在本节中,我们将详细介绍Energy Micro的EFM32架构中的一些特性,使其成为传统和基于RTOS的嵌入式应用中最节能的MCU。
所有成员EFM32系列配备了丰富的模拟和数字外围元件(图5)。这些元件中的大多数是所谓的自主外设(AP),其可以在没有CPU干预的情况下工作并且在一个或多个睡眠模式中保持活动。这与大多数MCU形成鲜明对比,其最低节能模式仅支持非常基本的保持活动功能,如GPIO唤醒和RTC操作。
图5:EFM32 MCU的这个带注释的框图说明了在每种低功耗模式下有多少外设可用。由Energy Micro提供。
除大多数MCU上的计数器/定时器,ADC/DAC GPIO和串行通信外,Energy Micro对AP的补充包括:
电容式感应处理器 - 感应触摸板接触和坐标在没有CPU的n×n网格内(最多16个点)。保持活动状态直至EM2能量模式。
LCD驱动程序 - 可通过内存中的DMA驱动数字LCD或TFT显示器,无需CPU。
模拟比较器 - 启用警报阈值电压监控/没有CPU干预的报警条件。
带DMA的低功耗UART(LEUART)可以在接收大量数据的同时保留在EM2中而不会唤醒CPU。
大多数外围功能的活动,包括串行通信,计数器/定时器,模拟和数字比较器以及更高级别的I/O,都由一个单独的低功耗反射总线协调。来自一个外设的事件和信号可以用作其他外设的输入信号或触发信号,并确保时序关键操作和降低的软件开销。这些先进的功能使Energy Micro的EFM32系列MCU能够将32位器件的计算能力带入应用,同时消耗的能量与典型的16位产品相同(通常更少)。
EFM32还具有允许RTOS以高效方式运行并充分利用其节能睡眠/深度睡眠模式的功能。一些最重要的功能包括:
许多EFM32的时钟和计数器都可用于睡眠(EM1),深度睡眠(EM2)和停止(EM3)模式,包括备份实时时钟。这大大减少了RTOS用于维护其时序参考的处理器开销量。
在休眠(EM1),深度休眠(EM2)和停止时保留活动存储器,CPU指针和配置寄存器(EM3)模式大大减少了MCU返回其运行(EM0)模式所需的时间和代码开销。
更轻的代码和更快的执行速度使RTOS能够透明地运行应用程序。
即使RTOS强加了不可避免的额外开销,EFM32的32位RISC内核也可以更快地执行,增强的睡眠模式功能可以大大减少它在活动模式下的时间。在许多应用中,这些功能使其能够享受等于或低于许多16位MCU的总能量预算。
结论
实现最长电池寿命对于您的嵌入式系统仍然需要一些反复试验,但本文中介绍的技术可以帮助您最大限度地缩短在实时响应和节能之间找到适合您应用的平衡所需的时间。这里所展示的大部分内容都可以应用于当今市场上的任何低功耗MCU,但Energy Micro的EFM32 Gecko系列在所有模式下提供快速唤醒,低功耗和高功能的组合。它是许多应用的最佳选择。
希望本文还激起了您对在低功耗嵌入式应用中使用RTOS的兴趣。虽然并非所有应用都能从RTOS中受益,但Energy Micro的高级架构确保功耗不再是需要RTOS提供的稳定性,可管理性和确定性性能的设计的障碍。
脚注:
在以下条件下测量深度睡眠(EM2)模式下EFM32的待机电流:电源= 3 V,环境温度= 25°C < br>测量整个微控制器和任何外部振荡器的典型工作电流,包括RTC(在内部精密振荡器上运行),欠压检测,全RAM和寄存器保持有效。深度休眠(EM2)RTC模式下的电流是使用内部32 kHz低频振荡器运行的RTC测量的。
全部0条评论
快来发表一下你的评论吧 !