eeprom擦写次数请教
如题,我有个需求记录设备的工作时间,保存在eeprom中,之前是1小时记录一次,这样进场反馈不准。如果客户工作了50分钟就关机,eeprom没有更新数据,计时为0小时。后来我想改成15分钟,也不太准,因为客户用10分钟,用6次满一个小时了吧,计时还是0。
现在我想改成1分钟记录一次在eeprom,感觉会不会超过eeprom读写次数。
eeprom正常是写入10w次,一分钟一次,10W/60=1666,理论只能用1666小时吗? 空间那么大,轮流写。
或者嫌麻烦用铁电 有失电检查功能? 有的话失点时记录一次,平时1小时记录一次 用1个page做位累加计数器,每次写入前读取判断一次,写满擦除,再其他位置更新累计值,每页有256Byte,就可以实现256*8分钟擦除一次了,寿命就没问题了 存储里面加个计数变量,循环写,上电读一遍所有的取最大计数的内容,我们也是1分钟存储一次,存了20个备份循环写;另外现在的普通EEPROM都是100w次了 用FlashDB,连eeprom都省了,或者弄个掉电检测,关机时才保存。这不是可以保存10W次开关机了么。 zzh90513 发表于 2022-10-11 09:20
存储里面加个计数变量,循环写,上电读一遍所有的取最大计数的内容,我们也是1分钟存储一次,存了20个备份 ...
(引用自5楼)
这个办法好,如果计数溢出了 如何处理? 把所有的备份区都清空? 估计eeprom应该不止一个byte吧,轮流擦写啊,没有问题的 eeprom 不是100w次吗,dataflash模拟的eeprom才是10w次 mPiDDR 发表于 2022-10-11 09:45
这个办法好,如果计数溢出了 如何处理? 把所有的备份区都清空?
(引用自7楼)
你用uint32_t的变量,1分钟一次,猴年马月才溢出;再快还可以用uint64_t 1. EEPROM典型的擦写次数是100万次
2. 数据量大,多块滚动存储;数据量小,掉电存储 理想的做法是关机前保存,铁电也是一个选择。 有400万次的eeprom 我的项目就是采用类似5楼方案,这个简单使用。而且我是每间隔15秒就写入一次,到目前为止,没有问题。 掉电写和超时写就行了,搞个大电容 DoDoTech 发表于 2022-10-11 14:52
掉电写和超时写就行了,搞个大电容
(引用自15楼)
掉电检测还要改硬件吗。。。太麻烦了吧 类似F-RAM的铁电EEPROM 你值得拥有 像FM24CL64B 100万亿的读写次数 而且无延时写入 只要多花点钱,就有更好的。所以一切都是浮云,只有真金白银是真的 掉电写一次就行,检测Vbat,低于多少就写一下。3.3V多加点电容 。 上铁电呗 读写 次数超过想象 程序兼容 DoDoTech 发表于 2022-10-11 14:52
掉电写和超时写就行了,搞个大电容
(引用自15楼)
掉电写知道,请问超时写是什么呢? bwang1 发表于 2022-10-19 08:04
掉电写知道,请问超时写是什么呢?
(引用自21楼)
确定最短记录周期,比如1天,超过一天就记录一次,再加上掉电记录一次 这样保证掉电写异常,最多只丢一天的数据。 搭车问下,怎么保证计时正确一直是递增的。 自动矫正突变数据。 lin28 发表于 2022-10-19 08:53
搭车问下,怎么保证计时正确一直是递增的。 自动矫正突变数据。
(引用自23楼)
写错了还能自动矫正? 68336016 发表于 2022-10-19 08:59
写错了还能自动矫正?
(引用自24楼)
多个地方备份 ,然后对比?反正遇到个别产品出现突变数据 没想到好方法。比如应该计时才几天的,却是几百天这样突变的数据。怎么矫正回来。哪怕算少一个小时都行 {:biggrin:}轮流擦擦 本帖最后由 国学芯用 于 2022-11-25 09:21 编辑
上电后将 EEPROM中的数据读到RAM中,平常是读写RAM,掉电时及时将RAM中需要掉电保存的数据保存到EEPROM,就无 EEPROM 擦写寿命这种问题
STC8H系列数据手册:https://www.stcai.com/filedownload/631007
27楼的掉电检测方法,这个好!
页:
[1]