当前位置:IT培训 > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > i2c协议的特点是什么,老司机带你深入了解
i2c协议的特点是什么,老司机带你深入了解
时间:2018-04-20作者:华清远见

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线(一根数据线SDA,一根时钟线SCL)即可在连接于总线上的器件之间传送信息。

在I2C总线中, 各部分器件如下:

主机初始化发送,产生时钟信号和终止发送的器件

从器件被主机寻址的器件

发送器发送数据到总线的器件

接收器从总线接收数据的器件

多主机同时有多于一个主机尝试控制总线但不破坏报文

仲裁是一个在有多个主机同时尝试控制总线,但只允许其中一个控制总线并使报文不被破坏的过程

同步两个或多个器件同步时钟信号的过程

主机用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主机寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。

I2C协议有如下几个特点:

1.在硬件上,I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺.因此I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为I2C芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用I2C可以很容易形成标准化和模块化,便于重复利用。

2.发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。

3. I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。

4. I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(可以从I2C器件的数据手册得知),主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I2C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。

I2C协议规定,总线上数据的传输必须以一个起始信号作为开始条件,以一个结束信号作为传输的停止条件。起始和结束信号总是由主设备产生。总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件;当SCL为高而SDA由低到高的跳变,表示产生一个停止条件。在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次处于空闲状态。

I2C的通讯都由主机发起,clk为高电平时,sda从高到低; 从器件发现这样一组信号,就认为主机要开始操作自己了,做好接收的准备工作。主机发送了开始位后,把clk拉低,只有clk拉低,sda才可以做高低变化; 当clk被拉高时,从器件就会去读取sda的高低电平值;clk再次被拉低时,从器件认为此位已读取完毕,认为是有效位,等待clk再次拉高,读取下一位。

主机发送完8位后,第9位是校验位,读取到低电平为有效;主设备把clk拉低,sdaio换成输入模式(上拉电阻,默认高电平)读取第9位,clk再次拉高,读取从设备发来的校验位。

如图所示时序图

i2c协议

对I2C总线的操作实际就是主从设备之间的读写操作。大致可分为以下三种操作情况:

第一种,主设备往从设备中写数据。数据传输格式如下:

i2c协议

第二种,主设备从从设备中读数据。数据传输格式如下:

i2c协议

第三种,主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据。数据传输格式如下:

i2c协议

第三种操作在单个主设备系统中,重复的开启起始条件机制要比用STOP终止传输后又再次开启总线更有效率。


发表评论

全国咨询电话:400-611-6270,双休日及节假日请致电值班手机:15010390966

在线咨询: 曹老师QQ(3337544669), 徐老师QQ(1462495461), 刘老师 QQ(3108687497)

企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300)

Copyright 2004-2018 华清远见教育科技集团 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号

有位老师想和您聊一聊