微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > EEPROM数据丢失的原因与对策

EEPROM数据丢失的原因与对策

时间:11-27 来源:互联网 点击:

的值。执行程序代码出错或是程序指针跑飞。刚好执行EEPORM写入操作,才会出现所说的EEPROM数据丢失!就算是外置EEPROM在低于正常工作电压,进行写入操作,也会出现这种情况!

BOD的功能是低压复位。当电压低过一定的值,就会让单片机复位。不能继续程序代码,就没有出现所说的丢失数据!

EEPORM进行数据备份,并在每份数据后里加入校验机制(如RCR)。我是这么做的,读取EEPROM的数据组并进行校验检测。如果通不过,这组数据就不要。继续下一组数据检测,当所有的数据组都不能通过检测时,并加载默认的设置参数!在更新数据时,刷新所有的数据组。并给每组加入校验机制!但最好不要在掉电时对EEPROM进行任务的操作!这样出错的机率很低!


在项目开发中经常使用到EEPROM,现在把自己开发中曾经遇到的陷阱和自己的解决方法列出。

(1)现象:加密型遥控器的ID自动丢失和改变。

原因:在更新EEPROM过程中,断开电源。

解决方法:

a.更改设计避免在写入EEPROM过程中断开电源;

b.增加100uF的电容,断电后瞬间维持EEPROM供电正常至EEPROM写入完成。

(2)现象:保存在EEPROM里的配置信息自动被改变。

原因:在EEPROM读写过程中进入了中断服务程序,而中断服务程序也调用了EEPROM读写函数。

解决方法:

a.保证EEPROM读写函数的第一句是cli(),最后一句是sei();

b.中断服务程序不直接调用EEPROM读写函数,如果SRAM足够大使用读写缓冲区代替直接读写EEPROM,中断返回后在主循环粒更新EEPROM;

c.如果检测到EEPROM已被占用,则进入阻塞状态,等待EEPROM释放后继续执行;

d.如果EEPROM里的数据长度大于EEPROM最小存储单元,必须保证该数据的读写不被打断。

(3)现象:突然断电时,EEPROM数据偶尔会丢失。原因:在断电时刚好在进行EEPROM写操作。

解决方法:加大电源滤波电容的容量,增加电压检测功能,当电压偏低时禁止EEPROM写入操作。

(4)现象:当大功率交流或直流电机启动或后,EEPROM里的数据自动丢失或改变。

原因:在大功率电机启动或断开瞬间EMI干扰大。

解决方法:

a.避开这些时候读写EEPROM。

b.如果无法避开这些时候,启动EEPROM写保护功能,并且每个数据都保存多个副本。

c.使EEPROM和EEPROM的DAT,CLK等信号线远离可能产生干扰的元件,并且避免形成大的环路。

d.使用EMI抑制电路降低干扰幅度。

9.5注意事项

单片机的断电保护虽然不是非常复杂,但是要做得好,使线路简洁、性能可靠却很不容易。下面列了几点设计时需要注意的事项。

(1)加大滤波电容的容量。单片机接收到电压监控电路送来的中断信号后,立即中断正在执行的程序,转入中断服务子程序,执行数据保护并最后使单片机和RAM进入低功耗状态。在执行中断服务程序期间,单片机上的电源还必须保持在能够正常工作的电压范围,也就是说电源VCC的跌落速度不能太快。为了达到这个目的,必须在主电源的滤波电路中,加大滤波电解电容的容量,一般应使其总电容为4700mF以上。为了缩小体积,也可以把几个电解电容器并联使用。

对于断电后数据保存在EEPROM的单片机系统,由于EEPROM的数据写入速度要比RAM慢得多,这样写同样的数据,需要的时间将会更多,因此要求主电源电压的降低速度更慢,也就是说滤波电容的容量要更大,才能保证数据安全完整地写入到EEPROM中。

(2)中断服务程序的执行速度要快。因为断电后执行断电保护中断程序期间,完全是靠滤波电容上的储电进行工作的,如果能加快中断服务程序的执行时间,将可以降低对电源滤波电路的要求,从节约成本和减少电路所占用的印制板空间来说都是非常有利的。为了加快中断服务程序的执行速度,建议采用汇编语言编写中断服务程序。

(3)中断服务程序中,往往是直接与存储器的绝对地址打交道,很容易算错地址,必须特别小心,反复验对,才能保证程序准确无误。

(4)由于电源突然断电,在断电的某一瞬间,将会出现电源将断未断,反复断开后又闭合,闭合后又断开的情景,反映在电源波形上就是有出现了许多毛剌,这些毛剌会给单片机系统造成非常强烈的干扰,严重时会导致断电保护中断程序无法正确执行,或使保护在RAM中的数据出错。为了解决这些个问题,对需要进行实时断电保护的单片机系统,在电源设计时,要比一般的单片机系统更注重抗干扰设计,必要时可以加强电源滤波、采用开关电源等方法,千方百计地提高系统的抗干扰性能,使断电保护更可靠。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top