新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AVR内部EEPROM数据丢失问题的原因与解决方案

AVR内部EEPROM数据丢失问题的原因与解决方案

作者:时间:2012-08-16来源:网络收藏

总结一下引起内部的原因:

1.程序问题;
2.程序跑飞;
3.相关寄存器因强磁场、高压静电等外部干扰出错所产生的写入动作;
4.系统有很大的感性负载,在断电的时候会产生一个反向高压,有可能会自擦除。
……(还有什么原因,欢迎大家继续列举,以便完善及想办法解决)

针对问题1,程序问题不再该文讨论范围内。

针对问题2,程序跑飞,这个因该是引起EEPROM的主要原因。但是引起程序跑飞的原因却是多方面的。

第一.电压不正常,工作不稳定,程序跑飞。针对这个问题,可以开启内部BOD、或者外加复位芯片解决,在低功耗场合,外部复位是有必

要的,毕竟BOD功耗太高。

第二,晶体振荡受干扰,频率不稳定,程序跑飞。针对这个问题,建议晶体使用全幅振荡,并且走线的时候尽量短,并且使用地线隔离。

第三系统受外界环境干扰,修改了PC等寄存器,程序跑飞。针对这个干扰问题,这个引起程序跑飞的可能性应该不大,如果环境实在恶劣

,那么就应该想到做电磁屏蔽,ESD保护等,如果还不行,那么只能建议换换别的单片机试试看了。

针对问题3,我们只能优化电路设置,尽量避免,比如加屏蔽罩,加ESD保护,加TVS保护,电源加电容退耦等等。

针对问题4,如果系统真的具有很大的感性负载,那么请注意加续流二极管、滤波电容等做保护,不要让这种反向高压产生,无论如何,这

种因为感性负载突然断电自激产生的高压,不仅仅会对EEPROM有影响,而是对整个系统都存在威胁。

经过上面硬件上的一些处理,虽然EEPROM数据丢

失的可能已经很小了,但是我们仍然不能保证EEPROM数据就不会丢失了。这时EEPROM数据的可*性,那就得从软件上去考虑了,接着我们从

软件的方面继续讨论。

我的做法是,数据分块,分区,校验,备份。当然这里讲的处理方法,仅仅是提供一种想法,你可以做不同数据长度的分块,不同大小的 分区,采用不同的地址映射方法,以及采用更多次的数据备份。下面以Mega168为例继续讨论。


上一页 1 2 下一页

关键词: AVR EEPROM 数据丢失

评论


相关推荐

技术专区

关闭