首页 > 代码库 > I2C通信详解

I2C通信详解

什么是I2C通信

物理接口:SCL + SDA

  • (1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道
  • (2)SDA(serial data):数据线,I2C通信的通信数据都通过SDA线来传输

通信特征:串行、同步、非差分、低速率

  • (1)I2C属于串行通信,所有的数据以位为单位在SDA上串行传输
  • (2)同步通信就是通信双方工作在同一个时钟下面,一般是通信的A方通过一根CLK线传输A自己的时钟给B,B工作在A传输的时钟下。所以通信的显著特征就是:通信中有CLK
  • (3)非差分:因为I2C的通信速率不高,所以使用电平信号通信,而且通信双方距离很近,所以使用电平信号通信
  • (4)低速率:I2C一般是用在同一个板子上的两个IC之间的通信,而且用来传输的数据量也不大,所以本身通信速率很低(一般几百KHz,不同的I2C芯片的通信速率可能不同,具体编程的时候要看自己所使用的设备所允许I2C的最高通信速率,不能超过这个速率)

突出特征1:主设备+从设备

  • (1)I2C通信的时候,通信双方地位是不对等的,而是分为主设备和从设备。通信由主设备发起,由主设备主导,从设备只是按照I2C协议被动的接收主设备的通信,并及时响应。
  • (2)谁是主设备,谁是从设备是由我们通信双方来定的,I2C协议并没有规定,一般来说一个芯片可以只做主设备,也可以只做从设备,也可以既当主设备,也当从设备。

突出设备2:可以多个设备同时挂在一条总线上(从设备地址)

  • (1)I2C通信可以一对一(一个主设备对应一个从设备),也可以一对多(一个主设备对应多个从设备)
  • (2)主设备来负责调度总线,决定某一时间和哪个设备从设备通信,注意:同一时间内,I2C总线只能传输一对设备的通用信息。所以同一时间内,只能有一个从设备和主设备通信,而其他从设备处于“”“冬眠”状态,不能出来捣乱,否则通信就会乱套。
  • (3)每一个I2C从设备在通信中都会有一个I2C设备地址,这个设备地址是从设备本身固有的属性,然后通信时,主设备需要知道自己将要通信的那个设备的地址,然后在通信中通过地址来甄别是不是自己要找的那个从设备。(这个地址是一个电路板上唯一的,不是全球唯一的)

主要用途:SoC和周边设外设之间的通信(典型的如EEPROM、电容式触摸屏、各种sensor)

由I2C学通信时序

什么是时序?

I2C的总线空闲状态、起始位、结束位?

 

I2C通信详解