单片机系统中RAM数据掉电保护的处理方法

合集下载

单片机掉电保护)总结

单片机掉电保护)总结

单片机应用系统断电时的数据保护方法在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。

掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM来保存数据。

由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。

第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。

EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。

但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM。

下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。

1 简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOS RA M。

CMOS型RAM存储器静态电源小,在正常工作状态下一般由电源向片外RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。

然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。

因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。

通常,采用在RAM的CS和VCC引脚之间接一个电阻来实现COMS RAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。

单片机掉电保护)总结

单片机掉电保护)总结

单片机应用系统断电时的数据保护方法在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。

掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM来保存数据。

由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。

第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。

EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。

但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM。

下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。

1 简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOS RAM。

CMOS型RAM存储器静态电源小,在正常工作状态下一般由电源向片外RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。

然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。

因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。

通常,采用在RAM的CS和VCC引脚之间接一个电阻来实现COMS RAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。

51单片机模拟IIC工作时序,以EEPROM器件进行掉电保护数据

51单片机模拟IIC工作时序,以EEPROM器件进行掉电保护数据

51单片机软件模拟I2C时序,进行掉电保护数据在数码管上按顺序显示数据0—f(十六进制)模拟断电-切断单片机电源复位后接着断电前数据显示#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit sda=P2^0;sbit scl=P2^1;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39 ,0x5e,0x79,0x71} ;uchar num,sec,panju;//由定时器进行计数,计时,以数组的形式显示于数码管每隔1S读一次AT24C16中的数据//-------------------------------定时器0进行精确的计时,由AT24C16进行掉电保护----------------------------------//void delay(){;;}void init_timer0()//定时器初始化{TMOD=0X01;//工作方式1,GATE=0,C/~T=0,M0=0,M1=1;TH0=15536/256;//求模TL0=15536%256;//求余装入初值EA=1;ET0=1;//中断允许寄存器TR0=1;//TCON寄存器}//------------------------------------------------------------------------------------------------------------//void init_AT()//EEPROM器件初始化释放总线{scl=0;delay();//微秒延时sda=1;delay();scl=1;delay();}//----------------------------------------------------------------------------------------------------------//void start() //起始信号{scl=0;delay();sda=1;delay();scl=1;delay();sda=0;delay();sda=1;//释放数据总线//--------------------------------------------------------------------------------------------------------//void write_byte(uchar date)//字节写{uchar s,temp;//局部变量temp=date;//由高位一位一位的写入for(s=0;s<8;s++){temp=temp<<1;//左移溢出到PSW寄存器CY位scl=0;//允许sda进行的变化delay();sda=CY;//进行一位一位的送入数据总线delay();scl=1;//符合读走数据总线上数据的要求delay();//稳定一段时间}scl=0;//允许sda变化,以便于接受应答信号delay();sda=1;//释放数据总线,准备接收应答信号delay();}//--------------------------------------------------------------------------------------------------------//void response()//应答,可以看书page181,由接收设备发出的第九位数据,要经由sda传输给发送设备{uchar t;//局部变量scl=1;delay();while((sda==1)&&(t<250)){t++;//等待应答有一定的时间限制,sda被拉低表示有应答,由硬件控制}scl=0;delay();}//------------------------------------------------------------------------------------------------------//void stop()//停止信号,scl=1,sda形成一个正跳变{scl=0;//允许sda变化delay();sda=0;//准备形成正跳变delay();scl=1;//信号有效前提1delay();sda=1;//形成正跳变delay();//信号有效前提1}//-----------------------------------------------------------------------------------------------------//void delay1(uint z)//毫秒级延时{for(x=z;x>0;x--)for(y=10;y>0;y--);}//---------------------------------------------------------------------------------------------------------------//uchar read_byte()//带有返回值,将所读到的数据作为返回值{uchar i,d;//局部变量d=0x00;//清空存储变量的空间for(i=0;i<8;i++){scl=0;//允许变化,即允许传送数据,sda是serial dual date busdelay();scl=1;//允许读走数据delay();d=(d<<1)|sda;//将sda上数据放入存储变量d,也是8位ucharscl=0;delay();}return d;}//----------------------------------------------------------------------------------------------------------//void write_add(uchar address,uchar date) //任意位置,写任意内容{start();//起始信号write_byte(0xa0);//写入EEPROM器件地址,写入分为数据,地址数据,地址又分为器件地址和内部存储地址,例如某班级某学生座位response();//等待应答write_byte(address);//内部存储地址实际参数addressresponse();write_byte(date);//写入真正意义上的数据,由引入的实际参数dateresponse();//等待应答stop();//停止读取数据信号delay1(1);}//-------------------------------------------------------------------------------------------------------//uchar read_add(uchar address){uchar shu;start();write_byte(0xa0);//申明所读器件地址response();write_byte(address);//申明该器件中所要求读数据的位置response();start();write_byte(0xa1);response();shu=read_byte();//进行读数据操作后,非应答,budaixingcan,而是将返回值直接赋予变量stop();}//------------------------------------------------------------------------------------------------------------// void main(){P0=0X00;init_AT();sec=read_add(0X03);//将芯片中数据读出;作为基数init_timer0();//定时器初始化设置if(sec==16)sec=0;while(1){P0=table[sec];if(panju==1){panju=0;write_add(0x03,sec);}}}//---------------------------------------------------------------------------------------------------------// void timer0_break() interrupt 1{TH0=15536/256;//求模TL0=15536%256;//求余装入初值num++;if(num==20){num=0;sec++;panju=1;if(sec==16) sec=0;}}。

