1. 基本信息
同步,半双工
两根通信线:SCL,SDA
带数据应答
支持总线挂载多设备(一个主机多个从机,主机仲裁)
2. 硬件电路
所有IIC设备的SCL连在一起,SDA连在一起,主机控制SCL,只有当主机需要读取数据时,从机才短暂获得SDA的控制权
SCL和SDA均配置为开漏输出模式,正常输入
SCL和SDA均有一个上拉电阻,在4.7KΩ左右
缺点:高电平的驱动能力弱
IIC的标准模式,只有100KHz的时钟频率;
快速模式,只有400KHz的时钟频率;
高速模式,3.4MHz
3. 软件
① 起始条件:
SCL保持高电平,SDA从高电平到低电平(下降沿);
② 终止条件:
SCL保持高电平,SDA从低电平到高电平(上升沿);
③ 发送数据:
SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节
④ 接收数据:
SCL低电平期间,从机将数据位依次放到SDA线上(高位先行), 然后释放SCL, 主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA,输入模式)
应答机制:
⑤ 发送应答:
主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答;
⑥ 接收应答:
主机在发送完一个字节之后,在下一个时钟接收一个数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA);
时序说明
① 指定地址写:对于指定设备(Slave address),在指定地址下(reg address),写入指定数据(data)
S+从机地址(7bits)+R/W(1/0)+AC(应答)+寄存器地址(8bits)+AC+Data+AC+P
② 当前地址读:对于指定设备(Slave address), 在当前地址指针指示的地址下,读取从机数据(Data)
S+从机地址+R/W+AC+Data+SA(发送非应答,从机交出控制权)+P
③ 指定地址读:对于指定设备(Slave address),在指定地址下(reg address),读取指定数据(data)
S+从机地址(7bits)+R(1)+AC(0)+Sr(Start repeat)+从机地址(7bits)+R/W(1/0)+AC(应答)+寄存器地址(8bits)+AC+Data+SA+P