1.I2C通信特点
1.带两根通信线,分别SDA,SCL
2.异步通信
3.半双工
4.可为一主多从
2.I2C的硬件电路
为了避免出现电源短路,将连接SDA,SCL的IO扣都配置为开漏输出,为弱上拉强下拉。
(来自江科大自化协)
SCL只能由主机控制
SDA一般由主机控制,从机只能被主机选择是否控制
3.I2C时序基本单元
1.起始条件
SCL高电平期间,SDA产生下降沿,并保持低电平,SCL再拉低
2.终止时序
SCL先拉高,SCL高电平期间,SDA产生上升沿,并保持高电平
3.主机发送一个字节时序
1.主机取得对SDA的控制权(SDA处于高电平)
2.在SCL低电平期间,改变SDA产生上升沿或者下降沿,使主机写入数据(高位先行)
3.再拉高SCL,使从机读取此时SDA的电平,输入主机(在此期间,需保持SDA状态不变)
4.再拉低SCL
5.重复8次,即可写入一个字节
4.主机接收一个字节时序
1.将主机的对SDA的控制权释放(SDA处于低电平)(对输入和输出的选择)
2.当SCL处于低电平,从机写入SDA(高位先行)
3.将SCL拉高,主机读取SDA,再拉低SCL即可
4.重复8次,即可发送一个字节
5.发送应答
发送模式下,当发送完一个字节后,下一位为应答位
SDA为0为应答,为1为未应答
6.接收应答
接收模式下,当发送完一个字节后,下一位为应答位
SDA为0为应答,为1为未应答
4.I2C完整时序
1.指定地址写
2.当前地址读
3.指定地址读
5.有关从机地址
每一个I2C设备出厂都有唯一的地址,在进行I2C通信时,需要先发送从机地址,确定通信设备。
有关从机的地址可于该产品的数据手册查到
6.其他
读数据时,在不需要读的时候,需要SDA发送无应答,停止数据的读取