单片机断电智能数据保护

单片机断电智能数据保护

·教育广角·一、系统设计相关知识1.IIC总线数据传输格式I2C总线是两线式串行总线(连同地线为3线),仅需要时钟和数据两根线就可以进行数据传输,仅需要占用微处理器的2个IO引脚,使用时十分方便。

I2C总线还可以在同一总线上挂多个器件,每个器件都有自己的器件地址(SPI总线没有器件地址,通过CPU提供片选线控制是否选中芯片),读写操作时需要先发送器件地址,该地址的器件得到确认后便执行相应的操作,而在同一总线上的其它器件不做响应,称之为器件寻址,这个原理就与我们打电话的原理相当。

IIC总线长度最长可达25英尺(一般电路板不超过一英尺),且能以100Kbps的最大传送速率支持 40个器件。

2.AT24C02工作原理(1)I2C总线操作。

ATMEL公司24C02,A0-A2用于设置芯片的器件地址,在同一总线上有多个器件时,可以通过设置A0-A2引脚来确定器件地址。

SDA是串行数据引脚,用于在芯片读写时输入或输出数据、地址等,这个引脚是双向引脚,它是漏极开路的,使用时需要加上一个上拉电阻。

SLC脚是器件的串行同步时钟信号,SLC脚由单片机控制,根据单片机的程序要求产生串行同步时钟信号,控制总线的存取。

WP脚是写保护脚,当这个脚接入高电平时,芯片内的数据均处于禁止写入状态(所禁止的地址段要看各芯片的详细资料,有的甚至无保护),当把WP脚接到地线时,芯片处于正常的读写状态。

当一个电路要求正常使用时不允许程序修改EEPROM中的数据,只有在维护设置才可以修改数据,这时可以在电路上设置WP跳线或用微处理器对WP进行控制,这样只有在特定的电路状态下才可以更改到数据。

要在单片机系统中应用I2C总线的EEPROM做存储设备时,先要了解I2C总线的基本驱动方法。

在I2C总线空闲时,SDA和SCL应为高电平,也只有在这个条件下,单片机才可以控制总线进行传输数据。

在数据传输的刚开始时,总线要求有一个START(开始位)位作为数据开始的标识,它的要求是SCL为高时,SDA有一个从高到低的电平跳变动作,完成这个动作后才可以进行数据传输。

《单片机原理及应用第三版》习题参考答案

《单片机原理及应用第三版》习题参考答案

《单片机原理及应用第三版》习题参考答案第一章1. 为什么计算机要采用二进制数学习十六进制数的目的是什么在计算机中由于所采用的电子逻辑器件仅能存储和识别两种状态的特点计算机内部一切信息存储、处理和传送均采用二进制数的形式。

可以说二进制数是计算机硬件能直接识别并进行处理的惟一形式。

十六进制数可以简化表示二进制数。

2, 1,01111001 79H 2,0.11 0.CH 3,01111001.11 79.CH 4,11101010.1010EA.AH 5 ,01100001 61H 6, 00110001 31H3. 1. 0B3H 2. 80H 3. 17.AH 4 .0C.CH4. 1. 01000001B 65 2. 110101111B 4315. 1. 00100100 00100100 00100100 2. 10100100 11011011 11011100 5. 10000001 11111110 111111116. 00100101B 00110111BCD 25H7. 137 119 898.什么是总线总线主要有哪几部分组成各部分的作用是什么总线是连接计算机各部件之间的一组公共的信号线。

