APP下载

PIC单片机低功耗设计

2011-02-09吴清荣丁跃军

制造业自动化 2011年5期
关键词:休眠状态管脚低功耗

吴清荣,丁跃军

(河南工业技师学院, 郑州 450007)

0 引言

目前,电子产品的日趋小型化和智能化,对单片机的低功耗应用提出了更高的要求,尤其是便携式产品、野外检测仪器仪表、海河航标灯和玩具产品,对低功耗的要求更为突出。设计一个性能良好的低功耗产品,需要从硬件设计、软件设计等多方面综合考虑,是一项较为复杂的系统工作,本文阐述了低功耗设计的几种具体措施。

1 系统设计方面

1.1 选择合适的模块

PIC系列单片机虽然功耗都很低,但不同的模块电能消耗仍然不同,既便是在同一个系列里,选择的芯片型号不同,它们的电能消耗量也不同! 选型时,要注意资料中详细的参数说明,一般型号后缀为LC的芯片能耗比后缀为C的能耗要小,目前,Microahip公司最新推出了18个引脚的低功耗芯片,如PIC18F1220、PIC18F1320和nW级的芯片如PIC16F627A等,可以根据产品的实际需求,合理地来选择芯片的型号。

1.2 选择合适的工作条件

一般单片机睡眠模式下运行要比正常模式下运行耗电小得多,所以如果其它条件允许,应尽量让芯片处于睡眠状态;单片机在低电压下工作时比较省电,在选用单片机时尽可能选择较低的工作电压;另外,单片机MCU的电流和振荡频率成正比,所以,在速度允许的情况下,应尽可能选择振荡频率比较低的芯片。

1.3 选择合适的振荡方式

晶体振荡器、谐振器和RC振荡器,有着不同的唤醒时间。一般来说,晶体振荡器的唤醒时间最长为8.5mS左右,谐振器的唤醒时间约为390µS,而RC振荡器的唤醒时间最短,约为1.15µS左右。单片机在工作时,如果唤醒时间过长,在唤醒过程中存在一个预工作阶段,此时处理器已经开始消耗电能,但是还没有运行程序,这就会带来更多的电能消耗。如果所设计的产品,唤醒后的工作时间很短,一般应采用RC振荡器较为合理。

晶体振荡器、谐振器和RC振荡器,有着不同的电耗,即使在相同频率下,它们的电耗也不同。一般说来,晶体振荡器的工作电耗最小,RC振荡的工作电耗最大。三者比较结果如表1所示。

表1 晶体振荡器、谐振器和RC振荡器的比较

在不能长期工作在休眠状态的场合,如计时时钟,一般应采用晶体振荡器以获得节能效果。为了节能我们有时候还在晶体振荡器的回路中串上一个小电阻RS,如图1所示,这是因为晶体的驱动功率为: P= U2/Re,U:芯片向晶体提供的电压;Re:晶体的等效电阻;在晶体振荡器回路中串上一个小电阻RS后,加大晶体的等效电阻。这样,不仅可以减少在晶体上的功率消耗、还可以防止晶体过驱动、稳定晶体的振荡频率以及延长晶体寿命。RS的取值范围是0~10KΩ,主要基于Timer1振荡器,所有内建Timer1芯片都可以用外部晶体来实现RTC。如:PIC16F72、PIC16F73、PIC16F877、PIC18F452和PIC18F85等。

图1 晶体振荡器

1.4 合理处理I/O管脚

I/O 管脚的处理,在低功耗系统里非常重要。设置为输出的管脚可以驱动20~25mA电流。所以检查你的设计,优化每个输出管脚上的电流消耗是非常重要的,即使是弱上拉的管脚,依然可以输出 400uA电流,为达到节能目的,可以禁止内部上拉,使用外部较大的电阻做上拉。必要时还可以用一个I/O口来控制外部上拉,以便在不需要检测输入时或在休眠状态下进一步节能。如图二中的输入口I1、I2和I3的外部电路。I/O口管脚可以吸收1uA电流,而MCLR,RA4/T0CKI和OSC1可能吸收5uA电流。在干扰的环境下,让I/O管脚悬空(输入、高阻),可能因内部锁存器频繁翻转,极大地增加电流消耗,所以对于没有用的管脚,都设置为输出(高或者低均可)。

1.5 Timer1异步时钟方式下使用

在需要实时时钟的场合,在Timer1上接入一个32.768kHz 晶振,就可以实现成本低和电耗低。Timer1可以在不用外部时钟芯片、允许芯片进入睡眠模式下,继续走时钟(时间/日期)。

2 应用休眠省电模式

执行一条SLEEP指令后,便进入了休眠(SLEEP)方式。在这种方式中,为了使耗电量降至最低,把所有I/O引脚接至VDD或VSS,以确保没有外部电路从I/O引脚上引出电流,关闭A/D转换,禁止使用外部时钟,引脚必须处于一个逻辑高电平状态。

单片机从耗电的角度出发常常会进入休眠状态,但由于某个特殊的原因,又会及时从休眠状态中唤醒。

