专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
EEPROM 如何延长寿命,求意见与方法
2020-01-25 15:12
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
2921
22
22
请问 各位,如何延长EEPROM 的寿命,求方法与意见~
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
wy2000
1楼-- · 2020-01-26 16:22
精彩回答 2 元偷偷看……
加载中...
mcucow
2楼-- · 2020-01-26 20:30
少用,
均衡使用
加载中...
lw2012
3楼-- · 2020-01-26 22:29
WXF_mabg 发表于 2014-2-11 13:07
磨损均衡有相应的算法吗 请问
STM32应用笔记中有一个算法。用内部FLASH的。
加载中...
68336016
4楼-- · 2020-01-27 01:43
网上转的
向EEPROM种写入数据实际上是一个烧写的过程,对EEPROM具有一定的破坏性,因此一个EEPROM单元的擦写的次数是有限的。具体的擦写次数视不同厂家、不同系列的芯片决定。Microchip公司的PIC16F876A内部EEPROM的擦写次数为100万次(数据文档记录),对于一些不需要频繁改变的参数而言完全满足需求,但是当用在固定的4字节存放流量的积累时,是不能满足要求的。因为,在综合考虑各种因素后,如果要求流量计在运行时每10s存放1次累积量,则EEPROM能安全运行1*1000000/(360*24)=117天,不能满足要求,必须采用一定的方法延长EEPROM的寿命。
我采用的方法是在EEPROM中开辟一段空间滚动存放累积量,具体实现的方法是:将EEPROM中地址0--160的单元滚动存放累积量,每4字节为一组,共40组,每组连续存放50次(根据需要改动),然后再一组中存放。当第40组连续存放50次后,再回到第一组开始存放。由于全局变量Savetime记录在某一组连续存放的数据,EEPROM中的地址为0单元用于存放当前累积量有效值所在组的首地址,当某一组连续存放50次,滚入下一组时更新存放地址的值,实现函数如下:
void ee_Cumulation_write(double data)
{
SaveTime++;//同一组位置连续存的次数
if(SaveTime>50)
{
SaveTime=0;
SaveAddr+=4;//转到下一组位置
if(SaveAddr>157) SaveAddr=1;
eeprom_write(0,SaveAddr);//EEPROM位置0存放当前累积量的首地址
}
ee_double_write(SaveAddr,data);//存放累积量
}
加载中...
Excellence
5楼-- · 2020-01-27 06:29
如果8K的EEPROM,而只用1K,那么8个块循环写。EEPROM中记录读写的次数。
加载中...
ztrx
6楼-- · 2020-01-27 09:08
精彩回答 2 元偷偷看……
加载中...
上一页
1
2
3
4
下一页
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
东软载波ESF0654 PDS开发板串口USART0代码分享
1 个回答
普通32位单片机使用linux的应用代码
5 个回答
东软载波ESF0654 PDS开发板AT24C04的调试
9 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
均衡使用
STM32应用笔记中有一个算法。用内部FLASH的。
向EEPROM种写入数据实际上是一个烧写的过程,对EEPROM具有一定的破坏性,因此一个EEPROM单元的擦写的次数是有限的。具体的擦写次数视不同厂家、不同系列的芯片决定。Microchip公司的PIC16F876A内部EEPROM的擦写次数为100万次(数据文档记录),对于一些不需要频繁改变的参数而言完全满足需求,但是当用在固定的4字节存放流量的积累时,是不能满足要求的。因为,在综合考虑各种因素后,如果要求流量计在运行时每10s存放1次累积量,则EEPROM能安全运行1*1000000/(360*24)=117天,不能满足要求,必须采用一定的方法延长EEPROM的寿命。
我采用的方法是在EEPROM中开辟一段空间滚动存放累积量,具体实现的方法是:将EEPROM中地址0--160的单元滚动存放累积量,每4字节为一组,共40组,每组连续存放50次(根据需要改动),然后再一组中存放。当第40组连续存放50次后,再回到第一组开始存放。由于全局变量Savetime记录在某一组连续存放的数据,EEPROM中的地址为0单元用于存放当前累积量有效值所在组的首地址,当某一组连续存放50次,滚入下一组时更新存放地址的值,实现函数如下:
void ee_Cumulation_write(double data)
{
SaveTime++;//同一组位置连续存的次数
if(SaveTime>50)
{
SaveTime=0;
SaveAddr+=4;//转到下一组位置
if(SaveAddr>157) SaveAddr=1;
eeprom_write(0,SaveAddr);//EEPROM位置0存放当前累积量的首地址
}
ee_double_write(SaveAddr,data);//存放累积量
}
一周热门 更多>