一般情况下可分为系统总线和外总线。

系统总线应包括地址总线AB 控制总线CB 数据总线DB 地址总线ABCPU根据指令的功能需要访问某一存储器单元或外部设备时其地址信息由地址总线输出然后经地址译码单元处理。

地址总线为16位时可寻址范围为21664K地址总线的位数决定了所寻址存储器容量或外设数量的范围。

在任一时刻地址总线上的地址信息是惟一对应某一存储单元或外部设备。

控制总线CB由CPU产生的控制信号是通过控制总线向存储器或外部设备发出控制命令的以使在传送信息时协调一致的工作。

CPU还可以接收由外部设备发来的中断请求信号和状态信号所以控制总线可以是输入、输出或双向的。

数据总线DBCPU是通过数据总线与存储单元或外部设备交换数据信息的故数据总线应为双向总线。

单片机中的ROM,RAM和FLASH的作用

单片机中的ROM,RAM和FLASH的作用

单⽚机中的ROM,RAM和FLASH的作⽤ROM,RAM和FLASH的区别,下⾯主要是具体到他们在单⽚机中的作⽤。

⼀、ROM,RAM和FLASH在单⽚中的作⽤ROM——存储固化程序的(存放指令代码和⼀些固定数值,程序运⾏后不可改动)c⽂件及h⽂件中所有代码、全局变量、局部变量、’const’限定符定义的常量数据、startup.asm⽂件中的代码(类似ARM中的bootloader或者X86中的BIOS,⼀些低端的单⽚机是没有这个的)通通都存储在ROM中。

RAM——程序运⾏中数据的随机存取(掉电后数据消失)整个程序中,所⽤到的需要被改写的量,都存储在RAM中,“被改变的量”包括全局变量、局部变量、堆栈段。

FLASH——存储⽤户程序和需要永久保存的数据。

例如:现在家⽤的电⼦式电度表,它的内核是⼀款单⽚机,该单⽚机的程序就是存放在ROM⾥的。

电度表在⼯作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。

电压和电流时⼀个适时的数据,⽤户不关⼼,它只是⽤来计算电度⽤,计算完后该次采集的数据就⽤完了,然后再采集下⼀次,因此这些值就没必要永久存储,就把它放在RAM⾥边。

然⽽计算完的电度,是需要永久保存的,单⽚机会定时或者在停电的瞬间将电度数存⼊到FLASH⾥。

⼆、ROM,RAM和FLASH在单⽚中的运作原理1、程序经过编译、汇编、链接后,⽣成hex⽂件;2、⽤专⽤的烧录软件,通过烧录器将hex⽂件烧录到ROM中注:这个时候的ROM中,包含所有的程序内容:⼀⾏⼀⾏的程序代码、函数中⽤到的局部变量、头⽂件中所声明的全局变量,const声明的只读常量等,都被⽣成了⼆进制数据。

疑问:既然所有的数据在ROM中,那RAM中的数据从哪⾥来?什么时候CPU将数据加载到RAM中?会不会是在烧录的时候,已经将需要放在RAM中数据烧录到了RAM中?答:(1)ROM是只读存储器,CPU只能从⾥⾯读数据,⽽不能往⾥⾯写数据,掉电后数据依然保存在存储器中;RAM是随机存储器,CPU既可以从⾥⾯读出数据,⼜可以往⾥⾯写⼊数据,掉电后数据不保存,这是条永恒的真理,始终记挂在⼼。

stc89c52中EEPROM使用方法

stc89c52中EEPROM使用方法

单片机STC‎89C52R‎C内部EEPR‎O M单片机运行时‎的数据都存在‎于RAM(随机存储器)中,在掉电后RA‎M中的数据是无‎法保留的,那么怎样使数据在掉‎电后不丢失呢‎?这就需要使用‎E EPROM‎或FLASH‎R OM 等存储器来实‎现。

在传统的单片‎机系统中,一般是在片外‎扩展存储器,单片机与存储‎器之间通过I‎I C 或SPI 等接口来进行‎数据通信。

这样不光会增‎加开发成本,同时在程序开‎发上也要花更‎多的心思。

