amobbs.com 阿莫电子技术论坛

标题: eeprom的写入操作会影响当前页的其它地址的寿命? [打印本页]

作者: gnail092    时间: 2023-12-29 13:19
标题: eeprom的写入操作会影响当前页的其它地址的寿命?
本帖最后由 gnail092 于 2023-12-29 13:20 编辑

现场退回几只出问题的设备,某页频繁写入的参数校验都不对,运行了一年半时间,每5分钟会写一次,按写入次数计算,大概十几万次,远没达到EEPROM 100万次的寿命,EEPROM用的是atmel的spi接口的AT25128B。
https://www.amobbs.com/forum.php ... =%E5%AF%BF%E5%91%BD 后来查到这个帖子, 意思是EEPROM每次写几个字节也是对整个当前页进行写了一遍,
我程序里是每次对那一页操作都会分别写不同的地址,总共写了6次,那就相当于每次写其实是对整页写了6次,是不是这样算的?    如果这样算差不多是90万次,也没达到100万次,会不会存在不能保证每一片都能到100万次?
作者: 1a2b3c    时间: 2023-12-29 13:27
自己在这个上面进行测试验证,弄个测试程序直接写入读出看看是不是对的,没问题的话,那肯定就是你之前程序bug多多
的确数据有问题的话,那肯定就是芯片自身问题了,要么是质量不对,要么是就只有这效果,想再多写就换方案
作者: gnail092    时间: 2023-12-29 13:42
1a2b3c 发表于 2023-12-29 13:27
自己在这个上面进行测试验证,弄个测试程序直接写入读出看看是不是对的,没问题的话,那肯定就是你之前程序 ...
(引用自2楼)

确定是EEPROM被写坏了的,测试过这页了,循环写入读出,一会就出现比对不对的现象,而且掉电放一会,再上电读取出来的值基本所有的位都是0,高电平保持不住了。
现在要先确定的按照我贴的这个帖子的链接说法这个前提下,写入次数差不多有90万次,ATEML的EEPEOM应该不至于有这种质量问题吧,但会不会存在手册上写着100万次,其实会存在不能超过100万次的可能
作者: 26消费者    时间: 2023-12-29 13:49
楼主,你的程序里有实现对eeprom擦写均衡的功能吗?
作者: gnail092    时间: 2023-12-29 13:51
26消费者 发表于 2023-12-29 13:49
楼主,你的程序里有实现对eeprom擦写均衡的功能吗?
(引用自4楼)

没有的,就对固定地址进行一直写
作者: redroof    时间: 2023-12-29 14:21
所有的写寿命都是典型值,没法保证的。而且也不可测,因为测完就坏了。
标称100万次并不代表你不会遇到一个只写了90万次就坏了的。比如你测10个,有90万次坏了的,也有200万次才坏的,反正平均寿命达到标称值就算合格。
如果你要保证每个板子100%不坏,请把标称寿命除以10倍才保险。
大部分flash的典型寿命和最小寿命就是差10倍。而大部分情况的实测值比标称典型值还好两三倍。
作者: 26消费者    时间: 2023-12-29 14:25
gnail092 发表于 2023-12-29 13:51
没有的,就对固定地址进行一直写
(引用自5楼)

那就只能先按照上面老哥说的,分2步走:
1、先测试是否是这款EPPROM,按照你的写法,是否就只能写这么多次;
2、更换方案:增加EEPROM擦写均衡的功能,不能老是写同一个页了;
作者: 1a2b3c    时间: 2023-12-29 14:26
如果你确保的确写了90万次就死了,那么在一定程度上来说已经满足厂家指标了,说实话90万和100万已经可以理解为一样了,较真那么10万没啥意义,现在关键是需要找到原因,
比如不如自我反省下,降低自己身价排除是否自己程序有瑕疵,万一呢:)
方法是把你不对的芯片拿到通用编程器上面再去擦写一边看看是否完蛋。这里主要目的是本着先怀疑自己的态度,遇到一些芯片在这种情况下是否会出现时序原因导致数据不准确
如果这样验证都完全一样,那么当然又回到芯片本身了:如果的确是90万次,那么完全OK的,厂家指标没有怀疑的意义了

