[产品应用] 如何设计低功耗单片机系统?

[复制链接]
137|4
forgot 发表于 2025-11-15 19:40 | 显示全部楼层 |阅读模式

   硬件设计

  *选用尽量简单的CPU内核。在选择CPU内核时切忌一味追求性能。选择的原则应 该是“够用就好”。8位机够用,就没有必要选用16位机。一般来说,单片机的运行速度越快,功耗也越大。一个复杂的CPU集成度高、功能强,但片内晶体管多,总漏电流大,即使进入STOP状态,漏电流也变得不可忽视;而简单的CPU内核不仅功耗低,成本也低。

  *选用低电压供电的系统。低电压供电可以大大降低系统的工作电流。目前单片机从与TTL兼容的5V供电降低到3.3V、3V、2V乃至1.8V供电,降低单片机的供电电压可以有效降低其功耗。供电电压降低也是未来单片机发展的一个重要趋势。

  *选择带有低功耗模式的系统。低功耗模式指的是系统的Idel(闲置)、Stop(停止)和Suspen(暂停)模式。处于这类模式下的单片机功耗将大大小于运行模式下的功耗。

  *选择合适的时钟方案。时钟的选择对于系统功耗相当敏感,有两方面的问题要注意:

  其一、系统总线频率应当尽量低。单片机内部的总电流消耗分为:运行电流和漏电流。单片机集成度越高,环境温度越高,漏电流也越大。单片机的运行电流几乎和其时钟频率成正比。降低时钟频率,就可以有效降低单片机的功耗。

  其二、关于时钟方案。是否使用锁相环,使用内部振荡器还是外部振荡器。现代单片机普遍使用锁相环技术,使单片机的时钟频率可以由程序控制。单片机使用外部较低的振荡器,通过软件控制,系统时钟可以在一个很宽的范围内调整,得到比较高的总线时钟。使用锁相环会带来额外的功耗。单就时钟方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种。有的单片机带有内部时钟,也可使用外部时钟。这可以根据实际系统的需要使用双时钟:一个高速时钟和一个低速时钟。处理事件时使用高速时钟,空闲时使用低速时钟。这钟双时钟系统可以有效地降低功耗。


   应用软件设计

  应用软件设计对于一个低功耗系统的重要性常常被人们忽略。一个重要的原因是,软件上的缺陷并不像硬件那样容易发现,同时也没有一个严格的标准来判断一个软件的低功耗特性。尽管如此,设计者如果能尽量将应用的低功耗特性反映在软件中,就可以避免那些“看不见”的功耗损失。

  *用“中断”代替“查询”。在没有要求低功耗的场合,程序使用中断方式还是查询方式并不重要。但在要求低功耗场合,这两种方式相差甚远。使用中断方式,CPU可以什么都不做,甚至可以进入等待模式或停止模式;而查询方式下,CPU必须不停地访问I/0寄存器,这会带来很多额外的功耗。

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

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


星辰大海不退缩 发表于 2025-11-17 20:46 | 显示全部楼层
系统总线频率应当尽量低

评论

是的  发表于 2025-11-19 08:33
LOVEEVER 发表于 2025-11-19 14:50 | 显示全部楼层
选用尽量简单的CPU内核。在选择CPU内核时切忌一味追求性能
懒癌晚期患者 发表于 2025-11-20 16:03 | 显示全部楼层
低功耗模式的选择确实很关键,尤其是在电池供电的应用中,能够显著延长设备的使用寿命。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2162

主题

14883

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部