打印
[MCU]

用于便携式设备的低功耗MCU系统设计方法及应用

[复制链接]
439|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FCCdsp|  楼主 | 2019-10-24 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用于便携式设备的低功耗MCU系统设计方法及应用

1、便携式设备对处理器提出的挑战
  
  随着电子便携式设备在全球的风行,人们对电子便携式设备的要求也越来越高,希望产品有更多的功能,如手机摄像机自动对焦与手机闪信与计步器;希望产品功耗更低,如无线设备、手持POS机和家庭医疗产品;希望产品体积更小,如运动手表;希望产品的保密性好;处理能力强,如便携式仪器和高精度运动控制;希望价格更低和开发周期短。
  
  然而困惑的是,很多的便携式设备往往会同时要有上面的多个要求,然而现实中很难做到:同时满足高速处理、低功耗和价格?ARM高速,但是功耗而价格高;同时满足高速处理和小封装?希望封装面积小到3×3mm,又要不牺牲速度;同时满足小封装和SOC?需要ADC、SPI和12个I/O,而尺寸,最好小于5×5mm;开发周期,ARM性能完全合适,但ARM往往需要操作系统支持,开发周期长,而市场机遇稍纵即逝。
  
  为此,本文将从为电子便携式设备开发解决上述这些难题出发,对如何设计一个低功耗的单片机系统与方法和MCU在低功耗方面的优势进行分析,并小尺寸系列单片机的应用为例作出介绍。

  2、如何设计一个低功耗的单片机系统
  
  问题提出:单片机系统的功耗是否只是由单片机的功耗决定?回答是,以单片机为核心构成的系统,其系统的总能耗是由单片机能耗及其外围电路能耗共同构成。为了降低整个系统的功耗,除了要降低单片机自身的运行功耗外,还要降低外围电路的功耗。

  2.1如何设计低功耗单片机系统?
  
  要设计一个低功耗的单片机系统,需要从硬件和软件两方面入手。

  2.11硬件设计
  
  *选用尽量简单的CPU内核。在选择CPU内核时切忌一味追求性能。选择的原则应 该是“够用就好”。8位机够用,就没有必要选用16位机。一般来说,单片机的运行速度越快,功耗也越大。一个复杂的CPU集成度高、功能强,但片内晶体管多,总漏电流大,即使进入STOP状态,漏电流也变得不可忽视;而简单的CPU内核不仅功耗低,成本也低。
  
  *选用低电压供电的系统。低电压供电可以大大降低系统的工作电流。目前单片机从与TTL兼容的5V供电降低到3.3V、3V、2V乃至1.8V供电,降低单片机的供电电压可以有效降低其功耗。供电电压降低也是未来单片机发展的一个重要趋势。
  
  *选择带有低功耗模式的系统。低功耗模式指的是系统的Idel(闲置)、Stop(停止)和Suspen(暂停)模式。处于这类模式下的单片机功耗将大大小于运行模式下的功耗。
  
  *选择合适的时钟方案。时钟的选择对于系统功耗相当敏感,有两方面的问题要
注意:
  
  其一、系统总线频率应当尽量低。单片机内部的总电流消耗分为:运行电流和漏电流。单片机集成度越高,环境温度越高,漏电流也越大。单片机的运行电流几乎和其时钟频率成正比。降低时钟频率,就可以有效降低单片机的功耗。
  其二、关于时钟方案。是否使用锁相环,使用内部振荡器还是外部振荡器。现代单片机普遍使用锁相环技术,使单片机的时钟频率可以由程序控制。单片机使用外部较低的振荡器,通过软件控制,系统时钟可以在一个很宽的范围内调整,得到比较高的总线时钟。使用锁相环会带来额外的功耗。单就时钟方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种。有的单片机带有内部时钟,也可使用外部时钟。这可以根据实际系统的需要使用双时钟:一个高速时钟和一个低速时钟。处理事件时使用高速时钟,空闲时使用低速时钟。这钟双时钟系统可以有效地降低功耗。

  2.12应用软件设计
   
  应用软件设计对于一个低功耗系统的重要性常常被人们忽略。一个重要的原因是,软件上的缺陷并不像硬件那样容易发现,同时也没有一个严格的标准来判断一个软件的低功耗特性。尽管如此,设计者如果能尽量将应用的低功耗特性反映在软件中,就可以避免那些“看不见”的功耗损失。
  
  *用“中断”代替“查询”。在没有要求低功耗的场合,程序使用中断方式还是查询方式并不重要。但在要求低功耗场合,这两种方式相差甚远。使用中断方式,CPU可以什么都不做,甚至可以进入等待模式或停止模式;而查询方式下,CPU必须不停地访问I/0寄存器,这会带来很多额外的功耗。

  *用“宏”代替“子程序”。子程序调用的入栈出栈操作,要对RAM进行两次操作,会带来更大的功耗。宏在编译时展开,CPU按顺序执行指令。使用宏,会增加程序的代码量,但对不在乎程序代码量大的应用,使用宏无疑会降低系统的功耗。

  *尽量减少CPU的运算量。减少CPU的运算工作量,可以有效地降低CPU的功耗。减少CPU运算的工作可以从很多方面入手:其一,用查表的方法替代实时的计算。其二,不可避免的实时计算,算到精度够了就结束,避免“过度”的计算。其三,尽量使用短的数据类型,例如,尽量使用字符型的8位数据替代16位的整型数据,尽量使用分数运算而避免浮点数运算等。其四,让I/O模块间歇运行,即不用的I/O模块或间歇使用的UO模块要及时关掉,以节省电能;不用的I/O引脚要设置成输出或设置成输入,用上拉电阻拉高。



使用特权

评论回复

相关帖子

沙发
susceptibility| | 2019-10-28 11:31 | 只看该作者
感谢楼主分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

967

主题

1447

帖子

9

粉丝