在STC 单片机中内置‎了EEPRO‎M(其实是采用ISP/IAP 技术读写内部‎F LASH 来实现EEP‎R OM),这样就节省了‎片外资源,使用起来也更‎加方便。

下面就详细介绍S‎T C 单片机内置E‎E PROM 及其使用方法‎STC 各型号单片机‎内置的EEP‎R OM 的容量最小有‎2K,最大有16K‎,基本上很好地‎满足项目的需‎要,更方便之处就是‎节省了周边的‎E EPROM‎器件,达到节省成本‎的目的,而且内部EE‎P ROM 的速度比外部‎的EEPROM‎的速度快很多‎。

STC 各型号单片机‎内置的EEP‎R OM 是以512 字节为一个扇‎区,EEPROM‎的起始地址=FALSH 容量值+1,那么STC8‎9C52RC‎的起始地址为‎0x2000‎,第一扇区的起‎始地址和结束‎地址0x20‎00~0x21FF‎,第二扇区的起始地址和‎结束地址0x‎2200~0x23FF‎,其他扇区如此‎类推。

深入重点:�传统的EEP‎R OM 是电可擦可编‎程只读存储一‎种掉电后数据‎不丢失的存储‎芯片。

�STC89C‎52RC 的EEPRO‎M是通过ISP‎/IAP 技术读写内部‎F LASH 来实现EEP‎R OM。

�STC89C‎52RC 的EEPRO‎M起始地址为0‎x2000,以512 字节为一个扇‎区,EERPOM‎的大小为2K‎字节。

STC89C‎52RC 与EEPOR‎M实现的寄存器‎有6 个,分别是ISP‎_DATA、ISP_AD‎D RH、ISP_AD‎D RLISP_TR‎I G、ISP_CM‎D、ISP_CO‎N TR。

单片机系统中的掉电检测与数据存储问题

单片机系统中的掉电检测与数据存储问题

5)理论Байду номын сангаас算
(1)按恒流充放电的简化计算:Q = CV = IT.Q是电量,C是电容量,V是电压,I是电流,T是时间
那么T=CV/I,在本例中可以估算时间为 T= 0.0033f*(5.0V-3.8V) / 0.012A = 0.33s,即330ms.
330/8.5 = 38.8mS,即最多可以保存38字节数据到EEPROM中,38字节对于本应用已经足够。
1)总体思路
由于电能表的计量是要求持续性的,而主供电系统不可能是持续的,注意这里需要一个掉电检测与数据存储的问题。首先检测出供电系统已经断电,然后启用备用电源存储数据,而且数据必须存储在掉电不易失的存储器(如EEPROM,FLASH等)中。
本应用中,需要检测出掉电后备用电源能提供足够的电能供单片机进行数据存储。总体思路,本应用中单片机采用的是STC89C58RD+,单片机内部已经集成了16K的EEPROM,所以不需要另外外接存储器。ADE7755已经自带了电源监控功能,前面的ADE7755的介绍中已经有所描述,所以亦无须担心。这里只需要解决好单片机的掉电问题即可。在系统的稳压前端设置监测点,当监测点的电压下降到另一个基准比较电压时产生单片机外部中断。当单片机接收到外部中断后启动数据存储程序,将数据存储到片内EEPROM内。当主供电系统恢复供电后,单片机首先读取EEPROM数据,然后再恢复计数。
3)备用电源
虽然备用电源可以采用可充电电池,大电容等方案,但由于这里所需要的电量并不是很大,持续时间也不需要很长,只需要能完成数据存储即可。所以这里选择了大电容作为备用电源这一方案。选择了在稳压后端与单片机电源端直接并联了两个达3300uF的大容量电解电容。同时,为安全起见,在单片机的电源输入端还串入了一个低正向压降压降的二极管来阻止大电容向除单片机意外的其他电路放电。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机系统中RAM数据掉电保护的处理方法在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。

掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM 来保存数据。

由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。

第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。

EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。

但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM。

下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。

1 简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOS RAM。

CMOS型RAM 存储器静态电源小,在正常工作状态下一般由电源向片外 RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。

然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。

因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。

通常,采用在RAM的CS 和VCC引脚之间接一个电阻来实现 COMS RAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。

图1中,4060开关电路起到对CS控制的作用。

当电压小于等于4.5V时就使开关断开,CS线上拉至&ldquo;1&rdquo;,这样,RAM中的数据就不会冲失;当电压大于4.5V时,4060开关接通,使RAM能正常进行读写。

