<br />大家搞开发搞久了,经常可能会碰到别人问,或者在一些论坛里看到一些贴子,“我的EEPROM上电时被改写了,是不是EEPROM芯片品质有问题,是不是我的电源电路不稳定所导致,但是我检查过电源电路,上面没有波动,是不是EEPROM的问题了?"<br /><br />其实不是,很多资料,很多经验告诉我们,EEPROM的改写是由于程序跑飞所导致,<br />“程序跑飞,不可能吧,我的电源电路没问题,根本没有什么波动。”<br />是在什么时候程序跑飞了?<br />众所周知,芯片中的RAM,需要一定的电压才能存储,如果这个电压过低,RAM中某个地方存储的值就会改变,如0xff,变成0xfe,或者其他. 这样PC,DPTR也可能改变.<br />有的人为了使电源稳定,往往在7805,或spx1117的输出端加很大的电容,这么一加后,当系统一断电,结果电源就缓慢的下降,对于5V的系统,可能Vcc pin上的电压掉到3.x V左右,PC,DPTR,及RAM中的其他参数 可能 就会乱, 这一乱就跑飞,就有可能跑到改写 EEPROM的地方。所以EEPROM就被改写了。 有解决办法么?<br />有!<br />硬件上:<br />有很多工程师就改进复位电路,一旦电压下降就马上启动复位。<br />或者把EEPROM芯片的WP引脚给用上.<br />当然还有种简单的方法,选用我们公司推广的复位芯片,cat809,cat810啊.电压下降到某个值,马上复位。<br />http://www.zlgmcu.com/catalyst/reset.asp<br /><br />软件上:<br />如果硬件不改,那只有软件上做改动了,<br />比如将数据存放不同的地址.(备份存储)<br />写EEPROM前,进行边界检测.<br /><br /><br /><br /><br /><br />//-------------------------------------------------<br />后面这几点是很久以前在网上看到某工写的,不错,特此转载.<br /><br />要防止EEPROM数据被破坏,主要在以下几方面做工作:<br />1、选用比MCU的电源范围宽并有WP引脚的EEPROM芯片;<br />2、做好电源滤波,而且要等电源开机稳定后才去读写EEPROM;<br />3、做好复位电路;<br />4、做好软件跑飞的处理;<br />6、WP接MCU的RESET;如WP做软件保护,将写不进数据;接I/O,上电时WP的状态可能不稳定。<br />7、EEPROM空间富余时考虑双备份或多备份数据,每份数据都有校验和。
|