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

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

3天内不再提示

嵌入式软件的低功耗驱动软件设计

麦辣鸡腿堡 来源:嵌入式系统 作者:嵌入式系统 2023-12-07 15:00 次阅读

1 低功耗的意义

电子产品尤其是电池供电的都要求低功耗,究竟怎样才算低功耗?脱离应用场合的数值没有意义,低功耗是一种看情况而定、只可意会的标准。

2 思路决定成败

芯片数据手册写着低功耗,上面那些小的出奇的电流标准,只是用来摆设的一种无法工作的假死状态,工作功耗才是实实在在的。有时为了体现低功耗,还要在应用中设计所谓的低功耗模式,当系统确认没有任务时就休眠。于是乎,低功耗这种“既要马儿跑,又要马儿不吃草”的逻辑,就成为降低正常工作模式下系统功耗的常规选择。

硬件角度来说,找到所有可能消耗电流的回路,确定哪些是可以通过软件控制的方式来优化,哪些是不可避免的,并给软件开发人员提供所有IO口状态对功耗影响的关系,用简单的表格说明一下高电平或低电平会怎样,悬浮会怎样。前期配置驱动软件,验证工作时最小电流满足标准,基本可确认硬件正常。剩下的就是软件开发人员的发挥空间,而基于软件的降功耗策略,正是本文所要讨论的重点。

3 驱动软件设计

3.1 端口配置

首先确认复位后引脚的默认状态,该状态下是否漏电,是否会开启某些时钟源,是否内部上拉或下拉,软件再结合硬件或外围做相应配置。例如AD通道禁止内部上拉,普通GPIO设为输出低或者高避免漏电,悬空引脚避免中断输入模式。

固定连接控制的,可以推挽输出控制外设,或者外部带上拉时选开漏;特殊引脚如UART一般配置模式即可,硬件自动控制对应电平;间歇性工作如ADC,作为输入转换完成后,可以再设为输出或关闭AD。

有些外设是可以插拔的,如UART正常空闲时收发都是高,如外设关机或者移除,仍保持高电平则存在漏电,这种情况下需将引脚设为输出低。重点关注工作中一种状态,工作结束或异常时要及时切换状态,避免漏电或者电平不匹配。

如果外设支持中断尽量配置开启,而不是定时轮询通信

3.2 电源管理

芯片内部往往划分不同的电源域,硬件外设也分不同单元的供电,暂时不使用的部分,可以立刻关闭电源域、时钟域。在硬件成本允许或者功耗要求严苛的情况下,外设尽量独立供电,这样在非使用状态下软件控制断电。需要注意关闭电源域后,某些端口可能需要重新配置避免漏电,如上节所提到关闭外设的供电后,外设的UART端口变为低,主控的UART端口就不能继续维持高电平了。

3.3 系统时钟

在正常的工作模式下,频率越高功耗越高,完成同样工作的时间越短,也可更快进入休眠。如果单片机主要做控制,没有复杂运算,降频能实现需求就往更低的频率切换。如果有大量数学计算,可以空间换时间,或者先高频运行,尽快完成算法,运行结束后动态切换到低频。

同等时钟下,供电电压低功耗也低;定时采样、屏幕刷新也可在满足需求的情况下尽量低频处理。

3.4 待机底电流

查阅数据手册或者SDK官方文档,确定符合需求的、可被唤醒的最低功耗休眠模式,编写一个测试用例,关闭所有可能耗电的外设,进入休眠的状态,验证极限情况下的功耗。

可能还需要硬件排除电路板上无法优化的固有功耗,比如电压转换等固定消耗电流的部分,单纯看主芯片的工作电流,是否达到数据手册上对应模式下的理论值。如果不满足就需要继续关闭一些复位后自动开启的功能,比如时钟使能等;或者硬件工程师配合拆除可疑器件加快排查。这第一步非常关键,直接决定后期整机功耗能达到的最佳效果,同时在配置过程中,非常细微的认识到哪些外设和配置影响功耗,如何影响,有多大的影响。

3.5 休眠与唤醒

休眠后有的是降频工作,有的是假死(软件未运行,内存可恢复;有的不能恢复,唤醒类似重启效果),或者直接关机(RTC关机闹钟唤醒),不同的硬件方案和软件需求,休眠模式的表现不同。单片机开发,确认其所有的休眠模式,以及对应休眠模式下哪些时钟源工作或休眠,结合具体应用的需求,明确系统对唤醒源以及唤醒模式的需求,由此便确定了系统的基础休眠模式。

注意有些芯片在休眠模式下仅少数端口维持唤醒的状态,只有特殊引脚才能唤醒,这需要硬件设计前考虑。

3.6 功耗评估

