亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 嵌入式

你能做到多低(功率)?

在我的上一篇博文“Arm Cortex-M 低功耗模式基础知识”中,我们探讨了可以在每个 Arm Cortex-M 处理器上找到的低功耗模式的基础知识,以及我们如何利用 WFI 和 WFE 指令来放置处理器睡觉。但真正存在的问题是这些低功耗模式如何在真正的微控制器上实现,以及这些模式如何影响我们的嵌入式系统?在这篇博文中,我们将更详细地探讨如何让微控制器进入睡眠状态,并了解为我们购买了多少能量。

低功耗模式实验

探索低功耗模式的最佳方法是选择一个微控制器并在各种低功耗模式下实际运行处理器。在这篇文章中,我决定将我久经考验的真正 NXP Kinetis-L Freedom 板擦掉,我不仅试验过,而且在许多产品、应用程序和课程中使用过它。我还决定,无论对错,不仅要测量微控制器消耗的能量,还要测量整个开发板的能量。 MCU 通常是板上最耗电的设备之一,但我经常发现测量整个系统电流提醒我它不是板上唯一的能源消耗者。优化微控制器可能需要很长时间,但它并不总是唯一可能需要能源优化的设备。

从基线测量开始

每当我致力于优化产品的能耗时,我首先都会进行基线能耗测量。这通常是通过在几秒钟或几分钟内分析设备的电流消耗来完成的,以了解我们从哪里开始。在我的开发板实验中,我让 Kinetis-L 处于运行模式,没有实现睡眠,所有外设都打开,并设置电路板定期切换 LED。使用带有 I-Jet 调试器和 I-Scope 的 IAR Embedded Workbench,我能够为我的电路板绘制一个简单的基线,当 LED 关闭时约为 16.9 mA,当 LED 开启时约为 18.0 mA,如下图所示图 1. 如您所见,重要的是要注意测量的来源,否则您的分析可能会出现明显偏差。

点击查看大图

图 1. LED 每秒切换一次的开发板电流测量值。 (来源:作者)

通过等待和深度睡眠模式优化能量

看到一些节能的最快方法是实施等待或深度睡眠模式。对 Kinetis-L 处理器数据表的检查表明,等待模式在 3 伏电压下消耗 3.7 至 5.0 mA 电流。在这种模式下,CPU 和外设时钟被禁用,但闪存处于休眠模式,允许处理器在中断时间范围内(12 – 15 个时钟周期)唤醒。等待模式很容易实现,进入等待模式的代码如下:

void Sleep_Wait(void)
{
SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;
asm(“WFI”);
}

滚动或拖动框的角到根据需要扩展。

仅使用这两行代码,开发板的电流消耗就从 18.0 mA 下降到 15.9 mA。电流消耗减少了 11.6%!如果电路板由 680 mA 电池供电,则设备的电池寿命将从 37.8 小时缩短到 42.8 小时!仅用两行代码就增加了五个小时!

这些高级功耗模式的优点在于,我们可以轻松地更进一步。我们可以使用以下代码将处理器移入深度睡眠等待模式,而不是让处理器进入等待模式:

void Sleep_Deep(void)
{
SCB_SCR |=SCB_SCR_SLEEPDEEP_MASK;
asm(“WFI”);
}

滚动或拖动框的角到根据需要扩展。

我们所做的只是调整 SCB_SCR 寄存器中的一位,现在我们已经从最初的 18 mA 电流消耗变为 14.8 mA。电流消耗减少了 17.8%!同样,假设电路板由 680 mA 电池供电,电池寿命现在将从 37.8 小时缩短到 46 小时!这些只是几行代码的巨大节省,而这只是冰山一角!

利用停止和 VLLS 模式获取 uA 电流

通过禁用内核和系统时钟,使用停止模式有可能将 MCU 电流消耗进一步降低 2 毫安。您会发现,功耗模式越低,实现它所需的代码就越多,唤醒系统备份的代码就越复杂。在 Kinetis-L 上进入停止模式的代码如下所示:

void Sleep_Stop(void)
{
volatile unsigned int dummyread =0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL |=SMC_PMCTRL_STOPM(0);
dummyread =SMC_PMCTRL;
Sleep_Deep();
}

滚动或拖动框的角到根据需要扩展。

注意停止模式是通过一个电源管理控制寄存器来控制的,一旦状态被设置,就会调用Sleep_Deep函数来完成电源模式的设置和WFI的执行。

到目前为止,我们一直在讨论 MCU 消耗 1 – 2 mA 的电流。现代微控制器将具有可以汲取微安甚至纳安的功率模式! Kinetis-L 处理器于 2013 年左右首次亮相,其极低漏电停止 (VLLS) 模式仅消耗 135 至 496 微安!初始化此电源模式的代码如下所示:

void Sleep_VLLS1(void)
{
volatile unsigned int dummyread =0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL |=SMC_PM4_STOP;M
SMC_VLLSTRL =SMC_VLLSCTRL_LLSM(1);
dummyread =VLLS_CTRL;
Sleep_Deep();
}

滚动或拖动框的角到根据需要扩展。

此时,微控制器几乎不会消耗任何能量!

低功耗模式对唤醒延迟的影响

到目前为止,我们已经看到,将处理器切换到越来越低的功率模式是一种节省能源的好方法,但这种节省是有代价的。处理器的能量状态越低,处理器唤醒和做有用工作所需的时间就越多。例如,如果我使用标准停止模式,处理器唤醒并再次开始执行代码需要 2 us 加上中断延迟。还不错。但是,如果我要在 Kinetis-L 上使用其中一种 VLLS 模式,我将有一个启动处理器的唤醒延迟加上另外 53 到 115 微秒!根据应用,这可能是不可接受的。图 2 显示了 Kinetis-L 上从低功耗模式到运行状态的额外转换。

点击查看大图

图 2. Kinetis-L 上从低功耗模式到各种模式的转换时间。 (来源:Kinetis-L 数据表)

结论

Arm 微控制器都将具有标准的低功耗模式,但每个芯片供应商都会定制开发人员可用的低功耗模式。正如我们所见,芯片供应商通常提供多种模式,作为对唤醒延迟影响最小的低悬果。它们还提供了几种非常低功耗的模式,几乎可以关闭处理器,并且仅消耗几百微安或更少的电流!开发人员通常需要在他们想要消耗的能量与他们需要系统唤醒和响应事件的速度之间取得平衡。权衡肯定是特定于应用程序的,因此不要期望能够在每个产品和应用程序上运行最低功耗模式。


Jacob Beningo 是一名嵌入式软件顾问、顾问和教育家,目前与十多个国家的客户合作,以​​极大地改变他们的软件、系统和流程。请随时通过 [email protected] 和他的网站 www.beningo.com 与他联系,并注册他的每月 Embedded Bytes Newsletter。


嵌入式

  1. 如何利用 3D 打印机监控来扩展增材制造?
  2. 如何使用添加剂 MES 扩展到串行添加剂生产?
  3. 低功耗 AI 视觉板在单节电池下可持续使用“数年”
  4. USB Type-C 如何减少消费者电源适配器的混淆——并减少全球电子垃圾
  5. IIoT 数据如何推动精益制造的盈利能力
  6. 工业自动化中有多少现实?
  7. 停电如何损坏您的电源
  8. 低功率因数的原因
  9. 了解如何焊接海军黄铜
  10. 如何给电容器充电?
  11. 调整 PDP 如何为您省钱
  12. 如何让液压系统更强大?