Menu Close

I2C接口EEPROM的原理与使用

E2PROM也是采用浮栅技术生产的可编程存储器,构成存储单元的MOS管的结构如图1所示。它与叠栅MOS管的不同之处在于浮栅延长区与漏区之间的交叠处有一个厚度约为80埃的薄绝缘层,当漏极接地,控制栅加上足够高的电压时,交叠区将产生一个很强的电场,在强电场的作用下,电子通过绝缘层到达浮栅,使浮栅带负电荷。这一现象称为“隧道效应”,因此,该MOS管也称为隧道MOS管。相反,当控制栅接地,漏极加一正电压,则产生与上述相反的过程,即浮栅放电。与SIMOS管相比,隧道MOS管也是利用浮栅是否积累有负电荷来存储二值数据的,不同的是隧道MOS管是利用电擦除的,并且擦除的速度要快得多。

E2PROM电擦除的过程就是改写过程,它是以字为单位进行的。E2PROM具有ROM的非易失性,又具备类似RAM的功能,可以随时改写(可重复擦写100万次)。目前,大多数E2PROM芯片内部都备有升压电路。因此,只需提供单电源供电,便可进行读、擦除/写操作,为数字系统的设计和在线调试提供了极大的方便。

%title插图%num

图1 EEPROM 的基本结构

1. I2C接口的E2PROM

目前E2PROM的接口主要有两种,分别为I2C接口和SPI接口。图2,图3分别是512Kbit  I2C接口的串行EEPROM24LC512。

IMG_256

图2

%title插图%num

图3

图2,3以平面的方式显示了EEPROM的封装形式。型号24LC512中“L”表示低电压系列,一般指供电电压3.3V,C表示表示CMOS工艺。A0,A1,A2是EEPROM的器件地址选择线,主要用于芯片的扩展,000表示器件地址为0,001表示器件地址为1,最多可以扩展8个芯片。因次在读写命令时应注意芯片的命令地址与外部地址的匹配。

SCL,SDA为漏极开路的I2C接口,因次在使用时需外接上拉电阻。一般外接4.7K,如果扩展的芯片较多,可以外接3.3k或2.2K提高上拉效果。

(*上拉电阻,一般指电阻越小上拉能力越强,因次经常会说小电阻的上拉为强上拉,高阻值的上拉电阻为弱上拉).

2. I2C接口的硬件电路设计:

如右图4所示,左边为FPGA/MCU, 右边为I2C接口的EEPROM,GPIO0-GPIO2用于芯片的扩展时选择对应的芯片,当有多个芯片通过I2C接口并联使用时,只有外部地址与I2C的读写地址匹配时,芯片才会应答,否则不应答。这样就可以把当前的读写使用权释放给其它芯片。

%title插图%num

图4

3. I2C基本知识:

I2C总线在硬件连接上非常简单,是2线制的互联系统;时钟线为SCL,数据线为SDA。

I2C总线的读写速度分为:标准模式100K,快速模式400K,高速模式1M,超高速模式3.4M。因此在使用I2C总线时应注意对应芯片I2C接口对应的速度等级。I2C的地址用7位2进制数表示范围0-127. 因次一个I2C MASTER 总线可以连接120 SLAVE设备(有些地址分配给特殊指令使用如11111111已经分配给复位指令)。在外部总线连接时SDA与SCL都需要上拉电阻,如图4。相关内容请阅读I2C接口与协议部分内容。

 

图4 是标准的MCU与I2C接口的E2PROM的硬件电路设计结构,GPIO0-2用于选择串行EEPROM 的芯片,与I2C在写器件命令中的地址匹配。因次可以实现多片EEPROM的扩展。本例中最多可以实现8片的扩展。例:当选择的芯片是24C02时,A2,A1,A0根据芯片的硬件地址选择000-111。当芯片为24C04时,只有A2,A1可以编程,A0固定为0。当芯片的型号为24C16时,A2,A1,A0都不可编程,设为000.如图5所示,

%title插图%num

图5

4. I2C EEPROM的写时序

