IIC(Inter-Integrated Circuit)即集成电路总线,是一种多主从的串行总线,属于半双工同步传输类型总线,仅使用两条线,一条SCL时钟线,一条双向数据线SDA。以下是对IIC通信波形图的详细解读:
信号状态
- 空闲状态:SDA和SCL两条信号线同时处于高电平时,为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
- 起始信号:当SCL线为高电平时,SDA线从高电平向低电平切换,该信号由主机发出,起始信号产生后,总线被占用,准备数据传输。
- 停止信号:当SCL线为高电平时,SDA线由低电平向高电平切换,由主机发出,停止信号发出后,总线变为空闲状态。
数据传输
- 数据有效性:在IIC总线进行数据传送时,时钟信号SCL为高电平期间,数据线上的数据必须保持稳定,只有在SCL线的时钟信号为低电平时,数据线上的高电平或低电平状态才允许变化。数据在SCL的上升沿到来之前就需准备好,并在下降沿到来之前保持稳定。
- 数据位传输:在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据,数据位的传输是边沿触发。
应答信号
- 有效应答(ACK):发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。当接收器在第9个时钟脉冲之前的低电平期间将SDA拉低,并且确保在该时钟的高电平期间为稳定的低电平时,规定为有效应答位,表示接收器已经成功地接收了该字节。
- 非应答(NACK):应答信号为高电平时,规定为非应答位,一般表示接收器接收该字节没有成功。
读写操作波形示例
- 写操作:主机发送一个启动开始标志,接着发送从机地址,地址的最后一位(R/W位)设置为0,表示写入。从设备发送ACK响应确认后,主设备发送希望写入的寄存器地址。从设备再次确认后,主机开始向从机发送寄存器数据,直到发送完所有需要的数据,最后主机发送停止条件终止传输。
- 读操作:主机先发送起始信号,然后发送从机地址(R/W位为1表示读操作),从机应答后,主机再发送要读取的寄存器地址。之后主机再次发送起始信号,重新发送从机地址(R/W位仍为1),从机应答后开始发送数据,主机接收数据,在接收完最后一个字节数据后,主机发送非应答信号(NACK),然后发送停止信号结束本次读操作。