0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

超低功耗设计概述

华仔的编程随笔 来源:华仔的编程随笔 作者:华仔的编程随笔 2023-06-02 09:36 次阅读

概述

越来越多的芯片设计人员将ARM Cortex-M0和Cortex-M0+处理器用在多种超低功耗(ULP)微控制器和片上系统产品中。这里详细的介绍如何利用这些特性,以及在设计自己的低功耗应用时应注意什么。

那么软件开发人员需要理解的一个关键问题是,低功耗特性是和具体设备相关的。开发板人员需要参考微控制器供应商的应用笔记和例子,才能了解到可用的低功耗特性。

进入休眠模式

Cortex-M0和Cortex-M0+处理器默认支持一个休眠模式和一个尝试休眠模式,不过需要注意的是,微控制器供应商可以利用设备相关的可编程寄存器定义其他的休眠模式。在处理器内部,休眠模式和深度休眠模式的选择由系统控制寄存器中的SLEEPDEEP位决定。

如果用的是符合CMSIS的设备驱动库,系统控制寄存器可以通过“SCB->SCR”来访问。例如,要使能深度休眠模式,可以使用下面的语句

SCB-> |= SCB_SCR_SLEEPDEEP_Ms; //使能深度休眠特性

系统控制寄存器只支持字大小的传输。

微控制器的普通休眠模式和深度休眠模式的实际区别取决于芯片系统设计,例如,普通休眠中一些时钟信号可能会被关掉,而深度休眠则可能会降低存储器块的电压且可能会关掉系统中的其他部件。

在选择了休眠模式后,可以利用WFE(等待事件)或WFI(等待中断)指令来进入休眠模式,为了提高可移植性,建议在执行WFI/WFE指令前加上一个DSB(数据同步屏障)指令(对于其他高性能处理器,进入休眠前可能还会有未完成的存储传输)。

多数情况下,微控制器供应商的设备驱动库中包含了进入低功耗模式的函数,并且已经为对应的微控制器做了一定的处理。利用这些函数可以使微控制器得到最高等级的功耗优化。

但是,如果开发的C代码要具有在多个Cortex-M微控制器间的可移植性,可以使用下面的CMSIS函数来直接访问WFE和WFI指令:

指令CMSIS函数
WFE__WFE();
WFI__WFI():

如果未使用符合CMSIS的设备驱动,可以使用C编译器提供的内在函数或者内联汇编来生成WFE和WFI指令。此时,软件代码和工具键相关,且可移植性不高。例如KeilMDK-ARM和ARM-DS-5提供了如下面的内在函数(和CMSIS版本不同,它们是小写格式的)。

指令KeilMDK-ARM或ARM-DS-5的内在函数
WFE__wfe();
WFI__wfi():

从架构的角度来看,DSB指令要在WFE和WFI前执行,这样可以确保完成的数据存储指令(如缓冲写)在进入休眠前结束。然而,对于现有的Cortex-M0和Cortext-M0+处理器,不使用DSB也不会引起什么问题。

由于WFE可由各种事件唤醒,其中包括过去发生的事件,且一般用于空循环。例如

while(processing_required()==0)
{
__DSB(); //推荐使用存储器屏障以提高可移植性
__WFE();
}

汇编编程环境用户可以直接在汇编代码中使用WFE和WFI指令。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18288

    浏览量

    222176
  • 低功耗
    +关注

    关注

    10

    文章

    2227

    浏览量

    102692
  • Cortex-M0
    +关注

    关注

    4

    文章

    122

    浏览量

    38356
