串行半双工,每个IIC器件都有一个地址, i2C总线在IC之间进行双向数据传送,典型速度100Kbit/S,快速模式达400Kbit/S,后来增加了高速模式达3.4Mbit/S。
它只有两根双向信号线。一根是数据线SDA(serial data I/O),另一根是时钟线SCL(serial clock)。
1 数据位的有效性规定:
SCL为高电平期间,数据线上的数据必须保持稳定,只有SCL信号为低电平期间,SDA状态才允许变化。如图所示
10位I2C总线可以挂接更多的10位I2C设备.
2.I2C的起始和终止信号
SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;
SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号;
3.I2C字节的传送与应答
数据传送时高位在前,低位在后,每次传送的字节数目没有限制。传输操作启动后主控制器件传输的第一字节是地址,其中前面7位指出与哪一个器件进行通信,第8位指出数据传输的方向(发送还是接收)。
为了完成一字节的传送,接收方应该发送一个确认信号ACK给发送方,ACK信号出现在SCK线的第9个时钟脉冲上,有效应答ACK在SDA上呈现低电平,如图。
主控制器件在接收了来自从器件的字节后,如果不准备终止数据传输,他将会发送1个ACK信号给从器件。从器件在其接收到来自主控制器件的字节时,总是发送1个ACK信号给主控制器件,如果从器件还没有准备好再次接收,它可以保持SCK位低电平(总线处于等待状态),直到它准备好为止。
时序的要求
- 当 SCL 在低电平的时候, SDA 允许变化,也就是说,发送方必须先保持 SCL 是低电平,才可以改变数据线 SDA,输出要发送的当前数据的一位;
- 当 SCL 在高电平的时候, SDA 绝对不可以变化,因为这个时候,接收方要来读取当前 SDA 的电平信号是 0 还是 1,因此要保证 SDA 的稳定,
4.应答位的作用
主机在发送数据时,每次发送一字节数据,都需要读取从机应答位,当从机空闲可以接收该字节数据时,从机会发出应答(一帧数据的第9位为“0