搜索
bottom↓
回复: 96

讨论:eeprom的可靠性研究

[复制链接]

出0入0汤圆

发表于 2006-9-28 14:48:46 | 显示全部楼层 |阅读模式
做工业产品最关键的是可靠。可是总是听到有人说eeprom里的数据会丢失,用上eeprom,很多人就认为不可靠。

  个人观点:

  在上电掉电过程中,eeprom内的数据有可能会丢失

  可以通过设置熔丝位BOD,起动延时65ms,就样子就好了。

  请大家说说,还有什么情况下eeprom内的数据可能会丢失,如何解决?

  此外,比如说eeprom地址0x01,里的数据1,丢了。

   0x01地址里的数据是变为0,还是0xff?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2006-9-28 20:23:33 | 显示全部楼层
自己顶一下

出0入0汤圆

发表于 2006-9-28 21:24:56 | 显示全部楼层
好像变成0XFF。

偶的应用一般要用到EEPROM存储的数据比较少,一般采取反码冗余备份校验的方式,需要存储的数据按照原码和反码存两份,需要读取时分别读取原码和反码,进行校验,若校验不通过,则根据一定的算法恢复数据或者采取缺省值.

出0入0汤圆

 楼主| 发表于 2006-9-29 14:29:35 | 显示全部楼层
这个方法好,谢谢feiyue

出0入0汤圆

发表于 2006-9-29 16:37:46 | 显示全部楼层
如果你的系统有很大的感性负载,在断电的时候会产生一个反向电压,这样EE就有可能会自擦除。



另外,如果你在上电的时候,VCC的斜率如果在某一个范围内,也可能自擦除。



很多做工控的朋友都遇到过上面的问题。



我的建议是用铁电,可以避免上面的问题,我们公司是铁电在国内的代理商,如果大家有兴趣,华东地区的朋友可以找我申请样片,其他地区的朋友可以就近联系北天星在各地的分公司



铁电资料见一下链接



点击此处下载armok01130464.rar



点击此处下载armok01130465.rar

出0入0汤圆

发表于 2006-9-29 16:54:27 | 显示全部楼层
我遇到过的问题,m8里面有写eeprom的程序段,数据已经写入到eeprom了。

不停的开关电,eeprom里的值有可能随机改变,不见得是0x00,0xFF

原因是不是上电时,程序指针跑飞到写eeprom那段,导致往eeprom随机地址写了随机数。

后来,采用isp下载2次程序,最后版本的程序是删除了写eeprom程序段,保留读eeprom段。

这样的话,开关电很多次,里面的eeprom没见有改动。

如果系统实际运行时,需要对eeprom写操作,可考虑存多几次数据,用校验方法来处理数据改变。

出0入0汤圆

发表于 2006-9-29 17:09:36 | 显示全部楼层
多次读写EEPROM中的数据也会导致数据丢失,

用M16作的产品,

EEPROM中放标准值用来比较,

将数据写入后,

如果连续读2-3次,

EEPROM中数据就会丢失,

不知道是何原因?

出0入0汤圆

发表于 2006-9-29 18:46:05 | 显示全部楼层
EEPROM掉电丢数据这个特点可不是AVR独有的。很多年前在89C51+24C02的系统里面就遇到过,我不知道铁电有什么比24C02更牛的地方,居然能保证不丢数据。原因很简单,就是掉电过程中,电压降低到MCU无法正常工作的程度,程序跑飞了,单片机引脚状态完全不可控,某次掉电就可能发出错误的写24C02的指令。上电的时候因为RESET处于有效状态,MCU引脚状态完全确定(对于51来说就是全1),是不可能误操作24C02的。解决方案很简单,加一片MAX813L,当电压低于4.6V就锁定89C51,问题彻底解决。这么多年也没见24C02被误改写。



