操作eepROM时单片机掉电问题

2020-01-26 12:54发布

最近用的STC15F204EA,本来程序会在eepROM里保存数据的,测试的时候发现断几次电之后会有程序无法运行的情况,会不会是eepROM没有操作完成就返回导致单片机程序一直卡在eepROM中无法重新开始运行?
如果是这样的话,除了使用掉电检测电路,还有其他方法避免这个问题吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
stirwl
1楼-- · 2020-01-27 21:58
whatcanitbe 发表于 2013-10-9 23:13
那软件上基本无解

恩,又加了个断电检测电路上去,现在好多了
stirwl
2楼-- · 2020-01-27 23:35
 精彩回答 2  元偷偷看……
whatcanitbe
3楼-- · 2020-01-28 05:11
stirwl 发表于 2013-10-10 13:08
恩,加掉电检测了,懒得去写crc的程序,md5就更不用说了……
还有,我发现经常操作eepROM很容易导致程序 ...

EEPROM写入次数多了是会被写坏的.还有我碰到有些EEPROM本身就有坏的

软件上有个比较笨的解决办法,适合存储渐变的变量 ,比如产品的产量
每次写入同时写入3个位置  地址a=mData,  地址a+1=mData,地址a+2=mData
读的时候,读三个位置的值

根据三个值得大小关系可以判断出正确的值
tragedy
4楼-- · 2020-01-28 05:20
好像出现过的。
zyw19987
5楼-- · 2020-01-28 10:47
本帖最后由 zyw19987 于 2013-10-11 23:57 编辑

说说真正的数据管理方法。
把你要写的数据定义成一个块(可以用结构体来表示)块的最后两个字节是这个块所有数据的CRC校验结果,定义另外一个块叫备份区,每次写数据时是先写备份块,然后写数据块。记住是整块写,上电时看数据块数据是否正常(通过对块数据进行校验后和块的最后两字节比较)如果正常就往下执行,如果不正常就将备份块拷贝到数据块。保证系统不会死,不会乱跑。
分析:1、保存数据时写备份块时断电,从新上电时原来的数据块任然是之前的,系统不会乱。
       2、保存数据是备份块写完了,写数据块时断电,从新上电时会将备份块拷贝到数据块中,保证系统参数正常。
缺点,多一个备份块,写备份块断电的情况下,只能保证数据是上次的数据。
优点,不管何时出现断电,系统参数永远都会是合法的,不会出现非法数据而导致系统乱判断。
McuPlayer
6楼-- · 2020-01-28 11:28
楼上说的好,这其实就是数据完整性的问题

1、写错了数据,对方一定要能识别出来
2、识别数据出错后,应有后备方案,比如使用Default参数,备份参数

一周热门 更多>