1、IIC通信简介
I2C总线是PHLIPS(飞利浦)公司推出的一种串行(集成电路总线)总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。 I2C总线有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。
I2C总线通过上拉电阻(阻值为1k8 时性能最好)接正电源。当总线空闲时,两根线均为高电平。通常将SDA、SCL均置为1,用来释放总线。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是所有器件输出到该线路上的信号相“与”的结果)即如果一方输出低,另一方即使输出高也不能使SDA为高,相当于,输出低的一方占住了SDA口,所以两个口一个输出高一个输出低,则线上电平是低的。这是因为输出高的驱动能力不及输出低的拉电流的能力。这使得每次IIC总线都能从多个IIC从机设备中选择一个进行通讯。
从设备不能主动发起传输,其传输是受到主设备控制的。所以主机读从机时,需先由主机向从机发读命令,然后由从机发送数据到主机。
2、IIC通信数据传输
只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化,所以在向SDA送数据之前,要将SCL置为低,等待数据稳定后,将SCL置为高,再进行读写。
2.1总线启动条件
初始化时(总线空闲)SCL、