I2C EEPROM的写时序遵循I2C总线协议,又分为如下几个阶段,

  • Start:  在空闲(IDLE)状态(SDA,SCL都为高电平),保持SCL为高电平,SDA 由高到低转换,见图6。
  • 设备地址写:  I2C EEPROM的设备地址一般为0x50-0x57,即101_0000到101_0111.
  • 读写控制:将I2C EEPROM的设备地址左移一位,并在右边拼接读写控制形成一个8位的字节。如读为1010_0001(16进制A1),写为1010_0000(A0),见图6。
  • I2C串行移位顺序:I2C 的发送总是由高位到低位顺序进行。
  • 应答ACK(Acknoledgement):在应答之前SDA应置为高阻状态,等待应答(低电平表示有应答)。并且应有超时等待机制,一旦超时应进入超时处理机制。

%title插图%num

图6  I2C 串行EEPROM的字节写控制

%title插图%num

图7 I2C 串行EEPROM的页写控制

  • 存储器地址写入:

根据不同的EEPROM的容量地址为8位或16位,8位的寻址范围0-255共256字节,地址写入从高到底。如AT2401,2402,2404,2408,2416等。16位寻址范围0-65535,最大可以到64K字节。更大容量的寻址如AT24CM02, 将高位地址线放在芯片(device)的命令码中。注意这里的地址是芯片内部存储器的寻址地址,与前面介绍的芯片(Device)的地址一定要区分开。

  • 应答(ACK):在应答阶段,等待应答方将SDA设为高阻,等待应答。
  • 数据(DATA):根据命令中给定的读或写,决定数据流向。数据写或读又分为字节读写和页读写两种。

%title插图%num

图8   I2C 串行EEPROM的字节写控制

%title插图%num

图 9   I2C 串行EEPROM的读写时序

  • 停止(STOP),在SCL为高电平的条件下,SDA由低到高,I2C 操作停止,进入空闲状态(IDLE)

WP提供芯片写保护,在高电平时禁止芯片写入,在低电平时开放写操作,因此图10的电路中WP接地实现EEPROM正常的读写操作。在设计中也可以连接到MCU或FPGA的GPIO上实现可编程的写保护控制。

特殊大容量AT24CM02 的扩展及地址寻址如图10,11所示。如果使用该芯片,建议仔细阅读该芯片的数据手册。

%title插图%num

图10 I2C 串行EEPROM扩展示意图

%title插图%num

图 11 I2C 串行EEPROM AT24CM02 的地址编码

4. 编程时间间隔:

I2C在写入时,先把要编程的数据写到EEPROM内部的缓冲区,当I2C 的操作结束后才会真正实现EEPROM内部编程,一般编程时间约为5ms.因次前后两次编程时间间隔最低要保持5毫秒左右的时间。

  • 按页(page)写:

由于两次编程时间间隔5ms左右,严重影响了编程速度,因次I2C结构的EEPROM,提供了按页写入的方式。如图12,当地址写入并正确应答后,开始写入编程数据,和按字节写入不同,当一个字节写入完成后,写操作并没有停止,而是在应答后继续下一个字节的写入操作,直到一页完成,之后I2C经过停止(STOP)进入IDLE状态。此时,EEPROM启动内部编程,大约也是5ms左右。页的大小有8字节,16字节,32字节,64字节,128字节/页等几种。8字节的页,一次写入最多8个字节,64字节/页,一次可以写入64个字节,也写的内部编程大约也是5ms左右。由于采用页写入的方式,大大提高串行EEPROM的编程速度。

%title插图%num

图12 页写如顺序及应答

5. I2C EEPROM的读时序:

当前地址读:对当前地址进行操作不需要有写地址的操作,给出读命令,后紧跟就是当前地址对应的数据输出。如图13所示.

%title插图%num

图13 I2C 串行EEPROM当前地址读

    • 随机地址读:

由于随机地址读,就要有一个写入地址的过程,然后跟着读操作。如图14所示,无论当前地址读还是随机地址读,在DATA之后的应答阶段只要MASTER(MCU或FPGA)没有给出应答,在延时一个bit的时间间隔后就退出读过程.

%title插图%num

图 14 I2C 串行EEPROM随机地址读

    • 顺序读:

无论当前地址读还是随机地址读,在每个DATA n之后,MASTER给出应答,就可以连续读下一个字节的数据 DATA n+1….,在最后一个DATA读出之后的应答阶段MASTER没有给出低电平应答,就会进入STOP,停止读过程.如图15所示,

%title插图%num

图15 I2C 串行EEPROM顺序读

无论页写还是顺序读,EEPROM根据首地址会根据读写的推进,内部存储器的地址会自动加1。

 

Posted in FPGA, 存储器, 教材与教案, 文章, 资料区

发表评论

相关链接