IIC是串行半双工同步总线
I2C总线为两线制,只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL,IIC总线外接两个上拉电阻作用:在总线处于空闲状态,总线处于高电平状态
IIC总线硬件连接
1、IIC总线支持多主机多从机模式,在同一时刻,只能一个主机和一个从机进行通讯
2、在实际使用过程中,大部分使用单主机多从机模式
3、挂接到IIC总线上的每一个从机设备,都有自己唯一的7位从机地址
4、发送器:向数据线上写入数据, 接收器:从数据线上读取数据
5、主机:主动向数据线上发起数据(起始信号,停止信号), 从机只能被动从总线上接收数据
6、时钟线只能由主机产生,作用给从机完成数据收发同步
IIC时序
起始信号
1、起始信号:在SCL为高电平期间,数据线从高电平到低电平的变化(下降沿)
2、起始信号和停止信号都是由主机产生
3、起始信号产生之后总线处于占用状态
4、停止信号产生之后总线处于空闲状态
停止信号
停止信号:在SCL为高电平期间,数据线从低电平到高电平的变化(上升沿)
数据传输信号
在SCL为高电平期间,总线上数据保持稳定,所以接收器可以从数据线上读取数据
在SCL为低电平期间,总线上数据允许发生变化,所以发送器可以向数据线上写入数据
应答信号
1、每一个字节传输必须保证8位长度(1字节=8位),先传输高位,在发送低位
2、每传输8位数据位之后,必须跟随应答信号,一帧数据 = 8位数据位 + 1位应答信号 = 9位
3、发送器发送8位数据位之后,在第9个时钟周期,接收器向数据线上写入应答信号或者非应答信号
在第9个时钟周期,发送器从数据线上,读取数据
读0:接收器返回应答信号
读1:接收器返回非应答信号
寻址
1、IIC总线进行数据传输是广义的,既可以传输数据,也可以传输地址
2、寻址过程 = 7位从机地址 + 读写位 = 8位,读:1 写:0
3、在起始信号产生之后,发送7位从机地址和读写位
IIC协议
主机给从机发送一个字节
主机:发送器
从机:接收器
主机给从机发送多个连续字节
从机给主机发送一个字节
主机:接收器
从机:发送器