对于大部分单片机系统,由于单片机的运行速度很快,单片机在工作的过程中有大量的空闲等待时间。在某些情况下,系统的等待时间甚至可以达到总工作时间的95%以上。在等待过程中,单片机不作任何工作,只是在踏步等待,或者在循环判断有无新的外部请求。在这个过程中,可以让单片机内部的大部分电路工作在休眠状态,可以大大地降低单片机的功耗。
同时,也可以让有关的外部电路工作在休眠状态,这样就使整个产品的供电大大降低。产品的这种非连续工作的特点是微功耗设计的基本思路,此外,还要根据产品的特点醉意更多的设计细节。
选择合适的CPU芯片是微功耗设计的关键目前的单片机种类很多,而且大都针对某一个特定的应用,可根据具体应用情况选择合适的单片机。在需要进行微功耗设计的应用中,可以根据下面的规则来选择:
1. 选择尽可能减少外部电路的单片机。随着集成电路工艺技术的飞速发展,真正单片化的单片机系统已逐步成为主流产品。
2. 注意比较工作电流和静态电流。由于工艺的不同,单片机内部工作电流、静态电流不尽相同,有的甚至相差很大。在选择单片机时,不但要考虑其工作电流,还要仔细考虑其在休眠状态下的静态电流。
3. 通过比较可以看出,选用专用的低功耗单片机,可更加灵活地控制其功耗,在满足设计要求的前提下使其尽可能工作于最省电的模式。
4. 选择合适的ROM、RAM。一般来讲,存储器越大功耗也越大。在满足设计要求的情况下,尽可能使用单片机内部的ROM、RAM。
5. 选择合适的工作时钟频率。在较低的时钟频率下,单片机的功耗也较低。以MSP430F1121为例,当工作在1MHz的主频之下,典型电流消耗为300uA;而工作在4096Hz的主频之下,其电流只有3uA。
6. 选择合适的IO管脚数,和合适的IO驱动能力和显示驱动能力。单片机驱动的IO管脚数越多,其功耗也就越大。
7. 选择合适的单片机,实现真正意义上单片化,可以省去了大量的硬件开发调试工作,提高了工作效率,系统的可靠性、抗干扰能力得到了显著的改善,同时使系统成本降低,更加适合微型化和便携化,对降低系统功耗有着决定性的作用。
低功耗设计策略
a. 使内部电路可选择性地工作
一般,设计中不会用到全部的单片机内部电路,而那些没有用到的电路将产生额外的功耗。在需要进行微功耗设计的应用中,可以通过对内部特殊功能寄存器编程,选择使用不同的功能模块,对于不使用的功能模块使其停止工作,减少系统无效功耗。
b. 产品的低电压设计可以降低产品功耗
一般,单片机的工作电压越高,内部晶体管在放大区的工作时间也越长,单片机的功耗也就越大。由于采用先进的芯片生产工艺,使单片机的电压范围一般很宽,如可以在1.8V~5V电源电压范围内正常工作。为了降低系统功耗,可尽量采用低电压设计。
单片机供电电压范围的放宽,可以进一步拓宽单片机的应用领域,尤其是便携式或掌上型设备中,可以放心地使用电池作为电源,而不必关心放电过程电压曲线是否平衡、在低电压下是否会影响单片机正常工作,更不必因电池供电而专门增加稳压电路,从而可减少大量的功率消耗。
c. 在空闲状态时,采用低速时钟信号
单片机的功耗与其工作频率成正比,系统运行频率越高,电源功耗就会相应增大。图1所示为Philips公司的80C31单片机Vcc上的电流与主时钟频率的关系曲线,可以看出随着单片机主时钟频率的增加,其Vcc上的电流也呈线形增加,则其功耗也随着主时钟频率的增加而增加。
为更好地降低功耗,在许多单片机的内部集成了两套独立的时钟系统,即高速的主时钟和低速的副时钟,在不需要高速运行的情况下,可选用低速的副时钟,维持内部基本的定时要求。某些单片机的主时钟也可通过功能寄存器来重新设定,在满足功能需要的情况下,按一定比例降低主时钟频率,以降低电源功耗。可在程序运行的过程中,通过软件对特殊功能寄存器赋值在线改变时钟频率,或进行主时钟和副时钟切换。
d. 尽可能工作在休眠模式
为降低功耗,通常单片机都提供多种工作模式,当处于空闲时进入休眠模式,当有一个事件提出中断请求时,可以快速地返回到正常的运行模式,这样既可以保证系统节电,又不影响正常的工作。
不同的单片机会有不同的工作模式,如51系列的单片机有空闲模式和掉电模式。在不同的工作模式中,单片机内核中某些功能模块将设置为休眠状态。如 MSP430系列单片机有6种不同的工作模式,除了一种是正常的运行模式(active mode)以外,其余五种均是低功耗模式,在这些模式下可以分别将CPU、内部时钟、内部总线、直至内部晶振全部关闭,使单片机的耗电降为最小。只有发生中断请求或复位时,系统被唤醒进入正常运行模式。
外部电路的微功耗设计
单片机周边电路的微功耗设计十分复杂,对产品的整体耗电而言也非常重要。复杂,庞大的周边电路将会带来很大的电源消耗,因此,应尽量少选用外部电路,尽可能利用单片机内部的资源。
作为一个用电池供电的设备而言,其静态功耗最好为几微安~几十微安,由于这部分电流是在待机状态下加在设备上,是常供电电流,在系统不工作的情况下将造成很大的电能浪费。因此在设计中,应该使外部电路最少,并减少外部电路在静态需要供电的部分。同时,还需要考虑以下问题:
1. 系统中单片机以外的其它器件尽可能选用静态功耗低的器件,如尽量选用CMOS芯片,少用双极性的晶体管门电路,因为双极性电路需要一个恒定的维持电流,增加了电路的静态功耗。
2. 按照芯片的要求,将不用的引脚接至地或者高电平,悬空的输入脚将会增大芯片的静态电流。
3. 在IO管脚上尽量少用上拉或下拉电阻,这些电阻将消耗一定的静态电流。
4. 数据采集的模拟部分的设计可以采用一种轨对轨(rail-to-rail)的BiCMOS运算放大器,如LMV824用于替代LM324时,电源可低至2.5V,单位带宽到5MHz,仅250μA/通道。
5. 设计外部器件的电源控制电路,使外部器件或设备在不工作时关断供电,减少无效功耗。低功耗器件的价格一般稍高一些,如果价格允许,通常都可以找到相应的低电压、低功耗的替代产品。
6. 多用电压驱动电路,少用电流驱动电路。例如,要显示运行结果、当前状态或控制信息,通常有LCD显示器、LED显示器两种选择。用LCD输出,一般只有几个微安的电流;而用LED则会有几十毫安的电流。