作者: redroof    时间: 2023-12-29 14:30
26消费者 发表于 2023-12-29 14:25
那就只能先按照上面老哥说的,分2步走:
1、先测试是否是这款EPPROM,按照你的写法,是否就只能写这么多 ...

(引用自7楼)

不用测芯片寿命了,标100万已经有一个测到90万才坏就是合格的。就算你测过10个都是100万次以上,也不能保证第11个是90或80万。甚至运气不好偶尔碰到个别片子只有50万也不希奇。
如果你程序不允许有任何一个坏的,请把标称寿命除10倍来用。
作者: leafstamen    时间: 2023-12-29 14:32
eeprom有页的概念吗?
作者: gnail092    时间: 2023-12-29 14:46
redroof 发表于 2023-12-29 14:30
不用测芯片寿命了,标100万已经有一个测到90万才坏就是合格的。就算你测过10个都是100万次以上,也不能保 ...
(引用自9楼)

我也专门测试过寿命的,奇怪的是同样是退回来的这几个样机,我换成其它几个页测试了下,直到100多万次有出现两三个读出和写入的不一样,其它的几个还没出现,我这里的100万次,按照那个帖子说的每次写这页其实是写了6次的计算,其实相当于是600万次了,那也差太多了吧
作者: gnail092    时间: 2023-12-29 14:48
1a2b3c 发表于 2023-12-29 14:26
如果你确保的确写了90万次就死了,那么在一定程度上来说已经满足厂家指标了,说实话90万和100万已经可以理 ...
(引用自8楼)


确定是坏了的,同样的代码换成其它页都不会出现,就这页马上就会出现,不可能程序时序问题吧
作者: redroof    时间: 2023-12-29 14:49
gnail092 发表于 2023-12-29 14:46
我也专门测试过寿命的,奇怪的是同样是退回来的这几个样机,我换成其它几个页测试了下,直到100多万次有 ...
(引用自11楼)

要学会看datasheet啊
哪些参数是测过的,厂家保证绝对不会超过(如果你真的见到一个超限的,就是厂家做的不合格,厂家有责任给你赔偿)。
哪些参数是典型值,厂家把它列出来仅供你参考,只能说大部分情况下你拿到的芯片的值在这个左右,但是没有约束力。你不能以你拿到的实物的参数低于典型值而提出意见。

不同的厂家对典型值的理解是不同的,最悲观的理解是典型值等于狗屁(实物完全可以每个都比典型值更坏,你也没话可说)。最乐观的理解是典型值几乎总可以达到,除非很偶然的情况下不满足。

很好的厂家或许会给你列出某一批次产品的实测的直方图,告诉你有百分之多少的产品的参数在多少范围内,超范围的比例有百分之多少。
但是即使列出了这些参数,仍然是没有约束力的。如果你买到的下一批比这个更差,原则上来说你也没办法索赔。

因为寿命这东西的分散性极大,有良心的厂家标称1百万寿命,实际运气好的给你600万寿命也不稀奇。
寿命差的60万也不稀奇

作者: 射天狼    时间: 2023-12-29 15:10
26消费者 发表于 2023-12-29 14:25
那就只能先按照上面老哥说的,分2步走:
1、先测试是否是这款EPPROM,按照你的写法,是否就只能写这么多 ...
(引用自7楼)

