0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2C基础知识点汇总,I2C通信实际如何工作?

科技观察员 来源:英锐恩 作者:英锐恩 2023-07-07 11:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

I2C通信是内部集成电路的简称,它是飞利浦半导体开发的一种通信协议,用于在中央处理器和同一电路板上的多个IC之间仅使用两条公共电线传输数据。

由于其简单性,它被广泛用于微控制器传感器阵列、显示器、物联网设备、EEPROM等之间的通信。

这是一种同步串行通信协议。这意味着数据位以参考时钟线设置的规则时间间隔一个一个地传输。

一、I2C的特征

以下是I2C通信协议的一些重要特性:

(1)只需要两条公共总线(线)即可控制I2C网络上的任何设备/IC;

(2)无需像UART通信那样事先约定数据传输速率。因此可以根据需要随时调整数据传输速度;

(3)用于验证传输数据的简单机制;

(4)使用7位寻址系统来定位I2C总线上的特定设备/IC;

(5)I2C网络易于扩展,新设备可以简单地连接到两条公共I2C总线上。

二、I2C的硬件

1、物理I2C总线

I2C总线(接口线)仅由两条线组成,称为串行时钟线(SCL)和串行数据线(SDA)。要传输的数据通过SDA线发送,并与来自SCL的时钟信号同步。I2C网络上的所有设备/IC都连接到相同的SCL和SDA线,如下所示:

20211013173237.jpg

两条I2C总线(SDA、SCL)都用作开漏驱动器。这意味着I2C网络上的任何设备/IC都可以将SDA和SCL驱动为低电平,但不能将它们驱动为高电平。因此,每条总线都使用一个上拉电阻,默认情况下将它们保持在高电平(正电压)。

使用开漏系统的原因是没有短路的可能性,当一个设备试图将线路拉高而其他设备试图将线路拉低时,可能会发生短路。

二、主从设备

连接到I2C总线的设备分为主设备或从设备。在任何时刻,只有一个主设备在I2C总线上保持活动状态。它控制SCL时钟线并决定要在SDA数据线上进行什么操作。

响应来自该主设备的指令的所有设备都是从设备。为了区分连接到同一I2C总线的多个从设备,每个从设备在物理上都分配了一个永久的7位地址。

当主设备想要向从设备传输数据或从从设备传输数据时,它会在SDA线上指定这个特定的从设备地址,然后继续传输。因此,有效的通信发生在主设备和特定从设备之间。

所有其他从设备都不会响应,除非它们的地址由SDA线上的主设备指定。

20211013173306.jpg

三、数据传输协议

主设备和从设备遵循以下协议(规则集)以在它们之间传输数据。

数据通过单个SDA数据线在主设备和从设备之间传输,通过0和1(位)的模式序列。每个0和1序列称为一个事务,每个事务中的数据结构如下:

20211013173335.jpg

1、开始条件

每当主设备/IC决定开始一个事务时,它会在SCL线从高电平切换到低电平之前将SDA线从高电压电平切换到低电压电平。

一旦主设备发送启动条件,所有从设备即使处于睡眠模式也会激活,并等待地址位。

20211013173409.jpg

2、地址块

它由7位组成,并填充主设备需要发送/接收数据的从设备地址。I2C总线上的所有从设备将这些地址位与其地址进行比较。

3、读/写位

该位指定数据传输的方向。如果主设备/IC需要向从设备发送数据,则该位设置为“0”。如果主IC需要从从设备接收数据,则将其设置为“1”。

4、ACK/NACK位

它代表已确认/未确认位。如果任何从设备的物理地址与主设备广播的地址一致,则该位的值由从设备设置为“0”。否则它保持逻辑“1”(默认)。

5、数据块

它由8位组成,它们由发送方设置,需要传输到接收方的数据位。该块后跟一个ACK??/NACK位,如果接收器成功接收到数据,则接收器将其设置为“0”。否则它保持逻辑‘1’。

这种数据块后跟ACK/NACK位的组合被重复,直到数据完全传输。

6、停止条件

在通过SDA线传输所需的数据块后,主设备先将SDA线从低电平切换到高电平,然后再将SCL线从高电平切换到低电平。

20211013173435.jpg

注意:逻辑“0”或设置一个位为“0”相当于在SDA线上施加低电压,反之亦然。

四、I2C通信实际如何工作?

I2C通信/事务由主设备发起,以向从设备发送数据或从其接收数据。让我们详细了解这两种场景的工作原理

1、向从设备发送数据

当主设备尝试通过I2C总线向特定从设备发送数据时,会发生以下操作序列:

(1)主设备发送启动条件;

(2)主设备发送与目标从设备对应的7个地址位;

(3)主设备将读/写位设置为“0”,表示写;

(4)现在有两种可能:如果没有从设备与主设备发送的地址匹配,则下一个ACK??/NACK位保持为“1”(默认)。这向主设备发出信号,表明从设备识别不成功。主时钟将通过发送停止条件或新的启动条件来结束当前事务。如果存在与主设备指定地址相同的从设备,则从设备会将ACK/NACK位设置为“0”,这会向主设备发出信号,表明从设备已成功定位。

(5)如果从设备成功定位,则主设备现在发送8位数据,这些数据仅由目标从设备考虑和接收。该数据对剩余的从设备没有任何意义。

(6)如果数据被从设备成功接收,它会将ACK/NACK位设置为“0”,这表示主设备继续。

