打印

EEPROM数据保存策略

[复制链接]
1972|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nefudongfang|  楼主 | 2013-9-13 23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,第一次发帖希望能够得到支持。
最近做一个项目,是一个汽车空调控制器的项目,要求每次15点电(钥匙开关)断电可以保存断电前的状态,然后执行关机,再上电控制器还按掉电前的状态运行。其实控制器还有一路电源供电就是电瓶电源(30点电)。我在EEPROM里保存数据的策略是这样的,检测到15点电掉电,就开始保存数据,数据是分两块区域保存的,两块区域所保存的数据是一样的都是当前的状态,并且都有校验和。这里我说明一点,再掉15点电的时候如果30点电还有电的话我MCU使有足够的时间保存这些数据,数据不会出错是肯定的。但是如果15点和30点一起掉电的话,可能存在数据保存不全,一部分数据没来得及保存MCU就复位了。这时我的测试结果就让我产生疑惑了。我的想法是,就算我保存不了所有的数据,肯定是在某一个数据保存过程中MCU复位了,这个位置只可能是两块区域中的一个。当我再上电的时候我会先读第一块区域的数据,并检查校验和正确与否,如果没出错我就直接采用这组数据开机了。如果出错了,我认为是在第一块区域MCU复位的,我就取第二块区域的值,理论上第二块区域的值是没有背改动的,是一组有效的数据,当然不是这次断电前的数据,应该是上一次断电前的数据,我是可以不检验校验和的,但是我写程序的时候也把检验校验和写进去了,如果还是出错,我就恢复一组默认的数据,理论上这种情况是不会发生的。但是为什么就偏偏发生了呢?请教高人指点!也不知道说没说清楚。

相关帖子

沙发
ZG11211| | 2013-9-14 08:31 | 只看该作者
楼主你想多了,你检测到掉电的时候,你的单片机电源设计肯定是足够你完成一次写入过程的,也就是说,写入时的单片机电压应该不会被复位打断的,也不会引起复位才对。

使用特权

评论回复
板凳
ayb_ice| | 2013-9-14 09:05 | 只看该作者
改变就保存

使用特权

评论回复
地板
liang7143| | 2013-9-14 11:12 | 只看该作者
同LS,改变就保存

使用特权

评论回复
5
nefudongfang|  楼主 | 2013-9-15 16:22 | 只看该作者
我也想过改变就保存,因为是自动空调控制器,有一些自动参数改变比较频繁,就怕我的假EEPROM存储次数不够(10万次的)。

使用特权

评论回复
6
NE5532| | 2013-9-15 16:28 | 只看该作者
nefudongfang 发表于 2013-9-15 16:22
我也想过改变就保存,因为是自动空调控制器,有一些自动参数改变比较频繁,就怕我的假EEPROM存储次数不够( ...

1.算清楚10万次够不够,一般来说没有这么频繁的读写。
2.用算法处理,不同地址轮换用,100万、1000万次都可以用出来。
3.搞清楚自己的产品,如果10万次失效了,会不会造成严重后果,比如撞死人,如果不是,掉就掉。
4.用铁电存储器,也要不了几块钱,这个无限次写入。

使用特权

评论回复
7
421924538| | 2013-9-15 19:05 | 只看该作者
MCU部分电源加电容。只用于保存数据。

使用特权

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

本版积分规则

2

主题

22

帖子

1

粉丝