降低功耗是软件和硬件协同工作才能解决的问题。比如AD采样时候的分压电阻,如果直接接了地,那会一直消耗电流;增加分压电阻足够大,表面上静态电流小,但因为AD内阻分流,最终结果就存在较大偏差。如果通过一个IO口来控制其接地的方式,只在需要采样的时候接地,采样完成后悬浮或者拉高,就可以将静态损耗降到最低,虽然成本加了不少,但实实在在的省电了。具体是否采用,主要是看功耗的标准,如果略微可以接受持续的静态损耗,就没必要增加硬件成本。

系统实现最低功耗,有时需要在外设性能、硬件成本和功耗之间做妥协,CPU是否可以降频,硬件外设是否支持中断唤醒等,这些都会影响最终的待机功耗,降低功耗是硬件和软件配合的结果,软件配置驱动,硬件逐个确认电流是否在期望之内,这理论值定义就看原厂资料或者经验了,以及与产品定义的待机时长妥协解决。

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

    关注

    182

    文章

    16553

    浏览量

    244719
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409143
  • 驱动
    +关注

    关注

    11

    文章

    1717

    浏览量

    84345
  • 嵌入式软件
    +关注

    关注

    4

    文章

    227

    浏览量

    26383
收藏 人收藏

    评论

    相关推荐

    #嵌入式软件设计 软件架构

    嵌入式嵌入式软件
    电子技术那些事儿
    发布于 :2022年09月02日 22:49:38

    单片机开发中低功耗软件设计

    `低功耗软件设计嵌入式系用的功耗和硬件有关,但同时也是有软件的因素,就像是汽车的耗油量基于汽车的设计有关,由于驾驶者的技术有关。引起CPU
    发表于 09-18 14:41

    DIY分享:嵌入式导航系统硬件+软件设计教程

    软件层主要由系统软件和应用软件组成,其中系统软件主要指嵌入式操作系统,应用软件实现对被控对象的
    发表于 02-12 08:00

    如何查找嵌入式软件设计的缺陷?有什么技巧?

    如何查找嵌入式软件设计的缺陷?有什么技巧?
    发表于 04-22 07:10

    嵌入式软件设计中查找缺陷的技巧有哪些?

    嵌入式软件设计中查找缺陷的技巧有哪些?
    发表于 04-28 06:42

    什么是嵌入式软件

    的自控软件等等。嵌入式系统因其低成本、体积小、低功耗、稳定性和实时性强等特点将会越来越被人们所应用。什么是嵌入式测试?依托于质量保证,安全可靠的软件
    发表于 10-28 08:45

    基于QT的嵌入式linux图形应用软件设计

    嵌入式数据库或图形软件开发有兴趣,可以进一步学习嵌入式linux数据库开发或基于 QT的嵌入式linux图形应用软件设计。...
    发表于 11-05 08:11

    掌握嵌入式系统软件设计方法

    实验目的(1)掌握嵌入式系统软件设计方法,培养分析问题、解决问题、应用知识的能力和创新精神,全面提高综合素质。(2)熟悉嵌入式Linux开发环境,学会基于UP-CUP6410-II型平台的Linux
    发表于 11-09 09:05

    嵌入式环境下软件设计的特点是什么

    详见微信公众号,二进制人生。目录:嵌入式环境下软件设计的特点设计目标设计思路多进程解耦嵌入式环境下软件设计的特点要谈嵌入式
    发表于 11-09 06:31

    嵌入式系统软件设计的原则是什么

    嵌入式系统软件设计的原则1、基本原则是“物尽其用”,嵌入式系统的硬件和软件都必须高效率地设计,去除冗杂 还应尽可能采用高效率的设计方法,标准化开发方法和开发流程
    发表于 12-24 06:29

    如何去实现嵌入式中的硬件设计和软件设计

    什么是嵌入式?如何去实现嵌入式中的硬件设计和软件设计呢?
    发表于 01-19 07:55

    嵌入式软件设计和单片机软件设计的区别是什么?

    嵌入式软件设计和单片机软件设计目前的应用很多,这两者有什么区别? 嵌入式主要说的什么?结构是啥!
    发表于 11-10 07:46

    基于ARM的嵌入式系统软件设计

    嵌入式软件的启动代码嵌入式软件开发关键技术嵌入式实时操作系统程序的链接定位软件调试技术http:
    发表于 03-25 15:03 203次下载
    基于ARM的<b class='flag-5'>嵌入式</b>系统<b class='flag-5'>软件设计</b>

    ARM的嵌入式系统软件设计

    ARM的嵌入式系统软件设计
    发表于 10-27 15:00 8次下载
    ARM的<b class='flag-5'>嵌入式</b>系统<b class='flag-5'>软件设计</b>

    嵌入式软件在计算机软件设计中应用

    文章主要是在计算机软件设计中应用嵌入式实时软件,满足人们对计算机高性能的需求,不仅仅分析了嵌入式软件系统结构,同时也实现
    发表于 11-01 15:27 14次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>在计算机<b class='flag-5'>软件设计</b>中应用