(7)重复前两步,直到数据全部传输完毕。

(8)在所有数据发送到从设备后,主设备发送停止条件,通知所有从设备当前事务已结束。

下图表示在SDA线上发送的总体数据位以及控制每个位的设备:

20211013173510.jpg

2、从从设备读取数据

除了以下内容外,操作顺序与之前的场景相同:

(1)主设备将读/写位设置为“1”而不是“0”,这向目标从设备发出信号,表明主设备正在等待来自它的数据;

(2)数据块对应的8位由从设备发送,ACK/NACK位由主设备设置;

(3)一旦主设备接收到所需的数据,它就会发送一个NACK位。然后从设备停止发送数据并释放SDA线。

如果主设备从从设备的特定内部位置读取数据,它首先使用前面场景中的步骤将位置数据发送到从设备。然后它以重复的开始条件开始读取数据的过程。

下图表示在SDA线上发送的总体数据位以及控制每个位的设备:

20211013173533.jpg

3、时钟拉伸的概念

假设主设备启动了一个事务并发送特定从设备的地址位,然后是“1”的读取位。特定的从设备需要发送一个ACK??位,紧接着是数据。

但是如果从设备需要一些时间来获取和发送数据到主设备,在这个间隙期间,主设备会认为从设备正在发送一些数据。

为了防止这种情况,从设备将SCL时钟线保持为低电平,直到它准备好传输数据位。通过这样做,从设备向主设备发送信号以等待数据位,直到时钟线被释放。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1547

    浏览量

    130513
  • I2C通信
    +关注

    关注

    0

    文章

    24

    浏览量

    9321
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    简述i2c总线的工作原理 i2c通信过程 i2c通信协议原理

    I2C是Inter-Intergrated Circuit的简称,英文翻译过来是:内置集成电路。为什么I2C是内置集成电路?
    发表于 07-21 14:43 1.2w次阅读
    简述<b class='flag-5'>i2c</b>总线的<b class='flag-5'>工作</b>原理  <b class='flag-5'>i2c</b><b class='flag-5'>通信</b>过程 <b class='flag-5'>i2c</b><b class='flag-5'>通信</b>协议原理

    软件模拟SPI/软件模拟I2C知识点汇总,绝对实用

    软件模拟SPI/软件模拟I2C知识点汇总,绝对实用
    发表于 02-08 06:54

    i2c总线ppt(I2C总线器件应用)

    I2C总线器件应用第一节 I2C总线器件应用概述I2C总线工作原理I2C总线系统结构I2C总线系
    发表于 08-13 17:34 0次下载

    I2C Guid I2C指南

    I2C Guid  I2C指南 The I2C bus is used in a wide rangeof applications because it is simpleand
    发表于 04-23 13:55 36次下载

    什么是i2c总线

    什么是i2c总线  下载请点击: i2c总线协议中文版 
    发表于 11-05 09:26 3168次阅读

    I2C总线的工作原理与应用

    I2C总线的工作原理与应用     I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连
    发表于 03-02 01:20 5188次阅读
    <b class='flag-5'>I2C</b>总线的<b class='flag-5'>工作</b>原理与应用

    基于CPLD的I2C总线接口设计

    在电路设计中,I2C总线是比较常用的两线式串行通信方式,大多数的CPU都擅长于并口操作,不具备直接操作I2C总线接口的能力。为了使不具备I2C总线接口能力的CPU通过对并口的简单操作实
    发表于 02-12 16:11 96次下载
    基于CPLD的<b class='flag-5'>I2C</b>总线接口设计

    labview与i2c通信的编程问题

    labview与i2c通信的编程问题,适合新手看看
    发表于 12-09 15:49 207次下载

    i2c

    单片机i2c总线操作;单片机i2c总线操作;单片机i2c总线操作;
    发表于 05-17 11:09 35次下载

    I2C总线的基本通信总结

    在电子设计开发中I2C大家已经很熟悉了,每一种电子产品小到电子开关,大到卫星通信都会利用的I2C总线。据统计I2C在电子产品中占据了93%的份额,几乎任何一种电路都要使用。
    的头像 发表于 08-26 14:08 1.9w次阅读
    <b class='flag-5'>I2C</b>总线的基本<b class='flag-5'>通信</b>总结

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但
    发表于 12-28 19:14 81次下载
    硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    Linux I2C驱动入门知识科普

    I2C 总线驱动, I2C总线驱动就是SOC的 I2C控制器驱动,也叫做 I2C适配器驱动。
    的头像 发表于 12-29 13:59 2446次阅读

    I2C通信协议及其工作原理

    "也许你听说过I2C,或者你也正在使用I2C,但你有没有了解过什么是I2CI2C是如何工作的?让我们一起了解一下什么是
    的头像 发表于 04-19 09:36 6571次阅读

    I2C通信协议:了解I2C Primer、 PMBus和SMBus

    I2C Primer的基本特性和标准,并重点说明在通信实现过程中如何正确使用该协议。从I2C的基本原理出发,我们将介绍其变体子集——系统管理总线(SMBus)和电源管理总线(PMBus)——的可用性及二者的区别。这三种协议各有专
    的头像 发表于 06-15 15:29 8107次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>协议:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus

    i2c采样是上升沿吗?

    数据。在本文中,我们将详细讨论I2C采样的工作原理,采样时机以及如何进行I2C采样。 I2C采样的原理 I2C采样是基于
    的头像 发表于 09-19 17:16 4406次阅读