打印
[STM8]

【转】经验分享-EEPROM读写及数据管理

[复制链接]
1225|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
说书先生|  楼主 | 2016-12-24 12:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经常有人在QQ群讨论有关E2PROM操作、保护、失效等一些问题,今天闲来没事,简单概括总结一下咯。(才疏学浅,路过的英雄记得补刀)
1)有关 芯片内部自带的E2PROM


有的资深的工程师可能不是很愿意用MCU自带的E2PROM,大概是这些家伙上过什么当、受过骗还是什么的。简单说一下优缺点吧:


(1)片内集成的感觉挺便宜的,和MCU一起卖的,对成本要求严格的,写次数很少的场合一般会考虑,至少能省个2、3毛钱吧;
(2)缺点的话,可能擦写次数、稳定性没有外挂的专用芯片厉害;

2)有关常用的外挂E2PROM

如果是学生或者刚从学生时代走来的人们,大概也就知道ATMEL 24C0X系列吧,就好像我毕业的时候以为世界只有51和AVR,开个玩笑!
工程师主要考察E2PROM的参数无非就是擦写次数、功耗、稳定性、价格,其中10万次擦写次数和 100万次擦写次数正在较量,至于从工程师的角度考虑 擦写次数自然是没有上限最好,太低的擦写次数会让程序员死很多脑细胞。
3)有关E2PROM的数据管理

(1)操作注意事项:分页操作需要有5ms延迟等待时间才可以(以类AT24C04的产品为例),也就是模块化程序设计中,在写数据之前、写数据完毕后、度数据之前、读数据之后都需要考虑加5ms的延时时间。本来IIC的读写速率就不是很高,外加这些延迟一定会势必影响系统设计的实时性,但也不得不从读写性能的角度出发。


(2)上拉电阻的选择:出于稳定性考虑,WP、SDA、SCL引脚都会设置上拉电阻,常用的电阻值为 4.7K 、10K电阻,个人比较推荐4.7K。

(3)硬件IIC与软件模拟IIC的比较:对MCU资源不是很敏感的应用,都会考虑软件模拟的方式,毕竟这个移植起来真的很方便,只有第一做软件部分的时序、保护性设计作为足够好,后面拿过来修改时钟就可以直接,确实方便。

(4)默认参数的写入:设置新E2PROM的时间戳标志,每次系统启动时检查这个时间戳和MCU自身存储的时间戳是否一致,不一致则初始化整个E2PROM为默认参数;当然软件程序的升级,这个时间戳表示也有必要做更改。

(5)数据容错和管理:
把数据以有意义的数据块作分类管理,在数据的块的头、位加固定标识和CS/CRC校验 模式,格式如
  
数据块开始字
  
数据长度
数据
校验
结束
0xA5
Length
Byte0---ByteN
CS/CRC
0x5A

实际用于产品中,可以挑选这个格式内容里面的部分内容使用,比如去掉结束符等。
个人之所以建立写入开始字、结束字,原因是方便最好读出来的数据做数据格式检查,确认写入、读出的数据可靠性最高。
   为增强实际的可靠性,在需要写入的时候,可以在写入后,再读出来进行数据的比对,确认写入是否正确;或者在需要读出的时候,读两次、或者多次,检查每次的数据是否一致。
   对于出现异常的数据,最好有容错机制,可以回到默认状态值,不至于系统此时因为某个参数改变的崩溃。

(6)实际底层操作是否需要关闭主程序的中断:一般按照上述(5)操作,有多次冗余操作设计,可以不关闭主程序中断。而且,IIC为等待型操作,一般不会因为系统延迟导致时钟脉宽拉长,影响字节写入、读出。

(7)E2PROM擦写次数的延长: 如果现在手上的E2PROM的擦鞋次数是10万次,项目要求为100万次,且E2PROM内有很多空闲字节的没有使用。

可以这样操作,将数据整理好,以数据块的方式存储,一组数据分10个块地址存储,每次写完后转移到下一块写,即10次写操作中每个物理的数据存储地址只操作了1次。 注意此时的写块数据的指针不能单独存、操作,不然这个字节的操作频率高,也就受到10万次的限制,这个关键的链子在10万次的时候掉了,其他字节也就挂了。这个表征操作哪个块的指针或者说标示符,当然也需要是移动的,至于具体怎么实现,就是见仁见智的事了。

沙发
zhuotuzi| | 2016-12-24 13:26 | 只看该作者
还是铁电存储颗粒给力啊,无限次的擦写,根本不用考虑怎么存怎么擦。
用EEPROM的话,你就要考虑存储和擦写的算法了。

使用特权

评论回复
板凳
windows100| | 2017-1-21 09:45 | 只看该作者
楼主的主意好,正好用到。

使用特权

评论回复
地板
zhuotuzi| | 2017-1-21 17:53 | 只看该作者
我当年用51的时候就用过内置的存储空间

使用特权

评论回复
5
feelhyq| | 2017-1-22 14:05 | 只看该作者
好东西,学习一下

使用特权

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

本版积分规则

71

主题

191

帖子

0

粉丝