收藏 人收藏

    评论

    相关推荐

    TI CC2640超低功耗无线MCU概述

    蓝牙低功耗应用,是SimpleLink超低功耗无线MCU平台的首批成员之一,是目前广泛使用的CC2540和CC2541的升级产品。CC2640 包含作为主处理器,运行在 48 MHz 的 32 位 ARM
    发表于 07-11 07:06

    超低功耗MCU选型与设计

      循序渐进式的功耗优化已经不再是超低功耗mcu的游戏规则,而是“突飞猛进”模式,与功耗相关的很多指标都不断刷新记录。我们在选择合适的超低功耗mcu时要掌握必要的技巧,在应用时还需要一
    发表于 07-29 07:27

    超低功耗Wi-Fi技术

    ,Dialog半导体也是低功耗蓝牙技术的领先创新厂商。对于国内用户,大家所熟悉的小米手环里所使用的蓝牙芯片就是Dialog的产品。除了低功耗蓝牙产品,Dialog最近新推出了超低功耗的Wi-Fi芯片,貌似要在某些
    发表于 05-24 07:37

    如何选择超低功耗MCU

    在物联网的推动下,业界对各种电池供电设备产生了巨大需求。这反过来又使业界对微控制器和其他系统级器件的能源效率要求不断提高。因此超低功耗MCU与功耗相关的很多指标都不断得刷新记录。在选择合适的超低功耗
    发表于 12-28 07:12

    如何选择合适的超低功耗MCU?有什么技巧?

    如何选择合适的超低功耗MCU?有什么技巧?如何降低MCU的功耗
    发表于 04-19 09:21

    如何选择超低功耗MCU

    在物联网的推动下,业界对各种电池供电设备产生了巨大需求。这反过来又使业界对微控制器和其他系统级器件的能源效率要求不断提高。因此超低功耗MCU与功耗相关的很多指标都不断得刷新记录。在选择合适的超低功耗
    发表于 11-04 07:07

    选择超低功耗MCU的方法

    在物联网的推动下,业界对各种电池供电设备产生了巨大需求。这反过来又使业界对微控制器和其他系统级器件的能源效率要求不断提高。因此超低功耗MCU与功耗相关的很多指标都不断得刷新记录。在选择合适的超低功耗
    发表于 11-11 07:28

    STM32L151C8T6芯片超低功耗

    超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述超低功耗研发-STM32L151C8T6芯片(二)低功耗模式超低功耗研发-ST
    发表于 11-11 07:09

    对STM32的超低功耗使用

    一,电源管理库函数前面的入门文章对 STM32 的超低功耗的做了使用介绍,当然在使用超低功耗的时候还会考虑 RAM 的数据会不会丢失,什么时候重写 备份寄存器,进入低功耗模式的时候要怎么保持 IO
    发表于 12-31 06:36

    超低功耗设计技巧与实现

    超低功耗设计技巧与实现
    发表于 01-18 14:59 105次下载
    <b class='flag-5'>超低功耗</b>设计技巧与实现

    聪明的超低功耗设计

    你熟悉的基本方法的低功耗设计。现在,你怎么把它带到一个新水平?极端的低功耗嵌入式设计需要仔细选取工具缓存,电路设计和智能利用单片机超低功耗的特点。
    发表于 08-04 14:09 13次下载
    聪明的<b class='flag-5'>超低功耗</b>设计

    基于超低功耗设计技巧与实现

    基于超低功耗设计技巧与实现
    发表于 10-15 10:44 12次下载
    基于<b class='flag-5'>超低功耗</b>设计技巧与实现

    超低功耗研发-STM32L151C8T6芯片(五)低功耗设计总结

    超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述超低功耗研发-STM32L151C8T6芯片(二)低功耗模式超低功耗研发-ST
    发表于 11-06 14:36 32次下载
    <b class='flag-5'>超低功耗</b>研发-STM32L151C8T6芯片(五)<b class='flag-5'>低功耗</b>设计总结

    超低功耗工控主板是如何降低功耗

    工业用电总量一直占据我国用电的大部分,所以就有工控主板定制厂家推出了超低功耗工控主板,超低功耗工控主板的推出将能大大减少工业用电,为我国节省工业用电量。那么超低功耗工控主板究竟是怎样降低功耗
    发表于 05-23 15:24 1731次阅读

    智能家庭与超低功耗

    智能家庭与超低功耗
    发表于 11-02 08:16 1次下载
    智能家庭与<b class='flag-5'>超低功耗</b>