利用C8051F310内置比较器0实现掉电模式
扫描二维码
随时随地手机看文章
在测量、控制等领域,常要求单片机内部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,且系统在电源恢复后,能够继续执行程序。利用C8051F310单片机内置比较器0对电源电压进行实时检测,主电源掉电时,执行比较器0中断服务程序,保存特殊功能寄存器内容,并置单片机于掉电模式以降低功耗,由备用电池对单片机供电,保持RAM中的数据不丢失。
基于C8051F310单片机的以下几点,提出了本文题目要讨论的内容,并且已通过实验测试。
① C8051F310单片机进入掉电模式,CPU停止运行,所有的中断和定时器(时钟丢失检测器除外)都处于非活动状态,内部振荡器被停止(模拟外设保持在所选择的状态,外部振荡器不受影响)。供电电压大于1.5 V即可保持RAM中的数据不变,且功率消耗极低,电流小于0.1 μA。
② C8051F31x器件内部有2个电压比较器,在比较器输出的上升沿和下将沿都可以产生中断。比较器的响应时间是可编程的,比较器的正向和负向回差电压也是可配置的。
③ 比较器的输出可以是与系统时钟同步的或者是不同步的。即使在系统时钟停止时,比较器异步输出CP0A信号仍然可用,这就允许比较器在器件处于停机方式时工作并产生输出。当被禁止时,比较器的电源电流降到小于 100 nA。
④ C8051F310运行后,在复位期间内部数据存储器的内容不发生改变,复位前存储的数据保持不变。堆栈中的数据不发生变化。
图1 单片机电源与电压检测原理
在C8051F310系统设计中,使用电池作为备用电源(电池电压大于C8051F310的RAM数据保持电压即可, 1.5 V),单片机电源与电压检测原理如图1所示。主电源正常时,调整电位器,使CP0+端电压略大于CP0-端电压。电压检测部分有两个功能:一是为单片机内置比较器提供模拟输入信号;二是运算放大器输出驱动LED灯,指示主电源正常。也可通过交叉开关将CP0A连到端口引脚,替代图1中的功率放大器驱动电源指示灯。前提条件是进入掉电模式前不禁止比较器且电池电压大于单片机最低工作电压,这会增加掉电期间电池功耗。
主电源VCC正常时,主电源电压高于电池电压,系统由主电源供电。 主电源发生意外使电压下降或者丢失时,比较器0对单片机发出断电中断请求,单片机响应中断,利用主电源上滤波电容上的剩余储电,以最短的时间进入并执行中断服务子程序。在中断服务子程序中,将一些必须保护的特殊功能寄存器中的内容保存到RAM(可利用堆栈区),关闭比较器、模数转换等模拟外设,降低功耗,最后建立掉电保护标记并使单片机进入停机工作状态。主电源恢复后,单片机执行上电复位,从掉电时断点处继续执行程序。
掉电标志位必须使用RAM中的可寻址位(位于20H~2FH单元),因为单片机复位时,特殊功能寄存器中的通用标志位被复位。在停机方式,内部振荡器、CPU和所有的数字外设都停止工作,但外部振荡器电路的状态不受影响。因此在进行低功耗系统设计时建议使用内部振荡器;或者使用外部振荡器,在掉电中断服务程序中切换到内部振荡器,达到在掉电模式进一步降低电池消耗的目的。根据图1,内置比较器0配置为下降沿中断。正向和负向回差电压配置0,响应时间配置为方式0为佳。比较器0中断服务子程序流程如图2所示。
图2 比较器0中断服务程序流程
图3 主程序流程
主程序流程如图3所示。
使用C8051F310单片机的掉电模式应注意以下3点:
① 禁止WDT(电源监视器):防止进入掉电模式后电池电压大于RAM数据保持电压而小于Vrst(单片机VDD监视器门限电压)时复位单片机,致使单片机不能从断点处继续执行程序。
② 对于在掉电模式电池电压大于Vrst的情况,应禁止时钟丢失检测器。这样,当发生电源丢失时使单片机长期处于掉电模式,延长电池使用寿命。如果现场必须使用时钟丢失检测器,时钟可选用片外振荡器,即使在掉电模式,时钟也不丢失。
③ 禁止比较器0复位。