当前位置:首页 > 技术心得 > 正文内容

EEPROM读写注意事项

xjtudll14年前 (2012-09-18)技术心得99640

在实际使用EEPROM过程中,发现一些问题:

一、快速操作EEPROM造成读写数据出错

现象:读取的数据与写入的不同,但时序波形和硬件未发现任何问题。

在查阅EEPROM规格书后发现有一个很容易忽略的参数:TDHDL,此参数用于规定当对EEPROM进行一次I2C操作后必须再等待一段时间才能再对EEPROM进行I2C操作。TDHDL如下图所示:

clip_image002

当对EEPROM访问完成后,如果没有等待大于TDHDL定义的时间就对EEPROM进行新的访问(无论是读或写),将可能出错,读出或写入的数据无法保证正确。上述问题就是由此引起的。

解决措施

在每次访问EEPROM前或每次访问EEPROM后强制等待大于TDHDL规定的时间。

二、使用写操作引起的失误

1、连续进行写操作会出现错误

现象:连续对EEPROM进行写操作,有可能写入失败。

在进行写操作时,EEPROM内部硬件具备缓冲寄存器,待写入的数据不是直接写入指定地址存储器中,而是先存储在缓冲寄存器中,然后再通过内部电路写入指定地址存储器中。当通过I2C协议将需要写入的数据写入EEPROM的缓冲寄存器后,I2C传输完成,此时需要等待一段时间供EEPROM进行从缓冲寄存器写入指定地址存储器中,否则写入数据可能失败,造成写操作出现错误。

clip_image004

解决措施

使用与因快速操作EEPROM造成读写数据出错类似的方法,写操作完毕后强制等待大于twr规定的时间。

2、使用页写操作时出现错误

现象:写入数据没有写入到期望地址,同时会将期望地址附近数据破坏。

进行页写或多字节连续写操作时,首先需要指定地址,然后连续传输指定地址及跟随其后的地址对应的数据,EEPROM硬件在进行写操作后时会自动对操作地址加1,以方便下一次操作。

但是EEPROM这种地址自加操作对应写操作而言自是针对子地址的低几位(具体是几位与EEPROM硬件有关,不同厂家的EEPROM有所区别),当参与自加的低几位地址都加到二进制的“1”时,再次操作完毕后自加的结果将会使低几位地址变为“0”,即操作地址指针跳回本页的起始地址,而不是继续增加。

例如:可以进行16字节页写的EEPROM,即参与自加的子地址为低4位,如果从0x010开始连续写不超过16字节数据将不会出错;而从0x011开始连续写16字节数据将会出错,EEPROM内部地址自加电路将会把前15个字节数据写入0x011~0x01f中,这部分为正确的,而第16个字节的数据将会写入0x010中,而不是预期的0x020中。

解决措施

当需要进行页写或连续多字节写入时,首先需要对数据长度和起始写入地址进行判断,如果可能存在EEPROM地址自加出错现象,需要将需要操作的数据分为两部分,先将前面数据通过连续多字节写操作写入EEPROM的自加地址结束处,然后再循环进行页写操作或多字节连续写操作。

3、使用读操作引起的失误

现象:读出数据与EEPROM实际地址对应数据不符。

进行多字节连续读操作时,首先需要指定地址,然后读取指定地址及跟随其后的地址对应的数据,EEPROM硬件在进行读操作后时会自动对操作地址加1,以方便下一次操作。

但是当所访问的地址超过MEMORY的最大容量时,EEPROM的数据读取将会发生“卷边”,操作地址跳回该EEPROM的起始地址,然后再顺序自加。

解决措施

当需要读取连续多字节时,首先需要对数据长度与起始读取地址进行判断,如果可能存在EEPROM地址自加出错现象(越界现象),则需要做相应的出错处理,或者返回一个出错标志。

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/242/

分享给朋友:

“EEPROM读写注意事项” 的相关文章

带锁存移位寄存器(verilog)

带锁存移位寄存器(verilog)

带锁存的移位寄存器 rclk——锁存时钟 sclk——移位时钟 din——输入数据 dout——输出数据 [shiftBitNumbers——移位寄存器位数 module shi...

在水晶报表中使用Code128条形码

在水晶报表中使用Code128条形码

核心重点:字符串如果直接用code128字体显示,是无法扫描出来的。 1.将code128条码字体拷贝到C:\Windows\fonts下 2 .在水晶报表里的【字段资源管理器】的【公式字段】中新建一个公式字段例如我命名为Code128 3.在新建的字段单击鼠标右键 选择编辑 在报表自定义函数中新建...

Protel99SE原理图全局设置

Protel99SE原理图全局设置

一说到Protel99SE的全局设置,大家肯定会想到Global功能,这个功能在PCB里使用是很简单的,但是在原理图里的使用,相信很多人就不会操作了。 举个例子来说明吧,如果我想将全部电阻的封装由RC0603(实际上就是0603,自己换个名字而已)全部改成RC0805,那么该怎么操作呢? 先任意...

冰点文库 老是停止工作

冰点文库 老是停止工作

问题: 每次使用时,都提示停止工作   原因: Adobe Flash Player的更新出现了问题,请重新下载并安装最新版的Adobe Flash Player 冰点文库下载器的工作原理,使得它必须借助Adobe Flash Player实现PDF文件的转换。...

如何从远程桌面复制文件

如何从远程桌面复制文件

工作学习中,经常需要用到远程桌面,远程桌面确实很方便,但每次要将本地的东西拷贝到远程电脑或将远程电脑上的东西拷贝到本地时,都是用U盘来传递文件,这样就相当不方便了。近日,偶然看了远程桌面的帮助,发现其本身就是带文件复制、粘贴功能的,只是默认没有开启而已。 第一步:在远程桌面连接窗口,单击【选项】,...

Win7 64bit右键添加 显示/隐藏文件+扩展名 及问题解决

目前网上广为流传的 显示/隐藏文件+扩展名有两种方式: 1、小工具 2、修改注册表 第一种方式,找个小工具软件,我找了很多,但都不适合Win7 64bit,XP或Win7 32bit或许适用。关于这个工具的相关介绍及下载,可以参照以下网址: http://www.iplaysof...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。