不想修改软件、成本不敏感前提下
可以更换 FRAM替代 比如FM24CL系列 MB85R系列
作者: gnail092    时间: 2023-12-29 15:16
redroof 发表于 2023-12-29 14:49
要学会看datasheet啊
哪些参数是测过的,厂家保证绝对不会超过(如果你真的见到一个超限的,就 ...
(引用自13楼)

不是有些人为了增加EEPROM寿命,通过对某些频繁写的数据在同一页更换地址去写,按照那个帖子的说法其实同一页改变地址去存储对这一页的寿命影响还是一样的,要更换不同页才行?
作者: Doding    时间: 2023-12-29 15:36
gnail092 发表于 2023-12-29 15:16
不是有些人为了增加EEPROM寿命,通过对某些频繁写的数据在同一页更换地址去写,按照那个帖子的说法其实同 ...
(引用自15楼)

数据要做校验,坏了程序能判断出来,是用备份还是直接提示故障都可以。EEPROM虽然写入次数比Flash高,也不能不计划随意写,经常变的数据,在掉电时写入就行。
作者: redroof    时间: 2023-12-29 15:36
gnail092 发表于 2023-12-29 15:16
不是有些人为了增加EEPROM寿命,通过对某些频繁写的数据在同一页更换地址去写,按照那个帖子的说法其实同 ...
(引用自15楼)

对啊,换不同的页写。
你计算寿命的时候必须把厂家的标称值除一个系数,我通常是除10倍。按这样来算你需要用多少个块来循环写。
作者: hz_fujian    时间: 2023-12-29 15:36
EEPROM 只有某位写“0”后,才算耗费了寿命。如果该位始终为“1”,是不耗寿命的。
作者: ibmx311    时间: 2023-12-29 15:43
我由于每天就写一两次,没错过。但老是听大伙说寿命后来怕了。现在用备份寄存器,板子整天都背着一个电池。
作者: modbus    时间: 2023-12-29 15:50
redroof 发表于 2023-12-29 14:21
所有的写寿命都是典型值,没法保证的。而且也不可测,因为测完就坏了。
标称100万次并不代表你不会遇到一个 ...
(引用自6楼)

现在国产的EEPROM不清楚,以前进口的EEPROM标称的写寿命都是最少保证值,实测都是最少几百万次才写坏
作者: gnail092    时间: 2023-12-29 15:52
本帖最后由 gnail092 于 2023-12-29 16:00 编辑
redroof 发表于 2023-12-29 15:36
对啊,换不同的页写。
你计算寿命的时候必须把厂家的标称值除一个系数,我通常是除10倍。按这样来算你需 ...
(引用自17楼)


我主要是疑惑退回来的产品进行寿命测试,同一片EEPROM只是换了一页测试,而且是跟出问题的那页靠的比较近的,怎么会寿命相差这么大,难道每一页还不一样,说不定哪一页就很差?
如果按1/10考虑,这标的确实太虚了。  那我把这页的数据如果一次性页写完成了,不要经过多次页写时序也可以增大实际寿命了。
作者: tomzbj    时间: 2023-12-29 17:16
用flash代eeprom的方法呗... 写进去的是"伪地址+数据", 写的时候二分查找第一个全ff的位置, 从前往后依次写, 读的时候二分查找到最后一次写入的记录, 再从后往前找第一次出现的伪地址读取即可.

写满一页了再全部读出来, 擦除, 重新写入, 要求掉电安全的话用flash的另一页作为中转, 不要求的话在ram里中转就行了.

这样假如每次写入2字节, 加上伪地址4字节, 用stm32内部flash, 每页1k字节, 累计写入256次才会执行一次擦除. 用spiflash, 一页4k, 写1024次才会擦除一次.

ST官方应该有个appnote里有介绍, 有范例代码.

我现在手里几个产品都是用mcu的一个页来模拟eeprom, 只用来存几个参数, 写入不多, 还没有出过问题.

要求高的话, 记得论坛里以前有人推过, 专门为flash设置的数据库, 好象叫easyflash还是flashdb什么的, 应该能解决lz的需求.
作者: redroof    时间: 2023-12-29 17:19
本帖最后由 redroof 于 2023-12-29 17:20 编辑
modbus 发表于 2023-12-29 15:50
现在国产的EEPROM不清楚,以前进口的EEPROM标称的写寿命都是最少保证值,实测都是最少几百万次才写坏 ...
(引用自20楼)


你不可能实测每一个啊,因为测完就坏了。
所以,不管别人怎么说,都给自己留点余量比较好。
如果你确定厂家标的值很保守,绝大多数都能达到,那么你可以少留点余量,比如只留一倍,标100万次你按50万用。
如果厂家明确的写的寿命是典型值,不是最小值,那你必须按10倍留。因为典型和最坏真的可以差到10倍,很多flash同时标了这俩个参数,你可以看。
作者: Doding    时间: 2023-12-29 17:54
gnail092 发表于 2023-12-29 15:52
我主要是疑惑退回来的产品进行寿命测试,同一片EEPROM只是换了一页测试,而且是跟出问题的那页靠的比较近 ...
(引用自21楼)

两天写100w次和1年写100w次,写完是否断电,区别很大的。
作者: wye11083    时间: 2023-12-29 18:03
hz_fujian 发表于 2023-12-29 15:36
EEPROM 只有某位写“0”后,才算耗费了寿命。如果该位始终为“1”,是不耗寿命的。 ...
(引用自18楼)

准确的讲,是flash擦除才耗费寿命。

lz位的flash,可以换几片测试同一位置频繁写入会不会出问题,其它页数据有没有坏。不排除国产器件质量问题,比如我前一段就收到客户退料,flash读出来全是ff,夹杂着几个bit是0。。。
作者: modbus    时间: 2023-12-29 18:48
redroof 发表于 2023-12-29 17:19
你不可能实测每一个啊,因为测完就坏了。
所以,不管别人怎么说,都给自己留点余量比较好。
如果你确定厂 ...
(引用自23楼)

芯片的很多参数都不实测,由设计所保证,有些国外芯片厂家还专门注明该参数不测试、由设计所保证,国外厂家敢标最小值的肯定是没问题的,只敢标典型值的就要考虑考虑了
作者: gnail092    时间: 2023-12-29 18:54
本帖最后由 gnail092 于 2023-12-29 19:01 编辑
redroof 发表于 2023-12-29 17:19
你不可能实测每一个啊,因为测完就坏了。
所以,不管别人怎么说,都给自己留点余量比较好。
如果你确定厂 ...
(引用自23楼)


哥,这手册上标的就是最小值,ATMEL的EEPROM应该有保障吧
作者: gnail092    时间: 2023-12-29 18:57
Doding 发表于 2023-12-29 17:54
两天写100w次和1年写100w次,写完是否断电,区别很大的。
(引用自24楼)

寿命测试只能是很快速的读写了,现场可能存在断电,测试是不断电测的
作者: redroof    时间: 2023-12-29 19:15
gnail092 发表于 2023-12-29 18:54
哥,这手册上标的就是最小值,ATMEL的EEPROM应该有保障吧
(引用自27楼)

别忘了后面的那个说明,这个参数是由设计保证,不可测。
而且厂家标了规定的温度,温度是室温。但是我记得好像高温的情况下寿命会下降。
所以如果我是你,我照样会把这个值砍一半来用。这样放心。

作者: redroof    时间: 2023-12-29 19:19
modbus 发表于 2023-12-29 18:48
芯片的很多参数都不实测,由设计所保证,有些国外芯片厂家还专门注明该参数不测试、由设计所保证,国外厂 ...
(引用自26楼)

有关写寿命之类的这种又难测,又要非常长时间才能见到效果,又对产品功能非常重要的参数,不管厂家怎么保证,我至少要砍一半来用。给自己一个安心。
谁也不会缺这一倍的写寿命啊。。
作者: gnail092    时间: 2023-12-29 19:25
redroof 发表于 2023-12-29 19:15
别忘了后面的那个说明,这个参数是由设计保证,不可测。
而且厂家标了规定的温度,温度是室温。但是我记 ...
(引用自29楼)

下午问了一家国产EEPROM的原厂FAE,他说EEPEOM写入不影响同一页的其它地址的寿命的,atmel的他不清楚,而且100万次就是最差也有100万次(这个说法感觉是不太可靠的)
作者: advarx21ic    时间: 2023-12-29 22:11
gnail092 发表于 2023-12-29 19:25
下午问了一家国产EEPROM的原厂FAE,他说EEPEOM写入不影响同一页的其它地址的寿命的,atmel的他不清楚,而 ...
(引用自31楼)

靠,FAE说的就是我的想法,难道我错了?




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4