最早的一批AVR内置了EEPROM却没有BOD,所以EEPROM被误改写是家常便饭,ATMEL很快发现了这个问题,新推出的AVR全都含有BOD乐。AVR的情况比较复杂,振荡方式和复位方式都有多种,所以不仅掉电会改写EEPROM(原因同上),上电也会!RESET过程结束前,必须有若干XTAL,MCU内部寄存器(包括软件不可见的)才会清零,如果RESET结束了才来时钟,上电就是程序乱飞,同样有可能改写EEPROM。用RC振荡方式问题不大,有电就能振起来,用石英晶体就会出问题,我测过89C51的,上电后20ms才振起来,如果电源上有大的滤波电容,VCC的上升斜率变小,晶体起振时间会变得更长!有存储示波器的朋友可以自己测一下,对晶振的起振有个感性认识。

出0入0汤圆

发表于 2006-9-29 18:53:58 | 显示全部楼层
你说的意思是AVR的EEPROM更加的不可靠吗?现在还没有用到什么重要的场合,呵呵,不怕!!

出0入0汤圆

发表于 2006-9-29 20:47:22 | 显示全部楼层
我没说过AVR不可靠,只是说需要注意的问题比较多。

出0入0汤圆

发表于 2006-9-29 22:01:05 | 显示全部楼层
谢谢你的详细解释和回答

能不能具体的说下你说的解决方法吗?怎么样做才能是AVR的EEPROM更加的可靠.

聆听DX的教导......

出0入0汤圆

发表于 2006-9-29 23:41:48 | 显示全部楼层
【4楼】 sunhorse 张家红

看了你发的资料,觉得不错,能否弄点样片试试~!

出0入0汤圆

发表于 2006-9-30 00:20:24 | 显示全部楼层
fetish讲的很详细,很受启发

出0入0汤圆

发表于 2006-9-30 08:24:08 | 显示全部楼层
我也遇到过连续开关电程序跑飞,但加使能BOD之后,基本没有了这种情况,avr早期产品这种情况比较多,Mega系列好多了

出0入0汤圆

发表于 2006-9-30 10:50:23 | 显示全部楼层
TO:kimiyang 四叶草



你发邮件给我吧,我需要下面信息

1:公司信息、个人信息(地址 名称,姓名,电话)

2:项目信息

出0入0汤圆

发表于 2007-8-16 15:28:22 | 显示全部楼层
好帖,今天在Attiny13上试过也是上电掉电丢数据,数据变为一个随机数,烧熔丝时BOD设为1.8伏就不会了,到现在没有再丢失过数据了。

出0入4汤圆

发表于 2007-8-16 17:08:52 | 显示全部楼层
wind_cloud



我遇到过的问题,m8里面有写eeprom的程序段,数据已经写入到eeprom了。

不停的开关电,eeprom里的值有可能随机改变,不见得是0x00,0xFF  







我也是一样BOD使能  就OK了 不过我还是不放心,我用两份数据,最后加校验,启动的时候读eeprom数据  如果有异常 检测出错误数据组,然后用正确的恢复。如果两组数据均遭毒手,用flash里面的默认数据覆盖。
头像被屏蔽

出0入0汤圆

发表于 2007-8-16 21:32:49 | 显示全部楼层
这个帖子讨论得不错,COOL!

出0入0汤圆

发表于 2007-8-16 23:09:06 | 显示全部楼层
一般我在eeprom里间三分拷贝,位置隔的比较远

出0入0汤圆

发表于 2007-8-17 17:04:15 | 显示全部楼层
又学习到新知识了

出0入0汤圆

发表于 2007-8-25 22:45:38 | 显示全部楼层
我用eeprom可从没遇到什么问题,书上说不能用0x01空间,我试了,也没事。

出0入0汤圆

发表于 2007-12-21 19:31:25 | 显示全部楼层
不错,长见识了,看来还是要做校验

出0入0汤圆

发表于 2007-12-21 23:08:51 | 显示全部楼层
有次居然连熔丝也乱了,但这么些年就一次,随即ISP改回去了,也没深查原因.

出0入0汤圆