2 可靠的RAM掉电保护电路上述的电路虽然简单,但有时可能起不到RAM掉电保护的作用,原因是在电源掉电和重新加电的过程中,电源电压跃变的干扰可能使RAM瞬间处于读写状态,使原来RAM中的数据遭到破坏,因此,在掉电刚刚开始以及重新加电直到电源电压保持稳定下来之前,RAM应处于数据保持状态,6264 RAM、 5101 RAM等RAM芯片上都有一个CE2引脚,在一般情况下需将此引脚拉高,当把该引脚拉至小于或等于0.2V时,RAM就进入数据保持状态。

实用的静态RAM掉电保护电路,图2中U1、U2为电压比较器,稳压管D3提供一个基准电压Vr(Vr= 3.5V)。

当Vcc为5V时,在R4上得到的分压大于Vr,U2输出高电平,又因为U4输出也为高电平,故CE2输出为高电位,单片机此时可对RAM进行存取,当电源掉电时,Vcc开始下降,当满足如下条件时:R4&times;Vcc/[(R4+R3)/(R5+R6)]&ge;VrU2 输出低电平,通过U5和U6使CE2输出小于等于0.2V,RAM进入数据保持状态(按图2中元件参数代入上式,当Vcc降到4.7V时,U2输出为低电位)。

若Vcc继续下降使U3翻转,再通过D4、U4和U6进一步保证CE2为低电平。

此外,当Vcc下降到小于E时,D2截止,D1导通,这时E作为 RAM的备份电源,当单片机重新加电时,Vcc由0跃变到5V时,U2的输出端会出现瞬间的干扰脉冲,由于U3和U4间电路的积分延迟(约0.7RC), CE2并不立即升到高电平,因而阻止了U2的干扰脉冲,当延时结束时,电源电压已稳定在5V,此后CE2升高,单片机便可对RAM进行存取。

图2中U3和 U6为一块四施秘特与非门(CD4093),该电路直接由E供电,这样才能保证掉电后使CE2&le;0.2V,并在重新加电时CE2不受电源电压跃变的干扰,比较器U1和U2为电源供电,Vcc为后备电源U1的电压监视电路,当后备电池快用完时(小于3.5V),发光管会发出亮光,表明要换上新电池,备份电源可用3节5号干电池,也可以采用锂电池或镍电池。

在测量、控制等领域的应用中,常要求单片机内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能够保存完好,这就要求对单片机系统加接掉电保护电路。

掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用EEPROM 来保存数据。

由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。

第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用[1]。

EEPROM既具有ROM掉电不丢失数据的特点,又有RAM随机读写的特点。

但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM。

下面将介绍最常用的一些掉电保护的处理方法,希望能对相关设计人员在实际工作中有所帮助。

1 简单的RAM数据掉电保护电路在具有掉电保护功能的单片机系统中,一般采用CMOS单片机和CMOS RAM。

CMOS型RAM 存储器静态电源小,在正常工作状态下一般由电源向片外 RAM供电,而在断电状态下由小型蓄电池向片外RAM供电,以保存有用数据,采用这种方法保存数据,时间一般在3-5个月[2]。

然而,系统在上电及断电过程中,总线状态的不确定性往往导致RAM内某些数据的变化,即数据受到冲失。

因此对于断电保护数据用的RAM存储器,除了配置供电切换电路外,还要采取数据防冲失措施,当电源突然断电时,电压下降有个过程,CPU在此过程中会失控,可能会误发出写信而冲失RAM中的数据,仅有电池是不能有效完成数据保护的,还需要对片选信号加以控制,保证整个切换过程中CS引脚的信号一直保持接近VCC。

通常,采用在RAM的CS 和VCC引脚之间接一个电阻来实现 COMS RAM的电源切换,然而,如果在掉电时,译码器的输出出现低电平,就可能出现问题,图1给出一种简单的电路设计,它能够避免上述问题的产生。

图1中,4060开关电路起到对CS控制的作用。

当电压小于等于4.5V时就使开关断开,CS线上拉至&ldquo;1&rdquo;,这样,RAM中的数据就不会冲失;当电压大于4.5V时,4060开关接通,使RAM能正常进行读写。

