【基本知识】I2C接口

1.简介

  I2C总线是PHILIPS公司推出的一种在电子通信控制领域常用的串行通信总线,是一种简单、双向通信、二线制、同步的串行总线,具有连接线少控制简单通信速率高等优点。用数据线SDA和时钟线SCL构成通信线路,各器件可并联到总线上实现数据收发,器件间彼此独立,通过唯一的总线地址区分。

  I2C标准速率为100kb/s,快速模式500kb/s

  除了发送器和接收器外,在执行数据传输时,器件也可以被看作主器件(主机)或从器件(从机)。主器件是用于启动总线传送数据,并产生时钟的器件,此时任何被寻址的器件均被认为是从器件(一主多从)。在总线上主和从、发和收的关系取决于此时的数据传送方向,而不是恒定的。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。

  I2C总线的接口均为集电极开路(OC)或漏极开路(OD)的形式输出,其主要是为防止I2C总线上的信号混乱, I2C总线上的输出端没有安装上拉电阻时,只能输出低电平,如果需要保证I2C总线正常工作,就需要在I2C总线的输出端加上拉电阻R1和R2。

  所有I2C设备的SDA或是SCL的端口连接到一块,如果任意一个I2C设备输出低电平都将控制I2C总线(即总线处于“忙”状态)即各I2C设备 的时钟串行线SCL是线“与”的关系,各I2C设备的数据串行线SDA也是线“与”的关系。

2.工作信号

    默认状态(IDLE):当I2C不工作时,SDA和SCL都处于高电平;

    开始传输(START):当 SCL保持为高电平,SDA由高电平变成低电平时表示传输开始(简写S);

    停止传输(STOP):当 SCL保持为高电平,SDA由低电平变成高电平时表示传输结束(简写SP)。

    再次启动(REPEATED START):和START完全相同,差别只是第一次Start之后没有进行STOP,再次启动Start(简写Sr)。用于读操作

    数据传输:数据传输时SDA必须在SCL高电平时保持不变,仅可在SCL低电平改变SDA电平。

    应答信号:IIC以八位字节传输,发送端每发送一个字节后就会释放数据线SDA,由接收器反馈一个应答信号(低电平)。为ACK

 

 

3.读写操作

  

 

 

4.总线占用

  各I2C设备的时钟串行线SCL是线“与”的关系,各I2C设备的数据串行线SDA也是线“与”的关系。在正常情况下, I2C总线协议能保证总线正常的读/写操作,但是只要总线上任何一个设备拉低了数据串行线SDA或者时钟线串行SCL(控制总线),其他设备都无法拉高它们,如果有I2C设备不释放总线,则整个总线上的通信都被暂停,总线被占用。

 

 

 

 

 

 

     

 

posted on 2020-05-22 10:00  要努力做超人  阅读(5858)  评论(0编辑  收藏  举报

导航