I2C总线应用下的EEPROM测试

发布者:RainbowMelody最新更新时间:2015-03-24 来源: elecfans关键字: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技术的单片机以及外围器件已广泛应用于家用电器、通讯设备及各类电子产品中,而且应用范围将会越来越广。[page]

  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列字节单元。[page]

  这里我们对于一些简单的电流测试不再讨论,主要讨论功能测试。

  根据以上分析,我们提出如下测试方法:

  对芯片写入各种不同的字节数据来验证读取到的数据是否和写入的一致:

  (1)每个字节写入随机码数据,这里随机码我们选择00~FF,共256 bytes,读取看与写入的是否一致

  如果该项测试通过,说明芯片基本上工作正常,但不能保证EEPROMArray(2Kbit)所有bit位都能正常写入数据。

  这里每个字节写入00-FF保证了写入每个word address的数据都不一样,其目的是验证Word address counter、xdec、ydec等单元是否能正常工作。
 

  假设我们这里每个字节写入相同的数据(如00或FF等),那么在这种情况下,要是Word address counter无法正常工作,那么我们写入或读取的可能是部分地址所指向的EEpromArray中的bit位,而且无法保证xdec和ydec能正常解码行地址和列地址,譬如说我们对“10101010”word address所指向的字节写入00,如果读取“101010”这个地址数据时,Word address counter、xdec、ydec任意单元发生了错误,那么最终我们读取到的数据就不是“10101010”这个地址所指向的字节数据,也就是说因为每个字节数据是一样的,所以即使写入和读取的地址发生了错位,我们也会认为测试是通过的。

  由此可见,要保证Word address counter、xdec、ydec等单元正常工作,我们写入的数据必须满足下列三个条件:

  ①写入EEPROM Array的每一行数据不一样(验证xdec单元);

  ②写入EEPROM Array的每一列数据不一样(验证ydec单元);

  ③写入EEPROM Array的每一个字节数据不一样(验证Word address counter单元);

  这就是我们选择写入00~FF的理由(当然也可以选择写入其他数据,只要符合上述最后一个条件即可)。

  (2)每个字节写入数据00,读取看是否与写入的一致

  通过上述第一项测试,其实已经可以基本保证芯片各单元能正常工作,接下来只需测试验证EEPROM Array(2Kbit)中的每个bit位是否良好,这里写入数据00,可排除EEPROM Array(2Kbit)中恒为“1”的bit位。

  (3)每个字节写入数据FF,读取看是否与写入的一致

  可排除EEPROM Array(2Kbit)中恒为“0”的b“位。

  (4)从00H地址开始写入4个字节55,接着写入4个字节AA,如此重复,直至写满256个字节,读取看是否与写入的一致。

  EEPROM Array中相邻bit位(包括行相邻、列相邻、对角线相邻)会互相影响。

  而24LC02的EEPROM Array分为4列×64行×8bit,所以我们写入上述的数据使得每个相邻bit位的数据都不一样,经过该项测试可排除相邻bit位的数据窜扰。最好是再测试一下写入4个字节AA,写入4个字节55……,看读取与写入的是否一致。

  到此我们完成了全部的功能测试。24LC02读写时有page write、byte write、random read、Sequentialread等各种工作模式以及writeprotect功能,这些测试都比较简单,这里就不再一一赘述了。

  3 由此,我们概括出EEPROM的一般测试方法:

  (1)每个字节写入random code,读取验证是否与写入时一致,从而测试Word address counter、xdec、ydec等单元是否能正常工作;Random code需要满足下面这个条件:写入EEPROMArray的每一个字节数据不一样。

  (2)每个字节写入数据00或FF,读取验证是否与写入时一致,排除EEPROM Array中恒“0”或恒“1”的bit位。

  (3)对EEPROM Array写入相邻bit位(包括行相邻、列相邻、对角线相邻)都不一样的数据,读取验证是否与写入时一致,排除相邻bit位的数据窜扰。

 

关键字:I2C总线  EEPROM测试 引用地址:I2C总线应用下的EEPROM测试

上一篇:例举CAN总线网络应用
下一篇:DDR3存储器接口控制器IP核在视频数据处理中的应用

推荐阅读最新更新时间:2024-05-02 23:33