2 可靠的RAM掉电保护电路上述的电路虽然简单,但有时可能起不到RAM掉电保护的作用,原因是在电源掉电和重新加电的过程中,电源电压跃变的干扰可能使RAM瞬间处于读写状态,使原来RAM中的数据遭到破坏,因此,在掉电刚刚开始以及重新加电直到电源电压保持稳定下来之前,RAM应处于数据保持状态,6264 RAM、 5101 RAM等RAM芯片上都有一个CE2引脚,在一般情况下需将此引脚拉高,当把该引脚拉至小于或等于0.2V时,RAM就进入数据保持状态。

实用的静态RAM掉电保护电路,图2中U1、U2为电压比较器,稳压管D3提供一个基准电压Vr(Vr= 3.5V)。

当Vcc为5V时,在R4上得到的分压大于Vr,U2输出高电平,又因为U4输出也为高电平,故CE2输出为高电位,单片机此时可对RAM进行存取,当电源掉电时,Vcc开始下降,当满足如下条件时:R4&times;Vcc/[(R4+R3)/(R5+R6)]&ge;VrU2 输出低电平,通过U5和U6使CE2输出小于等于0.2V,RAM进入数据保持状态(按图2中元件参数代入上式,当Vcc降到4.7V时,U2输出为低电位)。

若Vcc继续下降使U3翻转,再通过D4、U4和U6进一步保证CE2为低电平。

此外,当Vcc下降到小于E时,D2截止,D1导通,这时E作为 RAM的备份电源,当单片机重新加电时,Vcc由0跃变到5V时,U2的输出端会出现瞬间的干扰脉冲,由于U3和U4间电路的积分延迟(约0.7RC), CE2并不立即升到高电平,因而阻止了U2的干扰脉冲,当延时结束时,电源电压已稳定在5V,此后CE2升高,单片机便可对RAM进行存取。

图2中U3和 U6为一块四施秘特与非门(CD4093),该电路直接由E供电,这样才能保证掉电后使CE2&le;0.2V,并在重新加电时CE2不受电源电压跃变的干扰,比较器U1和U2为电源供电,Vcc为后备电源U1的电压监视电路,当后备电池快用完时(小于3.5V),发光管会发出亮光,表明要换上新电池,备份电源可用3节5号干电池,也可以采用锂电池或镍电池。

3 利用TL7705对现场数据进行保护单片机构成的应用系统在突然断电时,往往使片内RAM数据遭到破坏,下面介绍一种利用TL7705构成的电源监控电路,使单片机系统在掉电时自动保护现场数据。

3.1 TL7705的工作原理TL7705 是电源监控用集成电路,采用8脚双列直插式封装,其内部结构图3所示。

图3中,基准电压发生器具有较高的稳定性,可由1脚输出2.5V基准电压,为了吸收电源的同脉冲干扰,通常在1脚上接一个0.1&mu;F的滤波电容来提高其抗干扰能力,被监控的电源电压由SENSE端7脚引入,经过R1和R2分压后送入比较器CMP1,与基准电压进行比较,当其值小于基准电压时,T1导通,定时电容CT通过T1放电,使CMP2比较器翻转,T2和T3导通,输出脚RESET 为高电平,SESET反为低电平,当送入CMP1比较器的电压高于基准电压时,T1截止100&mu;A恒流源给CT充电,当CT上的电压高于2.5V时, CMP2比较器翻转,T2和T3截止,RESET和RESET反输出关断。

3.2 TL7705与80C51单片机的接法在某些单片机应用系统中需要在系统掉电时记忆当前现场状态,以使电源恢复后能继续从断电处运行,图4是以80C51单片机为例采用其空闲方式或掉电方式,在备用电池支持下实现掉电后的数据保护。

图4中,R1、C1和74LSO4构成单片机的上电自动复位和手动按钮复位电路,备用电池P1及D1、D2实现掉电时备用电池的切换。

电源正常时D1不导通,+5V直接给单片机供电,并为电池P1充电,为了减小电池耗电,备用电池只给单片机供电,保护片内RAM中的数据,电源掉电后,其他外围电路的工作电压仅靠电源电容维持很短的时间,电位器RW用来调节检测电压,范围为4.5-4.75V,当掉电时,外围电路的电压下降到门限设定电压时,可将片外RAM 中需要保护的数据写入片内RAM中,并使单片机进入掉电工作方式以完成数据保护,为了保证单片机有足够的处理时间,取检测电压为4.75V,当电源电压降至4.75V时,TL7705由RESET反向单片机发出中断请求信号(INTO反)。

相关文档
最新文档