什么是iic:
iic总线是一种串行、半双工总线通讯协议。
它有两根双向信号线 时钟线scl和数据线sda ,时钟线使通讯双方的时钟同步,数据线用来传输数据。
主要用于近距离低速的芯片之间的通讯,成百上千米远距离的通讯不行,抗干扰能力差,它的成本低,结构简单。
iic总线是多主机总线(主机:但是在同一时刻只能有一个主机)每一个器件都有一个唯一地址(地址:目前大多是7bit,也可以是10bit)。前七位代表器件唯一地址,第八位代表方向。0:代表主机向从机传输数据,1:代表从机向主机传输数据
传输数据的大概流程:
1、主机发送起始信号启用总线
2、主机发送一个字节指明从机地址和传输方向
3、被寻址的从机发送应答信号回应
4、发送器向数据线发送一个字节数据
5、接收器发送应答应答信号回应
6、主机发送停止信号
注意:无论是主机向从机发送数据,还是从机向主机发送数据,发送数据的第一个字节都是主机向从机发送(表明地址和方向)。
iic每次发送数据都是以字节为单位,数据发送时先发高位,后发低位,接收器的应答信号是:从机数据线由高电平1变为低电平0. 发送一个字节为8为,应答信号为1位,所以一帧是9位
iic总线空闲时两条线都是高电平
起始信号:时钟线为高电平,数据线由高电平到低电平
停止信号:时钟线为高电平,数据线由低电平到高电平
注意:起始信号和停止信号都是由主机发出的。
时钟线的作用
在进行数据传输时:1、时钟线为低电平,发送器向数据线上发送一位(bit)数据,数据允许改变 2、时钟线位高电平,接收器从数据线上读取一位(bit)数据,数据不允许改变
时钟线的本质: 就是告诉接收器和发送器什么时候接收数据和发送数据