1. 概述
读法:
常用:I方C 标准:I square C
I2C 总线是Philips(现NXP)公司推出的一种用于IC器件之间连接的2线制船型扩展总线。通过2条信号线(SDA:串行数据线;SCL:串行时钟线)连接到总线上的器件之间传送数据,所有连接在总线上的I2C器件都可以工作于发送方式或接收方式。
I2C总线的SDA和SCL是双向I/O线,必须通过上拉电阻接到正电源,当总线空闲时,2线都是“高”。所有连接在I2C总线上的器件引脚必须是开漏或集电极开路输出,即具有“线与”功能。
2. I2C总线的数据传送
2.1 数据位的有效性规定
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
2.2起始和终止信号
I2C总线规定,当SCL为高电平时,SDA的电平必须保持稳定不变的状态,只有当SCL处于低电平时,才可以改变SDA的电平值,但起始信号和停止信号是特例。因此,当SCL处于高电平时,SDA的任何跳变都会被识别成为一个起始信号或停止信号。
2.3 数据传送格式
2.3.1字节传送与应答
在I2C总线的数据传输过程中,发送到SDA信号线上的数据以字节为单位,每个字节必须为8位,而且是高位(MSB)在前,低位(LSB)在后,每次发送数据的字节数量不受限制。但在这个数据传输过程中需要着重强调的是,当发送方发送完每一字节后,都必须等待接收方返回一个应答响应信号。
2.3.2总线的寻址
- DA3~DA0:4位器件地址是I2C总线器件固有的地址编码,器件出厂时就已给定,用户不能自行设置。
- A2~ A0:3位引脚地址用于相同地址器件的识别。若I2C总线上挂有相同地址的器件,或同时挂有多片相同器件时,可用硬件连方式对3位引脚A2~A0接Vcc或接地,形成地址数据。
- R/W:数据传送方向。 R/W=1时,主机接收(读);R/W =0,主机发送(写)。
主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据 位将自己确定为发送器或接收器。
2.3.3数据帧格式
a) 主机向从机写数据
- 主机产生起始信号S。
- 主机发送寻址字节SLAVE ADDRESS,其中的高7位表示数据传输目标的从机地址;最后1位是传输方向位,此时其值为0,表示数据传输方向从主机到从机。
- 当某个从机检测到主机在I2C总线上广播的地址与它的地址相同时,该从机就被选中,并返回一个应答信号A。没被选中的从机会忽略之后SDA上的数据。
- 当主机收到来自从机的应答信号后,开始发送数据DATA。主机每发送完一个字节,从机产生一个应答信号。如果在I2C的数据传输过程中,从机产生了非应答信号/A,则主机提前结束本次数据传输。
- 当主机的数据发送完毕后,主机产生一个停止信号结束数据传输,或者产生一个重复起始信号进人下一次数据传输。
b) 主机从从机读数据
- 主机产生起始信号S。
- 主机发送寻址字节SLAVE ADDRESS,其中的高7位表示数据传输目标的从机地址;最后1位是传输方向位,此时其值为1,表示数据传输方向由从机到主机。寻址字节SLAVE ADDRESS发送完毕后,主机释放SDA(拉高SDA)。
- 当某个从机检测到主机在I2C总线上广播的地址与它的地址相同时,该从机就被选中,并返回一个应答信号A。没被选中的从机会忽略之后SDA上的数据。
- 当主机收到应答信号后,从机开始发送数据DATA。从机每发送完一个字节,主机产生一个应答信号。当主机读取从机数据完毕或者主机想结束本次数据传输时,可以向从机返回一个非应答信号A,从机即自动停止数据传输。
- 当传输完毕后,主机产生一个停止信号结束数据传输,或者产生一个重复起始信号进入下一次数据传输。
c) 主机和从机双向数据传送
? ?在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。
3.传输速率
? ?I2C的标准传输速率为100Kbps,快速传输可达400Kbps。目前还增加了高速模式,最高传输速率可达3.4Mbps。
|