I2C总线应用下的EEPROM测试
1 I2C总线的工作原理及其特点
I2C总线是一种用于IC器件之间连接的二线制总线,最早由Philips公司推出。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件,不管是单片机、存储器、LCD驱动器还是键盘接口。串行扩展总线有突出的优点,电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等。
采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。I2C总线接口电路结构如图1所示。
当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。在总线上,既没有中心机,也没有优先机。
在I2C总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑"与"完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状庙,于是这些器件将进入高电平等待的状态。
当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。在I2C总线技术规范中,开始和结束信号的定义如图2所示。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为"开始"信号;当SCL线为低电平时,SDA线发生低电平到高电平的跳变为"结束"信号。
I2C总线还具有广播呼叫地址用于寻址总线上所有器件的功能。若一个器件不需要广播呼叫寻址中所提供的任何数据,则可以忽略该地址不作响应。
I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性。
目前世界上采用的I2C总线有两个规范,它们分别是由荷兰PHILIPS公司和日本SONY公司提出的。现在广泛采用的是PHILIPS公司的I2C总线技术规范,它已成为被电子行业认可的总线标准。采用I2C技术的单片机以及外围器件已广泛应用于家用电器、通讯设备及各类电子产品中,而且应用范围将会越来越广。
2 IC总线应用下的EEPROH的测试方法
这里以常见的24LC02容量为2K的EEPROM芯片为例来详细介绍该总线方式下工作的EEPROM测试方法。
2.1 24LC02芯片特点
24LC02是台湾CERAMATE公司生产的容量为2Kbit的应用于I2C总线工作方式的EEPROM芯片,其芯片管脚定义如图3。
图中,A0、A1、A3为片选端,因为I2C总线最多可以挂接16Kbit的EEPROM,也就是说可以挂接8个24LC02芯片,其硬件地址就这三个片选端决定;WP是写保护端,在发送Word Address之前起作用。
24LC02在写入数据的时候有两种模式:Byte write和Page write,如图4。
以TESTER作为Master对24LC0写入数据,然后读取其数据验证与写入的数据是否一致。
对于24LC02的命令格式等细节,这里不再赘述,下面我们来看看24LC02的BLOCK DIAGRAM图6。
由此可知,在Byte write模式下,一次可写入8bit数据,而在Page write模式下一次可写入8bytes的数据。
2.2 24LC02的测试
根据I2C总线工作方式,我们将其测试图连接如图5。
芯片中的Start/stop Logic单元处理Start/Stop信号,控制芯片是否开始工作;S1ave address register&comparator单元译码Master发送的Slave address,完成与片选信号的比较,并设定write/read模式;Wordaddress counter单元管理要写入或读取的地址,地址由xdec和ydec单元译码成行地址和列地址,24LC02的EEPROMArray分为64行×4列字节单元。
这里我们对于一些简单的电流测试不再讨论,主要讨论功能测试。
根据以上分析,我们提出如下测试方法:
对芯片写入各种不同
- 利用数字示波器调试嵌入式I2C总线(10-03)
- 利用数字示波器调试嵌入式I2C(10-16)
- 基于MSP430F169的多路电阻测量系统设计(02-14)
- 采用数字示波器调试嵌入式I2C总线(07-02)
- 数字示波器的软硬件设计方案及经典应用案例汇总(08-01)
- I2C电平转换电路调试测试记录(01-12)