1、I2C协议
2条双向串行线,一条数据线SDA,一条时钟线SCL。
SDA传输数据是大端传输(高位在前,低位在后),每次传输8bit,即一字节(工作速率有100Kbit/s、400Kbit/s和3.4Mbit/s三种;(一般使用小于100Kbit/s))。8bit数据包括 读写位 + 7个bit位 组成
支持多主控(multimastering),任何时间点只能有一个主控
连接到总线的接口数量由总线电容400pF的限制决定
2、I2C位传输
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
slave应答:Master每发送完8bit数据后,即在第9个clock,slave发送ACK(SDA会被拉低),表示传输成功。
若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程
应答: 在第9个clock,slave拉低SDA表示应答,然后检测SCL是否被拉低,发送应答数据
注意如下:
1、 I2c发送数据的前提是SCL信号与SDA信号均为高电平
2、I2c发送数据的前提是SCL信号与SDA信号均为高电平
3、总是由Master拉低/拉高SCL
4、总是由slaver拉低/拉高SCL