串行、同步、半双工
主要用于近距离、低速的芯片之间的通信
两根双向的信号线SDA数据线和SCL时钟线
上拉电阻作用:控制总线空闲时为高电平
IIC总线上可以连接多个器件,分为主机和从机
主机有权发起和结束一次通信,而从机只能被主机呼叫。当多个主机同时启用总线进行IIC通信时,IIC具备冲突检测和仲裁的功能来防止错误产生。
每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机)
1、此时总线被占用,不会有别的主机启用总线
2、该字节包括想要通信的七位从机地址,加上一位传递方向(0为主->从,1为从->主)
3、告诉主机该从机存在并且可开始传递信息
4、第一个字节(2)一定是主机发给从机的后续的这些不一定
5、每个字节都要回应
n、表示通信结束,其他主机也可以启用总线了
起始信号与停止信号
空闲时SCL和SDA都是高电平
SCL为高电平时,SDA由高变低表示起始信号
SCL为高电平时,SDA由低变高表示停止信号
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态
停止信号产生后总线处于空闲状态
字节传送与应答
IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位
同步信号
IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线SDA上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线SDA上的信号不允许发生变化,必须保持稳定
典型IIC时序
主机向从机发送数据
从机向主机发送数据
主机先向从机发送数据,然后从机再向主机发送数据。必须重新发送起始信号开始,中间不会有终止信号P,从而使得总线不会被其他设备占用。
注:阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送;A表示应答, A非表示非应答,S表示起始信号,P表示终止信号