I2C总线注意要点
1、只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL。   2、每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器。 3、在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL  线的时钟信号是低电平时才能改变。   4、SCL  线是高电平时,SDA  线从高电平向低电平切换,这个情况表示起始条件。 5、SCL  线是高电平时,SDA  线由低电平向高电平切换,这个情况表示停止条件。   6、数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放
[嵌入式]
STC15408AS单片机的EEPROM测试程序
我用的是4位595驱动的数码管作为数据显示; #include STC15w408as.H #include intrins.h #define U8 unsigned char #define U16 unsigned int #include EEPROM.H //这个文件在附件中可以下载 sbit DS=P1^2; //测试键 sbit SDA=P1^1; //595驱动数码管 sbit CLK=P1^0; sbit ST=P3^7; U8 shuzi ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管编码 void
[单片机]
基于I2C总线控制的音频处理电路设计
0 引 言 当前汽车音响与高保真的立体声音响系统中都包含了微处理器电路单元,这为实现音频处理提供了控制接口,可以通过控制接口实现许多需要的功能控制。作为音响系统主体的音频处理电路性能直接决定了整个音响系统质量,设计高性能的音频处理电路是该文的核心部分。 该设计的高性能音频处理电路基于I2C总线控制协议,包含输入多通道选择、音量控制、高低音音效处理、输出通道平衡度调整等功能,适合应用于高质量汽车音响、高保真收音机、彩电、家庭组合音响系统。 1 电路模块的设计 高保真音响系统的系统结构图如图1所示.其中音频处理电路的设计和功率放大器的设计往往是利用不同的芯片来完成的。 根据高保真立体声高级音响系统对
[单片机]
按平台模式设计的虚拟I2C总线软件包VIIC
摘要: VIIC是主方式下的虚拟I2C总线软件包,用于80C51系列单片机的单主系统中。只需两根普通I/O口线就可随时扩展I2C总线外围器件。将VIIC1.0装入程序存储器中,对其中的符号单元赋值后,使用三条通用操作命令就可实现任何I2C总线外围器件的应用程序设计。本文以VIIC为例,介绍应用软件形式的广义平台设计方法,给出VIIC1.0程序文本。按照这一思路,也可移植到其他系列的嵌入式系统中。 关键词: 平台模式虚拟I2C总线VIIC应用程序设计 一、 I2C总线及其虚拟应用 1. I2C总线应用呼唤平台模式     目前,单片机应用系统的外围扩展已从并行
[嵌入式]
基于I2C总线的PIC单片机端口扩展技术
1. 概述 随着单片机技术的发展,单片机在机电产品领域的应用越来越广泛。一方面,希望单片机构成的嵌入式系统功能尽可能强大,处理能力强,控制对象多;另一方面,又希望整个系统的成本尽可能低,即性价比好。因此,实际应用中经常会遇到单片机I/0接口资源不够用的情形,在一些较复杂的应用系统中,由于被控对象较多,如控制多个LED数码管的显示、超过30路状态的显示等,此时,端口供需矛盾尤其突出, 通常的解决方法是采用8155 , 8255 , 8259 , 74HC164,74HC165,74LS373 及74LS245 等外扩I/0 接口, 这样必然会使系统更加复杂, 成本增加, 可靠性下降。 目前,功能较强的单片机中大多采用了FLAS
[单片机]
基于<font color='red'>I2C总线</font>的PIC单片机端口扩展技术
采用I2C总线的ADS1100型16位模/数转换器的设计
  ADS1100是采用2.7V~5.5V单电源供电的连续自校准模/数(A/D)转换器。它具有分辨率、接口简单、比例放大、功耗低、体积小等优点。ADS1100采用电源电压为基准电压,可按比例进行A/D转换,同时带有差分输入且具有高达16位的分辨率。   ADS1100每秒可采样8、16、32或128次以进行A/D转换,并提供I2C端口与外部通信。片内可编程增益放大器(PGA)能提供高达8倍的增益,允许对小信号进行测量。ADS1100有二种工作方式:单周期转换方式和连续周期转换方式。在单周期转换方式中,ADS1100进行一次A/D转换后将自动掉电以减少电流消耗。   ADS1100的主要特点如下:   ·16位无漏码;   ·可
[单片机]
采用<font color='red'>I2C总线</font>的ADS1100型16位模/数转换器的设计
一种基于I2C总线的新型可编程增益放大电路的设计
  在各类遥感遥测系统中,模拟信号的动态范围通常都很大,一般在几mV至几十V范围内(动态范围可达80_90db),有的甚至是几pV_几百V(动态范围可达160db以上)。而且信号的干扰源多,有时甚至掩盖掉有用信号,很难辨识是有用信号还是干扰信号。此外,不同的材料、形状、尺寸,不同的类型,不同的测量速度,得到的信号频谱不同,受干扰信号的特点也不同。对这样的信号进行采集处理,为保证精度,检测系统首先需要对大动态模拟信号的动态范围进行压缩,即对mV甚至pV级的信号进行放大,对几十V甚至几百V的信号进行衰减,将信号的变化幅度调整到A/电路所需要的范围。针对这一问题,本文提出了一种基于I2C总线的新型可编程增益放大器的设计方法,可根据输入的
[电源管理]
一种基于<font color='red'>I2C总线</font>的新型可编程增益放大电路的设计
I2C总线协议程序(80c51)
I2C总线协议程序 在做程序是我在网上找的是周立功的程序,感觉还不错顺便转载;在使用的过程中一定要注意时序、时间的问题。 i2c.c /* I2C.c 标准80C51单片机模拟I2C总线的主机程序 Copyright (c) 2005,广州周立功单片机发展有限公司 All rights reserved. 本程序仅供学习参考,不提供任何可靠性方面的担保;请勿用于商业目的 */ #include I2C.h //定义延时变量,用于宏I2C_Delay() unsigned char data I2C_Delay_t; /* 宏定义:I2C_Delay() 功能:延时,模拟I2C总线专用 */ #define I2C_Delay()
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved