IIC:同步半双工,2根通信线 SCL:时钟线 SDA:数据线
1.半双工
2.有应答机制
3.支持挂载多设备
SDA发送时是输出没接收时是输入,从机的SDA也会在输入和输出之间反复切换。为了避免总线没协调好(即两个引脚同时处于输出状态,又正好一个输出高电平,一个输出低电平),导致电源短路,因此禁止所有设备输出强上拉的高电平,采用外置弱上拉电阻加开漏输出的电路结构(强上拉用的上拉电阻阻值小,弱上拉用的电阻阻值较大驱动电流不同)。即SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右
起始条件:
SCL高电平期间,SDA从高电平切换到低电平
终止条件:
SCL高电平期间,SDA从低电平切换到高电平
发送一个字节:
SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机 将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节
接收一个字节:
与发送原理相同,从机放数据,主机读数据(主机接收前,需要释放SDA)
发送应答:
主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答(与发送一个字节其中一位是相同的)
接收应答:
主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)(与接收一个字节其中一位是相同的)