发表于 2007-12-22 00:11:02 | 显示全部楼层
值得收藏的好贴!
支持一下!

出0入0汤圆

发表于 2007-12-22 15:02:53 | 显示全部楼层
fetish讲的很详细,很受启发

我目前用的M16也有同样的问题,有的芯片很好,有的有问题

目前解决方法:全部资料写入FLASH中

请问各位大侠有没有更好的方法解决,多谢!

出0入0汤圆

发表于 2007-12-22 15:05:59 | 显示全部楼层
请问各位大侠:

如果系统有很大的感性负载,在断电/开电/运行的时候会产生一个反向电压,这样EE就有可能会自擦除。 是不是真的有可能会自擦除???

出0入0汤圆

发表于 2008-6-11 16:12:56 | 显示全部楼层
很受启发,感谢大家.不断学习

出0入0汤圆

发表于 2008-6-11 17:26:32 | 显示全部楼层
我用M16的EEPROM没遇到过问题,以前用89S51+24C01试过,解决方法是在写EEPROM的程序里多加几个陷阱.STC的文档里有描述

出0入0汤圆

发表于 2008-6-11 19:12:58 | 显示全部楼层
多谢fetish

出0入0汤圆

发表于 2008-6-11 22:04:16 | 显示全部楼层
上电掉电程序跑飞误写的概率其实不高,最大的可能是程序正在写eeprom时突然掉电

出0入0汤圆

发表于 2008-6-11 22:35:53 | 显示全部楼层
很常见的问题,掉电丢比上电丢更麻烦

出0入0汤圆

发表于 2008-6-11 23:23:27 | 显示全部楼层
老帖,还是不敢用内部EEPROM

出0入0汤圆

发表于 2008-8-24 14:08:38 | 显示全部楼层
“加一片MAX813L,当电压低于4.6V就锁定89C51”。
      
      请问mega16如何锁定呢?

出0入4汤圆

发表于 2008-8-24 14:51:52 | 显示全部楼层
用avr的内部eeprom是没有什么问题的。当然,如果有问题,那也是eeprom的通病。
还是要排除软件逻辑上的问题。

出0入0汤圆

发表于 2009-4-20 20:14:06 | 显示全部楼层
这个帖子好像恢复得不全啊,我记得我当时得测试是发这里的。

出0入0汤圆

发表于 2010-11-20 20:22:32 | 显示全部楼层
回复【5楼】wind_cloud
我遇到过的问题,m8里面有写eeprom的程序段,数据已经写入到eeprom了。
不停的开关电,eeprom里的值有可能随机改变,不见得是0x00,0xff
原因是不是上电时,程序指针跑飞到写eeprom那段,导致往eeprom随机地址写了随机数。
后来,采用isp下载2次程序,最后版本的程序是删除了写eeprom程序段,保留读eeprom段。
这样的话,开关电很多次,里面的eeprom没见有改动。
如果系统实际运行时,需要对eeprom写操作,可考虑存多几次数据,用校验方法来处理数据改变。
-----------------------------------------------------------------------

我也遇到和你一样的问题
用M16L 3V供电 开了2.7VBOD 每次都变数据 变成 3 5 次掉电就变数据 而且变的数据都写数据的其中两个
下周找原因看

出0入0汤圆

发表于 2010-11-24 18:25:02 | 显示全部楼层
写过程需关中断 数据改变少了
但还是会变 不一定是那个数据   无解中  只有多备份两个数据了

出0入0汤圆

发表于 2010-11-24 19:16:44 | 显示全部楼层
标记学习

出0入0汤圆

发表于 2010-11-24 20:11:01 | 显示全部楼层
学习了受教了。谢谢大家!

出0入0汤圆

发表于 2010-11-24 20:41:56 | 显示全部楼层
买了30多片M8,
发现其中有2片出现类似问题,存在很严重的eeprom的数据很容易丢失,而且是空间中所有数据全被改写

