IIC总线的一些基础知识
一、IIC总线的特点
1、IIC是时钟同步的模式。
2、IIC是主从结构,一个主设备控制多个从设备。
3、IIC数据流是串行的。
4、IIC总线通信是半双工模式。
5、每个从设备有唯一的地址。
二、IIC总线的信号线路
1、IIC总线有两根公共的线路:
SDA(数据)和SCL(时钟)两条线。
2、所有设备并联在这两根线路两端。
3、完整的线路:
需要4根电线:
vcc正极:给设备供电。
gnd公共地:构成闭合回路。
sda数据线:传输脉冲方波数字信号。
scl时钟线:传输周期性的方波。
4、默认用电阻把sda数据线和scl时钟线上拉到高电位。
5、时钟信号是主设备负责提供。
三、IIC数据传输格式
(一)开始通信
每次通信由主设备发起。
具体方式:
当时钟线SCL的方波是高电平时,把SDA数据线的电平由高设为低。
(二)寻找从设备
主设备发送地址帧给所有的从设备,当某个从设备的地址匹配地址帧中的地址,就进行应答。
其他地址不匹配的从设备保持静默。
地址帧的格式:
从机地址(7位或10位比特)
读写方向(1位比特,值为0是主机写,1是主机读)
(三)从机应答
某个从设备自身的地址匹配地址帧,就进行应答。
应答的方式:
在时钟线高电平时,拉低SDA数据线的电平,表示收到地址。
(四)数据发送
如果是主机输出或者从机输出,都要有下列规则:
1、输出方发送1个字节
格式如下:
8位字节比特(从高位到低位依次发送)
2、接收方回复一个应答位
也就是接收方拉低一次SDA数据线的电平。
(五)停止通信
由主设备发起结束通信。
当时钟SCL信号处在高电平时,主设备把SDA数据线的电平由低变高。
四、主要疑问
1、主设备发起开始通信时,数据线SDA要拉低保持多长时间?
需要保持一个时钟周期。
2、发出应答信号,需要拉低SDA数据线保持多久?
需要保持一个时钟周期。
3、主设备发出结束通信时,需要把SDA拉高多久?
结束通信时,SCL时钟线和SDA数据线一直保持高电平,直到下次重新开始通信。
4、数据比特的电平和开始、结束信号的电平区别?
数据比特的电平在时钟信号的高电平期间保持稳定不变。
开始和结束信号在时钟信号高电平期间会发生一次电平跳变。
