可以控制到多低(功率)?

How low (power) can you go?

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

低功率模式实验

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

从基准测量开始

每当我在优化产品的能源消耗时,我首先从基准能量测量开始。这通常是通过分析几秒钟或几分钟内设备的电流消耗来完成的,以了解我们从何处开始。在我的开发板实验中,我让Kinetis-L处于运行模式,没有实现睡眠,所有外围设备都打开了,并设置板定期切换LED。使用带有I-Jet调试器和I-Scope的IAR Embedded Workbench,我能够为我的电路板描绘一个简单的基准,当LED熄灭时为16.9毫安,当LED亮起时为18.0毫安,如下图1所示。正如你所看到的,重要的是要注意你的测量从哪里来,否则你的分析可能会有很大的偏差。

Figure 1. A current measurement of the development board with an LED toggling once per second.

利用等待和深度睡眠模式优化能量

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

void Sleep_Wait(void)

{

  SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;asm(“WFI”);

}

只有这两行代码,开发板的电流消耗从18.0毫安下降到15.9毫安。现在的消费量下降了11.6%!如果主板由680毫安的电池供电,那么该设备的电池寿命将从37.8小时延长到42.8小时!只需两行代码就可以增加5个小时!

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

void Sleep_Deep(void)

{

  SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;asm(“WFI”);

}

我们所做的只是调整SCB_SCR寄存器中的一个位,现在我们已经从原来的18毫安电流消耗变为14.8毫安。现在的消费量下降了17.8%!同样,假设主板由680毫安的电池供电,电池寿命将从37.8小时延长到46小时!只需几行代码就可以节省大量成本,这只是冰山一角!
利用停机和VLLS模式进行uA电流消耗

使用停止模式有可能通过禁用核心和系统时钟进一步降低MCU的电流消耗,最多再降低两毫安。你会发现,功率模式越低,实现它所需的代码越多,唤醒系统的代码就越复杂。在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的执行。

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

void Sleep_VLLS1(void)

{

  volatile unsigned int dummyread = 0;SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4);SMC_VLLSTRL = SMC_VLLSCTRL_LLSM(1);dummyread = VLLS_CTRL;Sleep_Deep();

}

在这一点上,微控制器将几乎没有任何能量!
低功耗模式对唤醒延迟的影响
到目前为止,我们已经看到,将处理器移动到越来越低的功耗模式是一种很好的节能方式,但这种节省确实是要付出代价的。处理器的能量状态越低,唤醒处理器并执行有用工作所需的时间就越长。例如,如果我要使用标准停止模式,处理器唤醒并重新开始执行代码需要2 us加上中断延迟。还不错。然而,如果我使用Kinetis-L上的VLLS模式之一,我将有一个启动处理器的唤醒延迟加上另外53到115微秒!这可能是不可接受的,具体取决于应用程序。图2显示了Kinetis-L上从低功耗模式到运行状态的其他转换。

Figure 2. Transition times from low power modes to various modes on the Kinetis-L.

结论

Arm微控制器都有标准的低功耗模式,但是每个硅晶片厂商都定制了低功耗模式,供开发者使用。正如我们所看到的,硅晶片供应商通常提供几种模式,它们可以作为低挂起的水果,对唤醒延迟的影响最小。它们还提供了几种非常低功耗的模式,几乎可以关闭处理器,只需要几百微安或更少!开发人员通常需要平衡他们想要的能量和他们需要系统以多快的速度唤醒和响应事件。这种取舍肯定是特定于应用程序的,所以不要指望能够在每个产品和应用程序上运行最低功耗模式。

