IIC总线通信协议

版权声明:本人博客内容均为自己学习总结和参考使用,不用做商业用途,转载请注明出处。 https://blog.csdn.net/bornpride/article/details/87893455

一、概述

IIC(Inter-Integrated Circuit)总线是由飞利浦(PHILIPS)公司开发的两线式串行总线,多用于连接微处理器及其外围芯片。I2C总线的主要特点是接口方式简单,两条线可以挂多个参与通信的器件,即多机模式,而且任何一个器件都可以作为主机,当然同一时刻只能有一个主机。
1、从原理上来讲,IIC属于同步通信,SCL时钟线负责收发双方的时钟节拍,SDA数据线负责传输数据。IIC的发送方和接收方都以SCL这个时钟节拍为基准进行数据的发送和接收。
2、从应用上来讲,I2C多用于板内通信,比如单片机和EEPROM等外围芯片之间的通信。

二、IIC时序

在硬件上,IIC总线是由时钟总线SCL和数据总线SDA两条线构成,连接到总线上的所有器件的SCL都连到一起,所有SDA都连到一起。IIC总线是开漏引脚并联的结构,因此我们外部要添加上拉电阻。对于开漏电路外部加上拉电阻,就组成了线“与”的关系。总线上线“与”的关系就是说,所有接入的器件保持高电平,这条线才是高电平,而任何一个器件输出一个低电平,那这条线就会保持低电平,因此可以做到任何一个器件都可以拉低电平,也就是任何一个器件都可以作为主机,如图1所示,在电路中添加了R63和R64两个上拉电阻,常用的上下拉电阻值大多选取在1K到10K之间,具体到底多大通常要根据实际需求来选,通常情况下在标准范围内就可以了,不是一个固定的值。在实际的应用中,对于5V系统的单片机,通常选择4.7KΩ的电阻作为上拉电阻;对于3.3V系统的单片机,通常选择10KΩ的电阻作为上拉电阻。

IIC总线的上拉电阻电路

图1 IIC总线的上拉电阻电路
虽然说任何一个设备都可以作为主机,但绝大多数情况下我们都是选择单片机来做主机,而总线上挂的多个IIC元件。每一个元件都像电话机一样有自己唯一的地址,在信息传输的过程中,通过这唯一的地址就可以正常识别到属于自己的信息。
IIC分为起始信号、数据传输部分、停止信号。其中,数据传输部分,可以一次通信过程传输很多个字节,字节数是不受限制的,而每个字节的数据最后也跟了一位,这一位叫做应答位,通常用ACK表示。 IIC每次通信时,不管是发送还是接收,SCL和SDA两条线都必须都参与工作才能完成。下面结合图2的时序流程图来介绍IIC串口数据通信的过程。

IIC时序流程图

图2 IIC时序流程图

1、起始信号:IIC通信的起始信号的定义是SCL为高电平期间,SDA由高电平向低电平变化产生一个下降沿,表示起始信号,如图2中的Start部分所示。
2、数据传输:(1)IIC通信是高位在前,低位在后。 (2)IIC没有固定波特率,但是有时序的要求,要求当SCL在低电平的时候,SDA允许变化,也就是说,发送方必须先保持SCL是低电平,才可以改变数据线SDA,输出要发送的当前数据的一位;而当SCL在高电平的时候,SDA绝对不可以变化,因为这个时候,接收方要来读取当前SDA的电平信号是0还是1,因此要保证SDA的稳定,如图2中的每一位数据的变化,都是在SCL的低电平位置,8位数据位后边跟着的是一位应答位。
3、停止信号:IIC通信停止信号的定义是SCL为高电平期间,SDA由低电平向高电平变化产生一个上升沿,表示结束信号,如图2中的Stop部分所示。

三、IIC寻址模式

1、IIC通信在字节级的传输中,也有固定的时序要求。I2C通信的起始信号(Start)后,首先要发送一个从机的地址,这个地址一共有7位,紧跟着的第8位是数据方向位(R/W):
0”表示接下来要发送数据(),
1”表示接下来是接收数据()。
2、我们知道,打电话的时候,当拨通电话,接听方捡起电话肯定要回一个“喂”,这就是告诉拨电话的人,这边有人了。同理,这个第九位ACK实际上起到的就是这样一个作用。当我们发送完了这7位地址和1位方向后,
如果发送的这个地址确实存在,那么对应这个地址的元件应该回应ACK(拉低SDA即输出“0”),
如果发送的这个地址不存在,那么对应这个地址的元件就不会回应ACK(SDA将保持高电平即“1”)。

四、IIC通信速度

IIC通信分为低速模式100kbit/s、快速模式400kbit/s和高速模式3.4Mbit/s。因为所有的I2C器件都支持低速,但却未必支持另外两种速度,所以作为通用的IIC程序,选择100kbit/s这个速率来实现,也就是说实际程序产生的时序必须小于等于100kbit/s的时序参数,所以在程序中通过插入总线延时函数,来达到这个速度限制。如果以后需要提高速度,那么只需要减小这里的总线延时时间即可。

猜你喜欢

转载自blog.csdn.net/bornpride/article/details/87893455