丢失过程是
只是拔插电源十次,就会丢一次,太频繁了,其它的片子却不会,就那两片会
设什么掉电熔丝位BOD,还有64ms延时熔丝配置等都没作用,再丢不误


最后试出来,只要在程序的开头加上250ms的延时就不会再丢了
把延时改小点150ms,依然还是会丢,但次数就少很多了,最后直接上300ms延时,
不管怎么快速拔插100多次都没再丢过。。。

只有这两片需要这样,其它片都正常,
往后所有程序一上电都给它200ms的延时算了。。

出0入0汤圆

发表于 2010-11-24 21:46:16 | 显示全部楼层
5年后的mark

出0入0汤圆

发表于 2010-11-25 09:24:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-23 09:02:38 | 显示全部楼层
好帖。受教了

出0入0汤圆

发表于 2010-12-23 23:04:13 | 显示全部楼层
好贴。。。

出0入0汤圆

发表于 2010-12-24 14:12:35 | 显示全部楼层
MAX813的输出脚接MCU的RST脚,电压低于监测点的时候,RST会置有效,从而锁死MCU,也就在不稳定的电压范围不做任何操作了。
不管内部是否带有BROWNOUT DETECTOR,外部都不能省这个东西,为了产品的可靠性。

另外静电、电源EFT都是造成数据丢失的原因,不可不察。上电瞬间EFT是存在的,对电源做EMI滤波也是必要的。

出0入0汤圆

发表于 2010-12-24 15:22:14 | 显示全部楼层
我看手册,M8的eeprom和flash擦写寿命为100000和10000,貌似比pic少了一个数量级

出0入0汤圆

发表于 2010-12-24 15:50:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-24 16:05:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-24 20:52:02 | 显示全部楼层
关注!!!

出0入0汤圆

发表于 2010-12-24 22:24:11 | 显示全部楼层
【45楼】 zwdxsky

AVR给的是最小值,PIC给的是典型值。

PIC的小最值跟典型值差10倍很正常。

出0入0汤圆

发表于 2010-12-29 22:06:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-30 09:56:38 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-2-19 13:02:32 | 显示全部楼层
fetish讲的很详细,很受启发

出0入0汤圆

发表于 2011-2-19 17:06:12 | 显示全部楼层
COOL!

出50入0汤圆

发表于 2011-2-19 17:25:53 | 显示全部楼层
e2rom本身质量问题的很少,问题多出于时序问题,以及误写,或者是操作不完整等

出675入8汤圆

发表于 2011-4-8 14:33:17 | 显示全部楼层
COOL

出0入0汤圆

发表于 2011-4-18 22:52:13 | 显示全部楼层
我个人的处理是:
一、外挂了3.7V充电电池,检测外部断电,电池是供电的,写eep数据。最后自动断电。上电延时,电池检测。
二、外挂了自动复位电路。
三、数据FLASH备份一次
只要第一次在200ms后系统正常运行了,随便断电,上电,eep数据没有错过一次。

出0入0汤圆

发表于 2011-4-18 23:00:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-19 07:48:11 | 显示全部楼层
终极及解决办法:

要想产品eeprom不丢失数据使用三份eeprom数据,每份中带有crc校验,复位后,首先校验第一份数据,第一份数据正确就使用第一份数据,第一份数据不正确,读取第二份数据进行重新校验,第二份数据正确,就是用第二份数据,并将第一份数据覆盖,如果第二份数据错误,同样校验第三份数据,第三份数据正确,就使用第三份数据,并将第一份第二份数据覆盖,如果第三份数据也错误,那只好用默认参数覆盖。

没碰到过eeprom丢失的飘过

出0入0汤圆

发表于 2011-4-19 08:06:14 | 显示全部楼层
mark 这个需要注意下

出0入0汤圆