可以控制到多低(功率)?相关推荐

  1. ES8311应用模拟和数字麦克风低功率1.8V至3.3V操作14mw播放

    ES8311低功率 单声道 音频编解码器 I2S/PCM主或从串行数据端口256/384Fs, USB 12/24 MHz和其他非标准音频系统时钟I2C接口ADC 24位,8至96 kHz采样频率 1 ...

  2. 联阳 IT66121FN 低功率单通道SDI转HDMI传输器芯片

    IT66121除了各种视频输出格式支持,同时还支持8个通道的I 2 S数字音频,高达192kHz的采样率和高达24位的样本大小.IT66121还支持S / PDIF输入高达192kHz的采样率. 由I ...

  3. 采取更简单的路线,以低功率,9轴运动跟踪

    对于越来越多的可穿戴设备和物联网设计,检测方向和跟踪运动的能力正在成为一个关键的要求.尽管有大量可用的运动传感器,但工程师们不断受到挑战,要求更快速有效地将这些设备集成到更低的功率中,这对额外的传感器 ...

  4. [4G5G专题-100]:MAC层 - 调度 - 4G LTE物理信道的功率控制3 - 上行信道功率控制

    目录 第1章 上行功率控制概述 1.1 上行业务流程 1.2 上行功率控制的分类 1.3 下行信道的功率传输损耗 第2章 PRCH信道功率控制 2.1 PRACH开环功率控制的基本流程 2.2 PRA ...

  5. 针对低功率/低电源电压应用的5MBd数字光耦合器

    针对低功率/低电源电压应用的5MBd数字光耦合器 介绍 电气系统中的数字光电耦合器提供高压绝缘和高压绝缘数据传输时的噪声抑制.一个高质量的绝缘屏障,在里面光耦合器需要提供卓越的可靠性和耐久性信号隔离. ...

  6. 功耗大好还是小好_发动机功率越高越好吗?高功率和低功率的差别,看看老司机怎么说...

    如今,很多车型都纷纷推出同排量低功率版本和高功率版本车型.为什么某款车同样的发动机,同样1.5L排量的两个车型功率却不一样.这是为什么呢? 高功率和低功率有什么区别?今天小编就跟大家讲讲吧! 高功率和 ...

  7. 台湾ICPlus IP175GHI, 85nm /极低功率,5接口10/100以太网集成交换机芯片

    台湾ICPlus IP175GHI 5接口10/100以太网集成交换机 , 85nm /极低功率 功能一般描述 z 5端口嵌入式10/100 PHY开关控制器 IP175G支持5 100BaseTX ...

  8. 无线传感器实验-低功率无线信道建模

    [实验要求] 对于给定的特定环境下的无线信号传播测量数据,建立相应的单斜率和多斜率对数路径接收功率模型,具体要求如下: 1.使用Matlab画出接收功率与距离关系的散点图: 2.使用Matlab画出平 ...

  9. CC2540 单模式低功率蓝牙解决方案

    CC2540是一个真正的系统单晶片解决方案,结合德州仪器的协议栈.轮廓软体及应用支援, CC2540成为市场上最具有弹性及成本效益的单模式低功率蓝牙解决方案 应用市场 低功率蓝牙 - 适用于消费性医疗 ...

最新文章

  1. python pandas聚合_Python Pandas分组聚合的实现方法
  2. php指定时间显示内容,织梦用php判断某个时间段显示和隐藏内容
  3. node.js mysql 不退出_node.js,node-mysql_使用了node-mysql的代码无法自动停止,node.js,node-mysql - phpStudy...
  4. 关于域帐户将计算机加入域登陆上限问题
  5. js构造函数的浅薄理解
  6. liferay 采用URL方式传值
  7. WARN HiveConf: HiveConf of name hive.metastore.local does not exist注意事项
  8. NSWindowController的初始化创建代码
  9. CIO应用商业智能技术系统的重构思考
  10. 服务器网络销售软文,关于云服务器的软文
  11. tiptop 编译运行_ERP(tiptop linux下主要命令)
  12. Nvidia搞笑Intel:CPU vs GPU
  13. 云队友丨抖音之后,互联网失去创造力
  14. 卡巴斯基正版半年注册码申请
  15. phpmail通过qq发邮箱失败_PHPMailer使用QQ邮箱实现邮件发送功能
  16. 如何关闭win10自带杀毒?
  17. CSS 各类选择器 第一节
  18. CSS3-04 样式 3
  19. MATLAB——Z变换与Z反变换
  20. ubuntu16.04 basler相机 图像采集卡设置

热门文章

  1. IDEA集成Docker插件实现一键自动打包部署微服务项目
  2. 2022-2028年中国橡胶密封制品行业市场研究及前瞻分析报告
  3. 2022-2028年中国丝印硅胶行业市场深度分析及投资前景趋势报告
  4. pyspark性能调优参数
  5. python性能分析之line_profiler模块-耗时,效率 时间
  6. 谷歌BERT预训练源码解析(一):训练数据生成
  7. gensim的word2vec如何得出词向量(python)
  8. pytorch: Variable detach 与 detach_
  9. 编写可调模板并使用Auto-tuner自动调谐器
  10. 77GHz 和24GHz Radar性能解析