1)如果芯片出现以下事件,单片机便可以从休眠状态进入唤醒状态:

(1)将外部的复位信号输入到引脚 ;

(2)监视定时器激活(如果WDT使能);

(3)来自引脚INT的中断,RB端口的电平变位,或者其他一些外围设备中断。

当休眠状态被唤醒,设置成电源开启标志位被清零。如果WDT发生了定时时间到而引起唤醒状态, 位被清零。

2)如果以下外围设备出现中断请求,也可使单片机从休眠状态中唤醒:

(1)并行从动端口读/写操作;

(2)在异步计数方式下,定时器TMR1中断;

(3)CCP捕捉方式中断;

(4)特殊事件触发在异步方式下,定时器1采用外部时钟;

(5)SSP(起始/停止)位探测中断;

(6)在从动方式下,SSP发送或接收中断(SPI/I2C);

(7)USAR的RX/TX(同步从动方式);

(8)当A/D时钟源为RC时,A/D转换中断;(9)EEPROM写入操作完成。

当执行SLEEP指令时,下一个指令(PC+1)被预先取出。为了使器件能通过某一中断事件而激活,与之对应的中断允许位必须被置位。唤醒状态与GIE位的状态无关,如果GIE位被清零,器件将继续执行SLEEP指令后面的指令;如果GIE位被置位,器件将执行SLEEP指令后面的指令,然后转移到中断地址(0004H)。若用户不希望执行SLEEP指令后面的指令,那么在SLEEP指令后面必须要有一个NOP指令。

3 案例分析

设计一个低功耗系统产品,是一个综合规划的内容,需要考虑的因素很多。如图2所示,给出了一个具体硬件实施方案:

单片机的系统时钟采用外接R1、C1阻容振荡方式提供。既可以节省成本,又可以快速启动单片机,减少唤醒时的能耗。

日期、小时、分钟、秒的计时采用定时器/计数器TMR1完成。TMR1是具有独立的低功耗、低频率振荡器,既便是在单片机处于睡眠状态,TMR1依然可以精确计时并能在计时溢出时产生中断请求,唤醒单片机。石英晶体XTL采用32768Hz的低频晶体,在晶体回路中串有电阻R5,以便进一步降低能耗。

图2 低功耗硬件设计方案

芯片采用5V电源供电,掉电保持电源BT1采用2.4V的锂电池。BT1接在一个模拟I/O口上,R6为充电限流电阻。单片机可以通过该电阻以脉冲方式对电池充电,而停止充电时,可以通过该口以模拟输入方式,检测电源电压并调整充电脉冲的宽度,即通过软件实现智能PWM充电。在外部电源掉电时,电池BT1可以经电阻R6和I/O口输入端保护二极管D向单片机供电。由于这时的供电电流仅为微安级,因此电阻R6上的压降可以忽略不计,D1的作用是防止电池BT1向其它芯片或电路放电。如果掉电时间不是很长的话,可用漏电较小的胆电容代替电池;如果掉电时间较长的话,可用CSC-4法拉级大电容代替电池,持续时间可以从几分钟到几天。

输入口I1、I2、I3均接有120KΩ的上拉电阻R2、R3、R4,但该上拉电阻不是接到电源正极,而是接到输出端口O1上。单片机处于工作状态时,O1口输出高电平;单片机进入睡眠状态时,将O1口置成低电平或高阻状态。注意,在这里一定要把内部上拉屏蔽掉。

输出口O2接有一只二极管D2。二极管D2的作用是防止在系统掉电后高电平输出时,消耗较多的维持电能。当O2口输出低电平时,二极管D2导通,三极管基极被嵌位而截止;当O2口输出高电平时,二极管D2截止,电源经R7向三极管提供基极偏流,三极管饱和导通,继电器线圈得电,常开触点闭合。

4 结论

总之,PIC单片机工作时要最大限度地降低功耗,就要根据具体的应用场合,从硬件设计和软件设计上综合考虑,并采用相应的措施,以达到降低功耗之目的。

[1] 刘启中,李荣正.PIC单片机原理及应用[M].北京:航空航天大学出版社,2003.

[2] 丁跃军,来清民.PIC单片机基础教程[M].北京:航空航天大学出版社,2005.

[3] 张明峰.PIC单片机入门与实战[M].北京:航空航天大学出版社,2004.

[4] 李建忠.单片机原理及应用[M].西安:电子科技大学出版社,2006.

猜你喜欢

休眠状态管脚低功耗
水稻种子休眠调控与破除技术的发展
癌细胞从“休眠”到“苏醒”重大谜团获解
面向DSP+FPGA通用处理架构检测的硬件系统设计
一种高速低功耗比较器设计
一种异步FIFO的Read/Write Data Flow Through功能测试方法∗
一种宽带低功耗四合一接收机设计
低功耗便携智能翻译手套系统
低功耗技术在驾驶行为管理模块中的应用
诱导休眠状态未来可用于帮助对抗癌症
基于图像处理的异型电子元器件管脚偏移误差检测方法研究