打印
[STM32]

大量eeprom数据怎么保存

[复制链接]
10653|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
taijing33|  楼主 | 2021-8-28 17:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序中大于用到300个字节的需要掉电保存的数据,我都放在一个结构体中,使用过程中每次操作一次就改一两个数据,我现在的做法是改完数据后,进算所有数据的crc,然后和以前没改数据之前的crc比较,要是不一样就认为数据有改动,然后进行所有数据写eeprom操作。这样做的话其他大量没改动的数据都保存了一遍,我觉得没必要。
有没有办法只保存改动过的数据。然后计算crc再保存crc。这样每次保存的话只需保存改动的数据和crc就可以了。

使用特权

评论回复

相关帖子

沙发
PPDDPPDD1234| | 2021-8-29 07:42 | 只看该作者
才300个数据而已
不在乎时间的话,想怎么保存就怎么保存。
无论怎么保存,写入寿命都是一样的。不建议在这种无关紧要的事情上浪费时间。。

使用特权

评论回复
板凳
chongdongchen| | 2021-8-29 08:34 | 只看该作者
用CRC校验数据是否改动过,有一定的碰撞概率,不建议这样操作。
操作完成后,与原来的对比一下,不一样就说明被改动了。
或者可以更简单一些:只要操作过了,就算是有改动。

使用特权

评论回复
地板
xyz549040622| | 2021-8-29 08:35 | 只看该作者
最好是分区存放,肯定是有需要经常修改的参数,放在一起,还有就是你用的是eeprom芯片还是flash芯片,两者的寿命根本不在一个级别

使用特权

评论回复
5
William1994| | 2021-8-29 10:13 | 只看该作者
双RAM备份, 双flash备份。
RAM里面逐个字节比,搞神马CRC啊。算个CRC的时间,早比较完了。

使用特权

评论回复
6
Prry| | 2021-8-29 16:10 | 只看该作者
300字节不算大,直接写就完了。

使用特权

评论回复
7
ayb_ice| | 2021-8-30 08:41 | 只看该作者
没有必要,EEPROM都有页写,你写一个字节和写一页的时间是相同的,
那样做是会导致程序逻辑不清晰
放在结构体里是合理的,只是不需要一改动就回写吧,只在掉电或修改确定后(比如修改参数的任务退出后)再保存即可
不需要计算什么CRC吧,直接内存比较不就可以了吗

使用特权

评论回复
8
hjl2832| | 2021-8-30 08:54 | 只看该作者
你CRC判断的目的是为什么?只是为了识别有没有改动。。。。既然是EEPROM,每改动一次就保存就得了(直接1字节写,改了哪个写哪个),有必要整这么麻烦吗?反正你有改动都要写一次,寿命一样的。

使用特权

评论回复
9
m564522634| | 2021-8-30 09:15 | 只看该作者
300个字节怎么保存都可以呀,你就是改一个字节你要真实行一次擦写的,300个不算什么大的开销

使用特权

评论回复
10
ccd007| | 2021-8-30 09:18 | 只看该作者
如果不考虑成本的话,可以采用能单字节操作的EEPROM,这种EEPROM不必要每次改写的时候都擦除整个bank。我以前记得ATMEL推荐过这种EEPROM,不知道其他厂家有没类似的产品。价格应该会贵一些。

使用特权

评论回复
11
ayb_ice| | 2021-9-1 10:00 | 只看该作者
ccd007 发表于 2021-8-30 09:18
如果不考虑成本的话,可以采用能单字节操作的EEPROM,这种EEPROM不必要每次改写的时候都擦除整个bank。我以 ...

直接上铁电,时序完数据就写进去了,而且速度超快

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

163

主题

365

帖子

3

粉丝