amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 18

关于掉电保存数据,分享一下

[复制链接]
(1904696)

打赏出0元收入0元

发表于 2020-6-16 15:07:51 | 显示全部楼层 |阅读模式
今天在QQ群里和祁绪电子(做开发板的)聊天, 提到掉电保存数据

我们一般会建议客户把每次修改的数据放在RAM,在单片机即将掉电的时间把数据统一保存到EEPROM,这样以防擦除超过10万次,增强单片机使用寿命,
同时也会改善屏闪的问题,很多涉及调光的,往EEPORM保存数据,写一次,屏闪一次 ,如果改用这个办法,就会改善很多。
但是EEPROM擦除需要时间,我们建议客户在上电的时候就先去擦,然后在掉电的时候就可以直接写了,不会来不及
这样 这个STC8G系列的IAP-TPS单独出来就方便操作了
(1901849)

打赏出0元收入0元

发表于 2020-6-16 15:55:18 | 显示全部楼层
“我们建议客户在上电的时候就先去擦,然后在掉电的时候就可以直接写了,不会来不及”
这样有个问题,如果参数不是每次都修改,就无谓的消耗生命了。
(1899839)

打赏出0元收入0元

发表于 2020-6-16 16:28:48 | 显示全部楼层
wochai 发表于 2020-6-16 15:55
“我们建议客户在上电的时候就先去擦,然后在掉电的时候就可以直接写了,不会来不及”
这样有个问题,如果 ...

而且上电的瞬间突然掉电会不会导致问题。。。。
(1897237)

打赏出0元收入0元

发表于 2020-6-16 17:12:10 | 显示全部楼层
N多年前被歪果仁的MCU内部的所谓eeprom坑过   目前还是心有余悸  情愿外置24c一粒   不再使用内部丰富的eep资源   当然  如有大家认可过的方法和型号  愿意重新拾起信心
(1894589)

打赏出0元收入0元

发表于 2020-6-16 17:56:18 | 显示全部楼层
如果在检测掉电后,写入数据失败,又是个问题。。。
(1880154)

打赏出0元收入0元

发表于 2020-6-16 21:56:53 | 显示全部楼层
本帖最后由 wye11083 于 2020-6-16 22:03 编辑
cloudboy 发表于 2020-6-16 16:28
而且上电的瞬间突然掉电会不会导致问题。。。。


不会。再加一片809S,2.93V释放复位,用比较器做中断源,电容放大点,这样就能确保万无一失了。当然要妥善处理好中断嵌套的问题,如果是掉电中断则程序应直接挂起避免后续跑飞误操作。

理论上,STC应当单独供电,不要和系统3.3并一起,避免干扰(加一片SS24就解决了),电容按100uF计,当掉电中断触发时,立马关掉所有外设输出,电流能控制在5mA以内吧。这样的话,电压从3.2V(假设SS24掉压)掉到2.93V大约需要50ms时间,足够写flash了(时间估算按1C=1V·1A/1s?来计算,则100uF=1V·100uA/1s,0.27V==27uA,这样5mA的时间=27uA/5mA=50ms。电容量的公式记不清了,但是大体计算不会有太大偏差)。
(1879707)

打赏出0元收入0元

发表于 2020-6-16 22:04:20 | 显示全部楼层
zhenglingo 发表于 2020-6-16 17:56
如果在检测掉电后,写入数据失败,又是个问题。。。

flash还好了。只要保证电荷泵正常工作(输入电压足够)一般不会失败,除非是MLC或TLC单元,时间不够会造成关联单元失效。
(1879072)

打赏出0元收入0元

发表于 2020-6-16 22:14:55 | 显示全部楼层
想得太简单了,汽车电子试一试
(1839645)

打赏出0元收入0元

 楼主| 发表于 2020-6-17 09:12:02 | 显示全部楼层
1.png
(1821933)

打赏出0元收入0元

发表于 2020-6-17 14:07:14 | 显示全部楼层
wye11083 发表于 2020-6-16 22:04
flash还好了。只要保证电荷泵正常工作(输入电压足够)一般不会失败,除非是MLC或TLC单元,时间不够会造 ...

这个问题,之前有个项目用过备份两套参数放在不同的扇区解决突然掉电问题,如果参数比较多不敢用掉电检测啊
(1804170)

打赏出0元收入0元

发表于 2020-6-17 19:03:17 来自手机 | 显示全部楼层
91L的方法,用AvR的年代,论坛讨论过。现在不能搜索了
(1788190)

打赏出0元收入0元

发表于 2020-6-17 23:29:37 | 显示全部楼层
参数变化时擦除,掉电时写入,有擦除才写入
(1656272)

打赏出0元收入0元

发表于 2020-6-19 12:08:15 | 显示全部楼层
wye11083 发表于 2020-6-16 22:04
flash还好了。只要保证电荷泵正常工作(输入电压足够)一般不会失败,除非是MLC或TLC单元,时间不够会造 ...

楼主思路不错啊,我之前用STC做的一个小产品,就用了这个办法掉电保存EEPROM。
(1646941)

打赏出0元收入0元

发表于 2020-6-19 14:43:46 | 显示全部楼层
想象很美好,现实很残酷。
我敢保证。楼主的方法,会出问题。
(1646322)

打赏出0元收入0元

 楼主| 发表于 2020-6-19 14:54:05 | 显示全部楼层
zhonghua_li 发表于 2020-6-19 14:43
想象很美好,现实很残酷。
我敢保证。楼主的方法,会出问题。

方案公司的  工程师   多年测试出的结果    请放心使用
(1637589)

打赏出0元收入0元

发表于 2020-6-19 17:19:38 | 显示全部楼层
上电的时候擦,掉电的时候写,除非能保证100%的写数据不失误。失误一次数据全没了。感觉风险还是有点高。
(1636497)

打赏出0元收入0元

发表于 2020-6-19 17:37:50 | 显示全部楼层
wochai 发表于 2020-6-16 15:55
“我们建议客户在上电的时候就先去擦,然后在掉电的时候就可以直接写了,不会来不及”
这样有个问题,如果 ...

就是因为一些数据一直在变化,但又要掉电保持,才有此要求。当然,也可以判断,有变化才更新。
(1531747)

打赏出0元收入0元

发表于 2020-6-20 22:43:40 | 显示全部楼层
对于这种需求,以及考虑数据安全,想了一种方法: 可以使用两个页面来做乒乓操作,即两个页面轮换来写入新的数据! 如下:
1)先描述一下存储的数据格式 :  
数据头标识符(2个字节,如: 0xFA 0xFA) + 数据版本标识符(1个字节: 0~255每次更新时递增) + 数据长度(1个字节,这个为可选项) + 实际数据内容 + 校验字节(校验和或CRC都可以,这个也为可选项) + 数据尾标识符(2个字节,如: 0xF5 0xF5)
2)具体操作:使用两个页面轮换擦写,弄一个变量记录数据来源于哪个页面,掉电时就去写另外一个页面。
a. 上电时,读取并检查两个页面内容,只擦除旧版本数据的页面(若已擦除过了全为0xFF,则无需再进行擦除操作了 )
b. 掉电时,如果数据有修改需要存储, 将新数据写到另外一个页面(上电时已擦除的那个页面)。


(1445652)

打赏出0元收入0元

发表于 2020-6-21 22:38:35 来自手机 | 显示全部楼层
楼上思路不错
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-8 16:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表