详解avr单片机防eeprom掉数据的办法

上传人:第*** 文档编号:31521547 上传时间:2018-02-08 格式:DOC 页数:9 大小:56.50KB
返回 下载 相关 举报
详解avr单片机防eeprom掉数据的办法_第1页
第1页 / 共9页
详解avr单片机防eeprom掉数据的办法_第2页
第2页 / 共9页
详解avr单片机防eeprom掉数据的办法_第3页
第3页 / 共9页
详解avr单片机防eeprom掉数据的办法_第4页
第4页 / 共9页
详解avr单片机防eeprom掉数据的办法_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《详解avr单片机防eeprom掉数据的办法》由会员分享,可在线阅读,更多相关《详解avr单片机防eeprom掉数据的办法(9页珍藏版)》请在金锄头文库上搜索。

1、详解 AVR 单片机防 eeprom 掉数据的办法应用 AVR 芯片内部 EEPROM 写入(或写入后读出)出错问题,下面有 AVR 的芯片手册有相关介绍(来自 mega8 中文翻译文档): 防止 EEPROM 数据丢失 若电源电压过低,CPU 和 EEPROM 有可能工作不正常,造成 EEPROM 数据的毁坏( 丢失) 。这种情况在使用独立的 EEPROM 器件时也会遇到。因而需要使用相同的保护方案。 由于电压过低造成 EEPROM 数据损坏有两种可能:一是电压低于 EEPROM 写操作所需要的最低电压;二是 CPU 本身已经无法正常工作。 EEPROM 数据损坏的问题可以通过以下方法解决:

2、 当电压过低时保持 AVR RESET 信号为低。这可以通过使能芯片的掉电检测电路 BOD 来实现。如果 BOD电平无法满足要求则可以使用外部复位电路。若写操作过程当中发生了复位,只要电压足够高,写操作仍将正常结束。 以上官方文档介绍主要提示的是电压过低发生的异常而造成读写错误,并未涉及到其它问题。 个人总结,在实际应用过程中有以下问题造成数据读写错误: 1.程序受到干扰(或程序存在 BUG)造成写入 EEPROM 的数据本身就是错误的; 2.EEPROM 写入次数过多(这个问题在频繁写入时会遇到) ,造成无法写入的; 3.再提电压问题:由于电压过低,造成写入的数据实际未写入或写入错误; EE

3、PROM 写入错误问题是不可避免的,因此就应有相关的归避措施和恢复措施: 从硬件方面来说:加入 BOD 措施是必要的,同时芯片的电源滤波也有较高要求,芯片的复位电路、晶振(及芯片晶振设置位,指单片机的工作频率,这对 EEPROM 读写有影响)也应仔细处理,以提高抗干扰;当然,一个设计优良的线路板对抗干扰有很大帮助; 从软件方面来说:可以有以下方式进行控制: 1.在写入 EEPROM 前,需对写入的 EEPROM 数据进行验证措施,若不正常则不写入; 2.EEPROM 写入后再读出(即较验) ,写前数据比较,应一致,否则可能为 EEPROM 无法再写入,这时可能要更换存储区地址; 3.楼主的解决

4、方案有比较好的效果,但是我 14 楼提出的问题:太占 EERPOM 存储空间了,可以精简一下会更好;因为 AVR 内部的 EEROM 区有限,若存在大量存储数据情况下,则有可能选用高阶的芯片而造成成本上升; 4.数据读出时有验证,并存在恢复措施,以使数据错误降到最低。 以下是另一种办法.附源码 基本思路:每份写到 EEPRM 的数据,都做三个备份,每个备份的数据都做 CRC16 校验,只要系统运行中出错,错误地修改了 EEPROM 数据, 那么根据校验字节就知道哪个备份的数据被修改了,然后用正确的备份覆盖出错的备份,达到数据恢复的目的。 EEPROMSave.h 文件: /* EEPROM 管

5、理定义 */ #define EepromPageSize 64 /页容量定义 #define EepromPage0Addr 0x0000 /各个页的其始地址定义 #define EepromPage1Addr (EepromPage0Addr + EepromPageSize) #define EepromPage2Addr (EepromPage1Addr + EepromPageSize) #define EepromPage3Addr (EepromPage2Addr + EepromPageSize) #define EepromPage4Addr (EepromPage3Addr

6、 + EepromPageSize) #define EepromPage5Addr (EepromPage4Addr + EepromPageSize) #define EepromPage6Addr (EepromPage5Addr + EepromPageSize) #define EepromPage7Addr (EepromPage6Addr + EepromPageSize) /* 最后两个字节为 CRC16 校验码,其余为数据 | 0 | 1 | 2 | |.| 61 | 62 | 63 | Data Data.Data.CRCH CRCL */ #define VALID 0x

7、01 #define INVALID 0x00 /*-*/ EEPROMSave.c 文件: /* *函数名称:EepromReadByte() *函数功能:写一个 Byte 的数据进 EEPROM *输入参数:address:地址 *返回参数:从指定地址读出来的数据 *编写作者:my_avr *编写时间:2007 年 8 月 13 日 *相关说明: */ unsigned char EepromReadByte(unsigned char *address) unsigned char data; data = 0; eeprom_busy_wait(); data = eeprom_rea

8、d_byte(address); return data; /* *函数名称:EepromReadWord(); *函数功能:写一个 Word 的数据进 EEPROM *输入参数:address:地址 *返回参数:从指定地址读出来的数据 *编写作者:my_avr *编写时间:2007 年 8 月 13 日 *相关说明: */ uint16_t EepromReadWord(uint16_t *address) uint16_t data; data = 0; eeprom_busy_wait(); data = eeprom_read_word(address); return data; /

9、* *函数名称:EepromWriteByte() *函数功能:写一个 Byte 的数据进 EEPROM *输入参数:address:地址;data :数据 *返回参数:无 *编写作者:my_avr *编写时间:2007 年 8 月 13 日 *相关说明: */ void EepromWriteByte(unsigned char *address,unsigned char data) eeprom_busy_wait(); eeprom_write_byte(address,data); /* *函数名称:EepromWriteWord() *函数功能:写一个 Word 的数据进 EEPR

10、OM *输入参数:address:地址;data :数据 *返回参数: *编写作者:my_avr *编写时间:2007 年 8 月 13 日 *相关说明: */ void EepromWriteWord(unsigned int *address,unsigned int data) eeprom_busy_wait(); eeprom_write_word(address,data); /* *函数名称:EepromWriteBlock() *函数功能:将缓冲区中的 n 个数据写进 EEPROM *输入参数:address:地址;data :数据 *返回参数: *编写作者:my_avr *编

11、写时间:2007 年 8 月 13 日 *相关说明: */ void EepromWriteBlock(unsigned char *buff,unsigned char *address,unsigned char n) unsigned char i; for (i = 0; i 8); pdata +; EepromWriteByte(pdata,(uint8_t) crc); pdata +; if (EepromCheck(pdata - packsize),packsize) return VALID; else return INVALID; /* *函数名称:unsigned

12、char CheckAllPage(void) *函数功能:检查 EEPROM 数据是否有效,检查三个备份 *输入参数:无 *返回参数:操作成功否?,成功:VALID,失败:INVALID *编写作者:my_avr *编写时间:2007 年 8 月 21 日 *相关说明: */ uint8_t CheckAllPage(void) if (EepromCheck(unsigned char *)EepromPage1Add,EepromPageSize) = VALID) &(EepromCheck(unsigned char *)EepromPage2Add,EepromPageSize) = VALID) &(EepromCheck(unsigned char *)EepromPage3Add,Ee

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号