在I2C总线上可以挂接许多类型的外围器件,例如AT24Cxx系列EEPROM、日历时钟芯片PCF8563、RAMPCF8571、I/O口PCF8574、A-D与D-A转换器PCF8591以及点阵式LCD驱动控制器模块PCF8578等。许多DSP控制器具有I2C总线接口,使用非常方便。一些没有I2C总线接口的器件,也可以可采用软件模拟I2C总线。
例13-1 通过I2C总线扩展EEPROM串行存储器AT24Cxx。
(1)AT24C系列EEPROM的特点
AT24Cxx EEPROM的特点是单电源供电,工作电压范围宽1.8~5.5V,低功耗CMOS技术(100kHz,2.5V和400kHz,5V兼容),页面写周期的典型值为2ms,具有硬件写保护。几种不同型号AT24Cxx的参数见表13-6。表中寻址字节的1010表示器件为存储器,A2A1A0为对应引脚的片选地址,为读写控制位。
表13-6 AT24C系列串行EEPROM参数
(续)
AT24Cxx的引脚如图13-17所示,其中SCL为串行时钟端。SDA为串行数据端。WP为写保护,当WP为高电平时存贮器只读;当WP为低电平时存贮器可读可写。A0、A1和A2为多片存储器片选引脚,可以连接到电源Vcc或地Vss。
SDA为漏极开路端,需接上拉电阻。输入端内接有滤波器,能有效抑制噪声。自动擦除在每一个写周期内完成。
图13-17 AT24Cxx的引脚
AT24Cxx通过I2C接口与DSP或微控制器连接。DSP或微控制器作为主器件,串行EE⁃PROM为从器件。二者都可以工作于接收器和发送器状态。主器件产生串行时钟(SCL),控制总线的传送方向,并产生开始和停止条件。
(2)AT24C系列EEPROM接口及地址选择
由于I2C总线可挂接多个串行接口器件,在I2C总线中每个器件应有唯一的器件地址,按I2C总线规则,器件地址为7位(即一个I2C总线系统中最多可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。器件寻址字节中的最高4位(D7~D4)为器件型号地扯,不同的I2C总线接口器件的型号地址是厂家给定的,如AT24C系列EEPROM的型号地址皆为1010,器件地址中的低3位为引脚地址A2A1A0,对应器件寻址字节中的A3A2A1位,由连接的引脚电平给定。
对于EEPROM的容量小于256B的芯片(AT24C01/02),8位片内寻址(A0~A7)即可满足要求。对容量大于256B的芯片,8位片内寻址范围不够,如AT24C16,相应的寻址位数应为11位(211=2048)。若以256B为1页,则多于8位的寻址视为页面寻址。在AT24C系列中,对页面寻址位采取占用器件引脚地址(A2~A0)的办法,如AT24C16将A2AlA0作为页地址。凡在系统中引脚地址用作页地址后,该引脚在电路中不得使用,作悬空处理。
(3)AT24C系列EEPROM读写操作
对AT24C系列EEPROM的读写操作完全遵守I2C总线的规则。
连续写操作是对EEPROM连续装载n个字节数据的写入操作,n随型号不同而不同,一次可装载的页面字节数参见表13-6。SDA线上连续写操作的数据状态如下所示,S表示启动位START,A表示ACK应答位,P为停止位STOP。(www.daowen.com)
AT24C系列片内地址在接收到每一个数据字节地址后自动加1,故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于规定的最多字节数,数据地址将自动翻页,新页中以前的数据被覆盖。
连续读操作时,为了指定首地址,需要“伪字节写”来给定器件地址和片内地址,重复一次启动信号和器件地址,就可读出该地址的数据。由于“伪字节写”中并未执行写操作,因此地址没有加1。以后每读取一个字节,地址自动加1。在读操作中,接收器接收到最后一个数据字节后不返回应答(保持SDA高电平),随后发停止信号。SDA上连读操作的数据状态如下所示。
(4)28035和串行EEPROM接口电路
图13-18为28035与4K位(512 B)的AT24C04串行EEPROM的连接电路。GPIO29/SCLA、GPIO28/SDAA分别连接AT24C04的时钟SCL和数据端SDA,A2~A0内部无连接,为无关位。WP为EEPROM的写保护信号,高电平有效。为了进行写入操作,应把它接低电平。
(5)软件设计
//连接到I2C总线的外部EEPROM的地址为0x50
图13-18 28035与AT24C04的连接
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。