求教eeprom数据存储方法

2019-12-12 18:17发布

本帖最后由 jia_xuan 于 2019-3-15 14:31 编辑

产品需要记录历史数据,每隔10秒记录一次,大概存储1000条,我的思路是用两个地址记录最后一次保存的位置,每次存储数据时读一下,以便存入后续地址空间。数据按环形队列存储,新的数据覆盖最老的数据,现在有一个问题,记录位置的那两个地址每隔10秒需要写一次,寿命肯定不长,如何处理此问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
jia_xuan
1楼-- · 2019-12-15 09:13
 精彩回答 2  元偷偷看……
Elex
2楼-- · 2019-12-15 09:20
hyper320 发表于 2019-3-19 01:25
EEProm清除时都是0xff,若是16位资料,我的方法是搜寻为0xffff的16位资料,即是最后的资料,当然写入的资料不能 ...

这个方法写满数据就不好使了,楼主一次需要写1000条数据估计很快就写满了。
如果每次记录数据长度基本一致的话可以按数据长度的固定间隔来记录数据,每次记录的头4位作为记录顺序号。
上电的时候找到上次记录的顺序号保存在RAM里面,每次记录前算出新的顺序号和对应地址可以直接按新的顺序号和地址写入数据。
jia_xuan
3楼-- · 2019-12-15 12:23
Elex 发表于 2019-3-19 08:49
这个方法写满数据就不好使了,楼主一次需要写1000条数据估计很快就写满了。
如果每次记录数据长度基本一 ...

数据格式和长度都是固定的,按你的方法,如果时间久了记录在eeprom循环多次,上电后如何知道那个记录号是最接近一次存储的,我想到的方法是:写入新记录后,给下一个存记录的位置写入特征码,如果再有新数据来,就覆盖掉现有特征码,在其下一组位置写入特征码,依次往下推,每次上电查看特征码就可以知道最近一次写在那个位置。
hyper320
4楼-- · 2019-12-15 16:37
Elex 发表于 2019-3-19 08:49
这个方法写满数据就不好使了,楼主一次需要写1000条数据估计很快就写满了。
如果每次记录数据长度基本一 ...

1.仅上电执行一次,应该不在乎这些时间
2.依照您的方式,又要多占记忆空间
3.依照楼主的意思,满了覆盖旧资料,修正方法为连续两笔都为0xffff则空,否则写完资料后再清除下笔资料为0xffff,并设置标志位,下次的写入就不用再判断是否有空间,而直接用资料满的方式做处理,而清除时下完命令就可离开不必等命令完成,与正常写入时间类似,而下次先判断上次命令的结束再做处理,这应该是最省事的处理方式了,因为不管怎么处理,最后都要面对资料空间满的处理方式.

一周热门 更多>