IIC具有两根总线:SCL、SDA
串行半双工通信
一、通信过程:
1、主机发送起始信号启用总线。
2、主机发送1byte实现器件寻址和要执行的命令。
在这1byte中,高七位表示从机的地址,最低位表示要执行的命令;1表示读操作,0表示写操作。
3、被选中的器件作为从机发送应答信号给主机。
4、发送器发送数据给接收器。
5、接收器发送应答给发送器‘。
(循环第四、第五个步骤,此过程不能改变收发方向,若需改变方向,需要主机重新启动总线并发送命令。即再次执行第一、第二个步骤)
主机和从机哪个是接收器和发送器取决于第二步主机发送的命令、该命令最低位为1,主机为接收器,最低位为0,主机为发送器。
6、发送停止信号,关闭总线。
二、相关时序
空闲状态:SCL、SDA均为高电平
开始信号:SCL高电平期间,SDA由高变低
停止信号:SCL高电平期间,SDA由低变高
字节的传送与应答:先传高位后传低位,发送器在发送完1byte数据后,接收器必须要发送应答信号来回应。
SCL高电平:SDA线上的状态不允许改变,因为此时接收器会读取SDA的状态,若SDA会被,会导致传输结果错误。
SCL低电平:SDA线上的状态允许改变,此时接收器不读取SDA的状态。