发表于 2011-4-19 08:09:09 | 显示全部楼层
回复【58楼】zhangjinxing
终极及解决办法:
要想产品eeprom不丢失数据使用三份eeprom数据,每份中带有crc校验,复位后,首先校验第一份数据,第一份数据正确就使用第一份数据,第一份数据不正确,读取第二份数据进行重新校验,第二份数据正确,就是用第二份数据,并将第一份数据覆盖,如果第二份数据错误,同样校验第三份数据,第三份数据正确,就使用第三份数据,并将第一份第二份数据覆盖,如果第三份数据也错误,那只好用默认参数覆盖。
没碰到过eeprom丢失的飘过
-----------------------------------------------------------------------

整个E2PROM都有被冲掉的可能。外部干扰,读写是操作不当,电源问题,都有可能的。

出0入0汤圆

发表于 2011-4-19 08:54:34 | 显示全部楼层
综合了一下,大致解决方法如下:
1.开内部BOD或外部复位芯片如MAX813之类
2.上电后延时启动(如200ms)
3.多数据存储备份
我前2个都用了,目前没碰到过丢数据

出0入0汤圆

发表于 2011-4-19 09:54:35 | 显示全部楼层
稳定电源,增强抗干扰能力,开机等MCU稳定后再对E2进行读写,E2数据备份,做校验,

出0入0汤圆

发表于 2011-9-20 11:44:23 | 显示全部楼层
各种的MARK!

出0入0汤圆

发表于 2011-9-22 09:58:09 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-22 10:06:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-22 10:36:15 | 显示全部楼层
EEPROM可靠性,MARK!

出0入0汤圆

发表于 2011-9-23 14:30:43 | 显示全部楼层
没注意过这种情况,MARK下

出0入0汤圆

发表于 2012-1-10 17:18:58 | 显示全部楼层
mark .


正在试Atmega168PA的。。  写进EEPROM了。。读出来都对了,结果掉电上电又没了。。还在调试。

出0入0汤圆

发表于 2012-1-15 22:29:03 | 显示全部楼层
最近用了ATmega162,个人觉得设置熔丝位BOD,起动延时65ms。其他暂未发现别的。

出0入0汤圆

发表于 2012-7-7 06:45:02 | 显示全部楼层
mark            

出0入0汤圆

发表于 2012-7-7 21:48:28 | 显示全部楼层
有些单片机对对于EEPORM的操作需要密匙,操作完后输入错误的密匙又会锁定EEPORM。
我想这样的话应该有一定概率可以防止EEPORM被误擦除,另外在写入密匙之前,先判断外部的一个令牌变量
令牌变量正确的话(正常进入写EEPROM函数的时候会设置正确的令牌)才会允许写入密匙,然后对EEPORM进行操作
这样的话EEPORM被误操作的概率直线下降了,不过令牌抗干扰的技术我都没用过呢,只能YY了

出0入0汤圆

发表于 2012-7-7 22:21:28 | 显示全部楼层
make,nnnnnnnnnn

出0入0汤圆

发表于 2012-7-7 22:43:57 | 显示全部楼层
原来eep还有这么多问题啊

出0入0汤圆

发表于 2012-7-8 20:51:10 | 显示全部楼层
eeprom可靠性研究,mark

出0入0汤圆

发表于 2012-8-13 10:32:01 | 显示全部楼层
好贴好贴

出0入0汤圆

发表于 2012-8-14 11:25:11 | 显示全部楼层
好老的帖子,mark备用

出10入0汤圆

发表于 2012-10-9 11:52:44 | 显示全部楼层
fetish 发表于 2006-9-29 18:46
EEPROM掉电丢数据这个特点可不是AVR独有的。很多年前在89C51+24C02的系统里面就遇到过,我不知道铁电有什么 ...

赞一个.................................................................

出0入0汤圆

发表于 2012-11-1 15:01:19 | 显示全部楼层
我现在做这个好像就是,eeprom中的数据会乱额!

出0入0汤圆

发表于 2012-11-1 15:55:41 | 显示全部楼层

好老的帖子,mark备用

出0入0汤圆

