物理结构
IIC一共有只有两个总线: 一条是双向的串行数据线SDA,一条是串行时钟线SCL
IIC是半双工,而不是全双工
主设备控制时钟线,可以多个主设备但是不可以同时为主设备
软/硬件IIC
协议层
空闲状态
SDA和SCL两根线均是高电平
开始信号
SCL为高电平,SDA从高电平跳转到低电平(即下降沿),表示通信开始。
结束信号
SCL为高电平,SDA从低电平跳转到高电平(即上升沿),表示通信介绍。
应答信号
发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位)表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。
对于反馈有效应答位ACK的要求是,接收器在第九个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平
如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。
数据的有效性
IIC总线进行数据传输时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。SDA数据线在SCL的每个时钟周期传输一位数据。(即:数据在SCL的上升沿到来之前就需准备好。并在下降沿到来之前必须稳定)