就像汽油(汽油/柴油)对于自行车,卡车和汽车(是的,不包括特斯拉!)的行驶很重要一样,对于大多数电子应用,电力也是如此,对于通常是电池的基于嵌入式系统的应用,电力也是如此(有限的能量)供电,从普通手机到智能家居设备等等。
电池电量的有限性质意味着需要确保这些设备的功耗率合理,以鼓励其采用和使用。尤其是在基于IoT的设备上,无需更换电池,一次充电即可使设备持续长达8 – 10年。
这些趋势已在嵌入式系统设计中实现了低功耗考虑因素,多年来,设计人员,工程师和制造商在多个方面已经开发出几种有效管理产品功耗的智能方法,以确保它们在产品上的使用寿命更长。单次充电。这些技术很多都集中在微控制器上,这是大多数设备的核心。在今天的文章中,我们将探讨其中的一些技术,以及如何将它们用于最小化微控制器的功耗。尽管微处理器消耗的功率较少,但可以在任何地方放置在微处理器上,请通过链接了解微处理器与微处理器有何不同。
单片机的节电技术
1.睡眠模式
休眠模式(通常称为低功耗模式)可以说是减少微控制器功耗的最流行技术。它们通常涉及禁用某些电路或时钟以驱动微控制器的某些外围设备。
根据架构和制造商的不同,微控制器通常具有不同的睡眠模式,每种模式都具有与其他模式相比禁用更多内部电路或外围设备的能力。睡眠模式通常范围从深度睡眠或关闭到空闲和打modes模式。
下面介绍了一些可用的模式。应当注意,这些模式的特性和名称可能因制造商而异。
一世。空闲/睡眠模式
对于设计人员而言,这通常是最简单的低功耗模式。此模式允许微控制器以非常快的速度返回到完整操作。因此,如果设备的电源循环要求其在微控制器退出睡眠模式时消耗大量功率,则设备的电源循环经常需要离开睡眠模式,则这不是最佳模式。从待机模式返回活动模式通常是基于中断的。通过在主MCU高频时钟保持运行的同时关闭驱动CPU电路的时钟树在微控制器上实现此模式。这样,CPU可以在激活唤醒触发器后立即恢复操作。时钟门控已广泛用于微控制器在低功耗模式下切断信号,并且该模式有效地控制了CPU上的时钟信号。
ii。待机模式
待机模式是另一种低功耗模式,设计人员易于实现。它与空闲/睡眠模式非常相似,因为它还涉及在CPU上使用时钟门控,但是一个主要区别是它允许更改RAM的内容,而空闲/睡眠模式通常不是如此。在待机模式下,诸如DMA(直接内存访问),串行端口,ADC和AES外设之类的高速外设保持运行状态,以确保CPU唤醒后立即可用。对于某些MCU,RAM也保持活动状态,并且可以由DMA访问,从而无需CPU干预即可存储和接收数据。对于低功耗微控制器,以这种模式消耗的功率可以低至50uA / MHZ。
iii。深度睡眠模式
深度睡眠模式通常涉及禁用微控制器内的高频时钟和其他电路,仅留下用于驱动关键元件(如看门狗定时器,掉电检测和上电复位电路)的时钟电路。其他MCU可能会添加其他元素以提高整体效率。根据特定的MCU,此模式下的功耗可低至1uA。
iv。停止/关闭模式
某些微控制器对此附加模式有不同的变化。在这种模式下,通常禁用高振荡器和低振荡器,仅保留一些配置寄存器和其他关键元件。
上面提到的所有睡眠模式的功能因MCU而异,但是一般的经验法则是:睡眠越深,睡眠期间禁用的外围设备越多,功耗越低,尽管这通常也意味着:使系统恢复运行所消耗的能量越高。因此,设计者应考虑这种变化并为任务选择合适的MCU,而不会做出影响系统规格的妥协。
2.处理器频率的动态修改
这是另一种广泛流行的技术,用于有效减少微控制器消耗的电量。它是迄今为止最古老的技术,比睡眠模式要复杂一些。它涉及固件动态驱动处理器时钟的过程,该固件在高频和低频之间交替变化,因为处理器的频率与消耗的电量之间的关系是线性的(如下所示)。
这种技术的实现通常遵循这种模式。当系统处于空闲状态时,固件会将时钟频率设置为低速,从而使设备节省一些功率;当系统需要进行大量计算时,时钟速度将恢复。
在某些情况下,修改处理器频率会适得其反,这通常是由于固件开发不佳造成的。当系统执行大量计算时将时钟频率保持在较低水平时,会出现这种情况。在这种情况下,频率较低意味着系统将花费比执行设置任务所需的时间更多的时间,因此将累积消耗设计人员试图节省的电量。因此,在时间紧迫的应用中实施此技术时,必须格外小心。
3.中断处理程序固件结构
这是微控制器中电源管理的最极端技术之一。诸如ARM cortex-M内核之类的微控制器在SCR寄存器中具有退出时睡眠位,这使得微控制器成为可能。该位使微控制器能够在运行中断程序后进入睡眠状态。虽然以这种方式可以平稳运行的应用程序数量受到限制,但是对于现场传感器和其他基于数据的长期应用程序来说,这可能是非常有用的技术。
我个人认为,大多数其他技术都是上述方法的变体。例如,选择性外设时钟技术本质上是睡眠模式的一种变化,设计人员在其中选择要打开或关闭的外设。该技术需要对目标微控制器有深入的了解,并且可能对初学者不太友好。
4.功耗优化固件
减少微控制器功耗的最佳方法之一是编写高效且经过优化的固件。这直接影响CPU每次完成的工作量,并由此扩展微控制器的功耗。编写固件时应尽力确保减小代码大小和周期,因为执行的每条不必要的指令都是浪费在电池中的部分能量。以下是一些用于优化固件开发的基于C的常见技巧;
- 尽可能使用“静态常量”类,以防止在运行时复制消耗功率的数组,结构等。
- 使用指针。对于初学者来说,它们可能是C语言中最难理解的部分,但对于有效地访问结构和联合,它们是最佳的。
- 避免模数!
- 尽可能在全局变量上使用局部变量。局部变量包含在CPU中,而全局变量存储在RAM中,CPU可以更快地访问局部变量。
- 无符号数据类型是您最好的朋友。
- 尽可能在循环中采用“倒计时”。
- 不要使用无符号整数的位域,而应使用位掩码。
减少微控制器功耗的方法不仅限于上述基于软件的方法,还存在基于硬件的方法(如核心电压控制技术),但为了使该帖子的长度保持在合理范围内,我们将节省他们改天。
结论
实施低功耗产品始于微控制器的选择,当您尝试遍历市场上可用的各种选项时,可能会感到非常困惑。进行扫描时,数据表可能会很好地获得MCU的一般性能,但对于功率关键型应用而言,这可能是一种非常昂贵的方法。为了了解微控制器的真正功率特性,开发人员必须考虑电子规格和微控制器可用的低功率功能。设计人员不仅应关注MCU数据表中公布的每种功耗模式的电流消耗,还应研究唤醒时间,唤醒源和外围设备 可在低功耗模式下使用。
重要的是,检查计划使用的微控制器的功能,以确定用于低功耗实现的选项。微控制器一直是技术进步的最大受益者之一,现在有几种超低功耗微控制器可确保您有足够的资源来帮助您保持在功率预算之内。他们中的许多人还提供了几种功率分析软件工具,您可以利用它们进行有效的设计。个人最喜欢的是德州仪器(TI)的MSP430系列微控制器。