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引脚要设置成输出或设置成输入,用上拉电阻拉高。
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引脚要设置成输出或设置成输入,用上拉电阻拉高。
举报