IIC通信协议
1、IIC总线有2条信号线,SCL(时钟线)和SDA(数据线)
2、总线空闲时为高电平
3、在标准的IIC普通模式下,数据的传输速率为100kbit/s,高速模式下可以达到400kbit/s
4、IIC所接的外围器件的数量 由IIC地址决定(如果是8位地址,减去1位读写位,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件)和电容负载决定的,电容量不能超过400pF
5、 IIC 总线信号:共有三种信号,即开始信号(S)、结束信号(P)和应答信号
开始信号:在SCL 串行时钟线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号,只有在起始信号以后,其他命令才有效。
结束信号:在SCL 串行时钟线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号,随着终止信号的出现,所有外部操作就结束。
应答信号:低电平时,规定为有效应答位(ACK);高电平时,规定为非应答位(NACK)。
SCL在高电平期间,SDA被从器件拉为低电平表示应答。
IIC主设备在写完一个字节数据(8位)后,从器件应该将SDA线拉低,主设备收到这个应答信号时才能继续发送下一个字节的数据;主设备在读从设备的数据时,如果不想从设备继续发送数据,可以发一个非应答信号,从设备就会停止数据发送。
6、IIC数据传输:
(1)IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变,只有在时钟线上的信号为低电平期间(SCL=0),数据线上的高电平或低电平状态才允许变化。
简而言之,SCL=1时, 数据线SDA的任何电平变换会看做是总线的起始信号或者停止信号,只有SCL=0时,才允许SDA数据进行电平转换
.
(2)输出到SDA线上的每个字节必须是8位,数据传送时,高位(MSB)在前,低位(LSB)在后,每次发送的字节数量不受限制,但是每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA=0,回传给主设备一个应答位ACK, 此时才认为一个字节真正的被传输完成 ;如果一段时间内没有收到从机的应答信号(SDA=1),则认为该数据接收不成功