轻松读懂I2C通讯协议


前言

I2C(内部集成电路,发音为“eye-squared-see”或“eye-two-see”),也称为 I2C 或 IIC,是飞利浦半导体于 1982 年发明的一种同步、多控制器/多目标(历史上称为主/从)、单端串行通信总线。它广泛用于将低速外设集成电路 (IC) 连接到处理器和微控制器,进行短距离板内通信。


一、I2C概述

I2C(Inter-Integrated Circuit)是一种串行总线通信协议,用于在电路板上的不同集成电路(IC)之间进行数据传输。它由飞利浦(现为NXP Semiconductors)在1980年代发明,旨在简化低速设备的通信。I2C总线广泛应用于各种电子设备中,例如传感器、EEPROM、RTC(实时时钟)等。由于其简单、低成本的特点,它是嵌入式系统和微控制器中常用的通信协议之一。

二、I2C特点

双线制:I2C总线只使用两根线进行通信——数据线(SDA)和时钟线(SCL)。SDA用于传输数据,SCL用于提供时钟信号来同步数据传输。

多主多从:I2C支持多个主设备和从设备。主设备发起通信,而从设备响应主设备的请求。

地址寻址:每个从设备在I2C总线上都有一个唯一的地址。通信时,主设备通过地址来选择特定的从设备。

同步通信:数据传输通过时钟信号进行同步,确保数据的准确性和稳定性。

数据速率:标准I2C总线的速率有多个选项,如标准模式(100 kHz)、快速模式(400 kHz)和高速模式(3.4 MHz)。

三、I2C物理层

在这里插入图片描述

3.1.传输媒体

PCB信号线,两根,常用于同PCB上器件间通信,开漏模式,外部上拉

逻辑“0”:SDA和SCL线的电压低于0.3倍的电源电压

逻辑“1”:SDA和SCL线的电压高于0.7倍的电源电压

3.2.编码

基带信号,非归零编码:用正电平表示1、负电平表示0,非归零编码在其整个码元时间内,不会出现零电平

3.3.串行传输

数据是按照1个比特接着1个比特依次发送的,因此发送端和接收端之间只需要一条数据传输线路SDA即可

3.4.同步传输

数据块以稳定的比特流传输,字节之间没有间隔,外同步:在收发双方之间添加一条单独的时钟信号线SCL,发送端在发送数据时,另外再发送一路时钟同步信号,接收端则按时钟同步信号的节奏来接收数据
在这里插入图片描述

3.5.半双工通信

只有一条数据传输线路SDA,通信双方可以相互传输数据,但不能同时进行,

四、I2C数据链路层

I2C以比特位为单位

4.1.封装成帧

在这里插入图片描述

在这里插入图片描述

4.1.1.起始位(S)和停止位(P)

当 SCL 线是高电平时 SDA 线从高电平向低电平切换,这个情况表示通讯的起始。当 SCL 是高电平时 SDA 线由低电平向高电平切换,表示通讯的停止。起始和停止信号一般由主机产生。与异步串行通信中使用的起始位和停止位形成对比,异步串行通信的S、P与数据位的区别仅在于它们的时序。
在这里插入图片描述

4.1.2.地址(ADDRESS)和读写位

I2C总线上的每个设备都有自己的独立地址,主机发起通讯时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机。 I2C协议规定设备地址可以是7位或10位,实际中7位的地址应用比较广泛。紧跟设备地址的一个数据位用来表示数据传输方向, 它是数据方向位(R/),第8位或第11位。数据方向位为“1”时表示主机由从机读数据,该位为“0”时表示主机向从机写数据。
在这里插入图片描述

4.1.3.差错检测

从机接收到匹配的地址或数据后,会返回一个应答(ACK)或非应答(NACK)信号,只有接收到应答信号后,主机才能继续发送或接收数据。
在这里插入图片描述

4.2.冲突避免

当总线上台主机同时使用总线来传输帧时,传输信号就会产生碰撞,这是采用广播信道的共享式局域网不可避免的问题,采用CSMA/CD,即发送开始位前查看SDA是否为高,是则空闲,可以发送 ;

4.3.使用 SDA 进行总线仲裁

个控制器可能几乎同时开始传输;在这种情况下,将发生仲裁。每个发射机都会检查数据线的电平 (SDA),并将其与预期的电平进行比较;如果它们不匹配,则该发送器已丢失仲裁并退出此协议交互,并等待 STOP;

4.4.使用 SCL 的时钟拉伸

寻址目标器件在接收(或发送)一个字节后可能会将 clock line (SCL) 保持为低电平,这表明它还没有准备好处理更多数据。与 target 通信的 controller 可能无法完成 current bit 的传输,但必须等待 clock line 实际变为高电平。如果 target 是 clock-stretching,则 clock line 仍将为低电平(因为 connections 是 open-drain)。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了I2C的特点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值