问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

I2C总线协议原理详解

创作时间:
作者:
@小白创作中心

I2C总线协议原理详解

引用
CSDN
1.
https://blog.csdn.net/weixin_47932709/article/details/108938838

I2C总线协议原理介绍

I2C(Inter-Integrated Circuit)总线是一种由NXP公司设计的串行通信协议,广泛应用于嵌入式系统中。I2C使用两条线在主控制器和从机之间进行数据通信:一条是SCL(串行时钟线),另一条是SDA(串行数据线)。这两条数据线需要接上拉电阻,总线空闲的时候SCL和SDA处于高电平。I2C总线标准模式下速度可以达到100Kb/S,快速模式下可以达到400Kb/S。

I2C总线支持多从机,即一个I2C控制器下可以挂多个I2C从设备,这些不同的I2C从设备有不同的器件地址。通过I2C设备的器件地址,主控制器可以访问指定的I2C设备。一个I2C总线连接多个I2C设备的示意图如下:

SDA和SCL这两根线必须接一个上拉电阻,一般是4.7K。其余的I2C从器件都挂接到SDA和SCL这两根线上,这样就可以通过SDA和SCL这两根线来访问多个I2C设备。

I2C协议相关术语

2.1 起始位

起始位是I2C通信的开始标志。在SCL为高电平的时候,SDA出现下降沿就表示为起始位。

2.2 停止位

停止位是I2C通信的结束标志。在SCL为高电平的时候,SDA出现上升沿就表示为停止位。

2.3 数据传输

I2C总线在数据传输的时候要保证在SCL高电平期间,SDA上的数据稳定,因此SDA上的数据变化只能在SCL低电平期间发生。

2.4 应答信号

当I2C主机发送完8位数据以后会将SDA设置为输入状态,等待I2C从机应答。应答信号是由从机发出的,主机需要提供应答信号所需的时钟。主机发送完8位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过将SDA拉低来表示发出应答信号,表示通信成功,否则表示通信失败。

I2C时序

I2C时序主要包括写时序、读时序和多字节读写时序。

3.1 I2C写时序

I2C总线单字节写时序如下:

写时序的具体步骤如下:

  1. 开始信号
  2. 发送I2C设备地址(高7位是设备地址,最后1位是读写位,0表示写操作)
  3. 从机发送ACK应答信号
  4. 重新发送开始信号
  5. 发送要写入数据的寄存器地址
  6. 从机发送ACK应答信号
  7. 发送要写入寄存器的数据
  8. 从机发送ACK应答信号
  9. 停止信号

3.2 I2C读时序

I2C总线单字节读时序如下:

读时序的具体步骤如下:

  1. 主机发送起始信号
  2. 主机发送要读取的I2C从设备地址
  3. 读写控制位(1表示读操作)
  4. 从机发送ACK应答信号
  5. 重新发送START信号
  6. 主机发送要读取的寄存器地址
  7. 从机发送ACK应答信号
  8. 重新发送START信号
  9. 重新发送要读取的I2C从设备地址
  10. 读写控制位(1表示读操作)
  11. 从机发送ACK应答信号
  12. 从I2C器件里面读取到的数据
  13. 主机发出NO ACK信号,表示读取完成
  14. 主机发出STOP信号,停止I2C通信

3.3 I2C多字节读写时序

多字节读写时序与单字节基本一致,只是在读写数据时可以连续发送多个字节,其他控制时序与单字节相同。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号