IIC

I2C是一种串行数据通信协议(串行、同步、半双工),仅使用两根信号线SerialClock(简称SCL)和SerialData(简称SDA)。在这里插入图片描述
I2C作为总线结构,采用单主单从、单主多从方式,各从设备以7位地址区分;
I2C的数据格式为:
起始信号:SCL=1,SDA由1到0,Start信号仅由主设备发送

数据信号:SCL=1,SDA八位数据(0~7)+ 应答位(ACK = 1)
SCL跳变时SDA不能改变;SCL=0,SDA可以改变
发送方发送完8位数据,释放SDA,由接收方应答(ACK/NACK)

终止信号:SCL=1,SDA由0到1,End信号仅由主设备发送

I2C总线上可挂接的设备数量受总线的最大电容400pF 限制,如果所挂接的是相同型号的器件,则还受器件地址位的限制(7位共127个)。

I2C总线数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。一般通过I2C总线接口可编程时钟来实现传输速率的调整,同时也跟所接的上拉电阻的阻值有关。

写数据示例

  1. 主设备start(1到0),7位设备地址+读写位(W=0),从设备ACK
  2. 主设备发送8位数据,从设备ACK
  3. 主设备End(0到1)
    在这里插入图片描述

读数据示例

  1. 主设备start(1到0),7位设备地址+读写位(R=1),从设备ACK
  2. 从设备发送8位数据,主设备ACK
  3. 主设备End(0到1)
    在这里插入图片描述

读写交替示例

  1. 主设备start(1到0),7位设备地址+读写位(R=1),从设备ACK
  2. 从设备发送8位数据,主设备ACK
  3. 主设备RS(1到0),7位设备地址+读写位(W=1),从设备ACK
  4. 主设备发送8位数据,从设备ACK
  5. 主设备End(0到1)
    在这里插入图片描述

更多推荐