Ⅰ、简介
I2C(Inter-Integrated Circuit)总线是一种由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发。
由于其简单性,如今方泛用于微控制器与各种功能模块的连接,可以说是学单片机的人,入门之后,必定要涉及到的。
I2C 总线实际上已经成为一个国际标准在超过100 种不同的IC 上实现,而且得到超过50 家公司的许可,正因为其简单和应用广泛,因此其功能也越来不满足人们的要求,其速度也从原来的100Kbit/S,增加了快速模式,其速度达400Kbit/S,再后来也增加了高速模式,其速度更达3.4Mbit/S。
Ⅱ、功能和特点
I2C总线是一种用于IC器件之间连接的双向二线制总线,所谓总线它上面可以挂多少器件,并且通个两根线连接,占用空间非常的小,总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。
它的另一优点是多主控,只要能够进行接收和发送的设备都可以成为主控制器,当然多个主控不能同一时间工作。
I2C总线有两根信号线,一根为SDA(数据线),一根为SCL(时钟线),任何时候时钟信号都是由主控器件产生。
I2C总线在传送数据的过程中,主要有三种控制信号:起始信号,结不信号,应答信号。
起始信号:当SCL为高电平时,SDA由高电平转为低电平时,开始传送数据;
结束信号:当SCL为高电平时,SDA由低电平转为高电平时,结束数据传送;
应答信号:接收数据的器件在接收到8bit数据后,向发送数据的器件发出低电平信号,表示已收到数据。这个信号可以是主控器件发出,也可以是从动器件发出。总之由接收数据的器件发出。
这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。
Ⅲ、基本操作
下面我们以ATMEL公司的AT24C02来介绍I2C的基本操作。
AT24C02是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含256×8bit存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。他在系统中始终为从动器件。
对AT24C02的操作主要有:字节读,字节写,页面读,页面写
首先发送起始信号,如下图,起始信号后必须是控制字。
控制字格式如下,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,也就是三个地址位,最后一位为读写控制位,当为1(Input)时为读操作,为0(Output)时为写操作。
控制字后就是相应的操作,读或写,一定不要结束,因为这个操作还没有完成,如果结束就等于放弃操作。
先来看写操作,写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同,AT24C02为8字节,每写一个字节后,地址自动加1。
关于页面写的地址、应答和数据传送的时序参见图3,字节写可以看成是只有一个字节的页面写,也就是写一个数据后停止。
注意:写一次需要一定时间,一般为10ms,要等侍这个操作完成,时序如下图。
说明:对于AT24C02,在控制字后还必须写入地址,这个地址是以后读写的起始地址。
读操作有三种基本操作:当前地址读、随机读和顺序读。三种操作方法类似,只是读的数据个数不同,可连续读8个字节,图4给出的是顺序读的时序图,图中共读了四个数据,需要注意的是当前的地址,如果不是想要的,可以用写操作,重新写入地址。
非常重要的是,每读一个数据后,必须置低SDA,作为应答,否则,只能读一个数据,后面的数据,因为收到不应答信号,AT24C02就会认为出错,停止操作。
特别提醒的是,当SCL为低电平时,数据是可变的,因些只有SCL为高电平时,才能读数。
Ⅳ、例程序(51汇编,测试单片机为AT89C51,12M晶振)
电路连接如图5,其中A0,A1,A2为地址线,本例中全部接地,因此全部为0。由于SCL和SDA为漏极开路输出,所以在使用时,需加上拉电阻。
五、结束语
在I2C总线的应用中应注意的事项总结为以下几点 :
●严格按照时序图的要求进行操作;
●若与口线上带内部上拉电阻的单片机接口连接,可以不外加上拉电阻;
●程序中为配合相应的传输速率,在对口线操作的指令后可用NOP指令加一定的延时;
●为了减少意外的干扰信号将EEPROM内的数据改写可用外部写保护引脚(如果有),或者在EEPROM内部没有用的空间写入标志字,每次上电时或复位时做一次检测,判断EEPROM是否被意外改写。
免责声明: 本文章转自其它平台,并不代表本站观点及立场。若有侵权或异议,请联系我们删除。谢谢! Disclaimer: This article is reproduced from other platforms and does not represent the views or positions of this website. If there is any infringement or objection, please contact us to delete it. thank you! |