<通信接口篇> I2C介绍

目录

01 I2C总线介绍

总线物理连接

通信模式

I2C协议整体时序

02 I2C读写时序介绍

I2C写时序(主机)

I2C读时序(主机)

03 文章总结


大家好,这里是程序员杰克。一名平平无奇的嵌入式软件工程师。

作为嵌入式开发人员,无论是硬件还是软件工程师,或多或少都会接触过I2C接口的外设。诸如常用的存储器EEPROM等皆是I2C接口进行通信。

本系列推文主要是对I2C总线进行总结和分享,本篇推文主要是对I2C总线及其通讯时序进行介绍和分享。后续会分别出推文分享MCU实现I2C接口以及在FPGA实现I2C逻辑时序。


下面正式进入本章推送的内容。

01 I2C总线介绍

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的集成IC器件之间双向通信。其特点如下:

  • I2C总线上的每个设备都可以作为主机或从机,当多个主机需要使用总线时,通过仲裁方式决定特定主机的优先占用.
  • 每个设备都有唯一地址,总线上通过地址识别来确定通信的主从双方.
  • 连接到相同总线的设备数量受到总线的最大电容400pF限制.

  • 总线物理连接

I2C作为总线,其总线上会挂载很多的设备,下图为一个典型的总线拓扑:

47fe5844f77b4e5e1b44d66dd285dde7.png

I2C总线的物理连接上比较简单,由SDA(串行数据线)SCL(串行时钟线)上拉电阻组成。单一设备硬件电路如下图所示(EEPROM-24C02为例):

2dcb0320707a742ef9270c7b1f51680d.png

特别说明:

多个器件连接在一条总线上时,SDA、SCL上各有一个上拉电阻便可.

  • 通信模式

I2C总线支持三种模式:标准模式快速模式高速模式,其对应的速率如下表所示:

模式速率(bit/s)
标准模式100k
快速模式‍400k‍
高速模式3.4M
  • I2C协议整体时序

对于一个完整的I2C协议而言,其包括起始位、主从数据交互以及停止位。整体时序、组成如下所示:

cfc827fde1fcc59e1925fcaddd0e1aa9.png

组成描述
空闲状态总线空闲时,SDA、SCL皆为高电平
起始位SCL为高电平时,SDA出现下降沿

主从数据交互

(数据+应答)

数据:1字节的控制帧/数据帧

应答:数据传输完成后的下一个时钟沿,SDA-0表示应答,SDA=1表示非应答.
停止位SCL为高电平时,SDA出现上升沿

02 I2C读写时序介绍

I2C总线上的设备主动发起通信时作为主机,被动接收时作为从机。因此对于I2C读写时序而言,分为主机、从机读写时序。本篇主要是描述主机的读写时序操作,从机的时序不在此系列推文分享。

  • I2C写时序(主机)

对于I2C主机在SCL时钟驱动下的基本写时序组成如下所示:

30704dd073fede655f440199cde338e9.png

写时序组成描述
起始位SCL为高电平时,SDA出现下降沿. 表示一次总线通信的开始. 由主机发起.

控制帧(8bit)

(主机->从机)

由从机地址(SLAVE_ADDRESS)和操作位(R/W)组成.

R/W:控制帧[0]为操作位,0-表示写,1-表示读;

控制帧[7:1]为从机地址,具体使用的位数由器件决定;

应答位

(从机->主机)

从机接收到对应的控制帧后,匹配到器件地址后,会返回一个应答ACK信号;主机只有接收到应答后,才会发送数据;

数据帧(8bit)

(主机->从机)

主机写到从机的1字节数据(8bit).

应答/非应答

(从机->主机)

从机接收到对应的数据帧后,会根据具体器件,选择返回一个应答ACK/非应答NACK信号.
停止位SCL为高电平时,SDA出现上升沿. 表示一次总线通信的结束. 由主机发起.
  • I2C读时序(主机)

对于I2C主机在SCL时钟驱动下的基本读时序组成如下所示:

e872e2b7adbfff6661927459c889b722.png

读时序组成描述
起始位SCL为高电平时,SDA出现下降沿. 表示一次总线通信的开始. 由主机发起.

控制帧(8bit)

(主机->从机)

由从机地址(SLAVE_ADDRESS)和操作位(R/W)组成.

R/W:控制帧[0]为操作位,0-表示写,1-表示读;

控制帧[7:1]为从机地址,具体使用的位数由器件决定;

应答位

(从机->主机)

从机接收到对应的控制帧后,匹配到器件地址后,会返回一个应答ACK信号;主机只有接收到应答后,才会发送数据;

数据帧(8bit)

(从机->主机)

从机返回给主机的1字节数据(8bit).

应答/非应答

(主机->从机)

主机接收到从机返回的数据帧后,会根据具体器件,选择返回一个应答ACK/非应答NACK信号给从机.
停止位SCL为高电平时,SDA出现上升沿. 表示一次总线通信的结束. 由主机发起.

特别说明:

I2C主机的读写时序的起始位、控制帧、控制帧应答以及停止位是一致的,差异主要体现在是数据帧、数据帧的应答的主从方向上。

差异点写时序读时序
数据帧(8bit)主机写入到从机(主->从)从机返回给主机(从->主)
应答/非应答从机做出应答/非应答(从->主)主机做出应答/非应答(主->从)

03 文章总结

I2C总线以其外围电路简单、占用PCB面积小、总线可挂载多节点设备等特点而被广泛应用,因此,对于学习I2C总线的电路结构、时序还是很有必要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰克拉力船长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值