发表于 2012-11-1 21:21:28 | 显示全部楼层

    这两天调试程序也遇到EEPROM里数据自己乱改的情况,在没有写数据的区隔几十个字节会出现一个随机数。还猜测是不是买到了旧芯片,又被我用了几年写得更“老”了,到寿命了呢。

出0入85汤圆

发表于 2012-11-1 22:14:05 | 显示全部楼层
看了这么多人说的几乎上都是因为上电或掉电时操作E2P的问题,但我遇到的是正在运行过程中的数据的被篡改,哪位能列测试方法,保证AVR被篡改率比较高的方法,我好拿来测试,免得去测试时数据又不变了

出0入0汤圆

发表于 2012-11-2 15:35:09 | 显示全部楼层
fetish 发表于 2006-9-29 18:46
EEPROM掉电丢数据这个特点可不是AVR独有的。很多年前在89C51+24C02的系统里面就遇到过,我不知道铁电有什么 ...

你好,我用EEPROM存数据,数据也会经常改变,为什么有的不会改变呢?

出0入0汤圆

发表于 2012-11-2 15:37:04 | 显示全部楼层
aydali 发表于 2012-11-1 21:21

    这两天调试程序也遇到EEPROM里数据自己乱改的情况,在没有写数据的区隔几十个字节会出现一个随机数 ...

我也是,eeprom的数据也会改变,有的时候会,有的时候又不会,这很蛋疼哇,我在读eeprom中的数据,要是被中断了会不会有影响哇?

出0入0汤圆

发表于 2012-11-2 15:48:32 | 显示全部楼层
我是用TOP2004编程器读写EE的,用单片机运行起来的程序在EE里做好标记,感觉确实比较混乱,明明没有往那个地址里写过东西,里面确有不固定的内容。一直怀疑是编程器有问题,现在终于知道了真相,谢谢各位。

出0入0汤圆

发表于 2012-11-2 15:50:17 | 显示全部楼层
118139 发表于 2010-11-24 20:41
买了30多片M8,
发现其中有2片出现类似问题,存在很严重的eeprom的数据很容易丢失,而且是空间中所有数据全 ...

你的意思是,程序一开始初始化的时候先让他不干活儿,空转等待300ms再开始工作。

出0入0汤圆

发表于 2012-11-2 15:52:19 | 显示全部楼层
zhangjinxing 发表于 2011-4-19 07:48
终极及解决办法:

要想产品eeprom不丢失数据使用三份eeprom数据,每份中带有crc校验,复位后,首先校验第 ...

三重保险,哈哈,EE不要钱啊

出0入0汤圆

发表于 2013-3-25 13:45:51 | 显示全部楼层
没用的。

出10入0汤圆

发表于 2013-3-25 14:55:37 | 显示全部楼层
再次mark                  

出0入0汤圆

发表于 2013-4-1 21:58:13 来自手机 | 显示全部楼层
学习了!标记一下!

出0入0汤圆

发表于 2013-7-17 10:28:44 | 显示全部楼层
古董挖出来看看

出0入0汤圆

发表于 2013-7-19 10:08:46 | 显示全部楼层

出0入17汤圆

发表于 2013-7-19 13:05:49 来自手机 | 显示全部楼层
风雨过后,用avr的人还很多。大浪淘沙,剩下的是金子还是贝壳呢

出0入0汤圆

发表于 2013-7-31 13:59:33 | 显示全部楼层
学习使用中

出0入4汤圆

发表于 2019-6-21 23:54:13 | 显示全部楼层
10多年后,翻到此贴,受益良多。最近正被EEPROM折磨。现象是开机2%机率死机。看大家讨论。打算试试如下方案:
1. 试试开头加延时。
2. BOD已经开启,可以测试下是否有复位现象。

出0入0汤圆

发表于 2020-5-23 15:08:01 | 显示全部楼层
顶一下,学习学习!

出0入0汤圆

发表于 2020-5-23 19:11:33 | 显示全部楼层
数据为什么不直接保存在flash里面??
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 08:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表