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

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

3天内不再提示

为什么内部集成电路 (I2C) 总线使连接 IC 变得如此简单——以及如何使用该总线

海阔天空的专栏 来源:Art Pini 作者:Art Pini 2023-10-03 14:38 次阅读

作者:Art Pini

若在印刷电路板(PC 板)上使用并行总线来实现集成电路间的通信和控制,这样做不太符合实际。即便是 8 位处理器,仅数据方面就要使用 16条线,而地址总线需要的线数还要更多。如果一条共享的通信总线上需要使用多个 IC,那就更成问题了。这是因为空间不够用,无法满足所有这些 PC板走线。解决办法是使用内部集成电路 (I2C) 总线等串行通信总线来链接 IC。这种双线串行总线可用于解决该问题。

本文将介绍 I2C 总线的起源,及其如何在 IC 之间提供有效的串行链路。然后,本文将讨论 I2C总线的物理实现方式、协议结构,以及这种无处不在的通信总线的常见应用。其中将使用 Microchip Technology 的 I2C接口和解决方案示例进行演示。此外,本文还将讨论 I2C 与系统管理总线 (SMBus) 的异同。

什么是 I2C 总线?

在 1980 年代早期,I2C 总线由 Phillips Semiconductors(现为 NXP Semiconductors)开发。这是一种简单的双向双线总线,可在一块共用 PC 板上实现集成电路的有效通信和控制。最早的总线规格于 1992
年完成,随后即成为行业公认标准,并且 50 多家 IC 制造商的元器件中都提供该标准。这种大规模的部署允许采用一种系统方法进行设计,可以轻松地将 IC 纳入I2C 总线结构中,而无需进行定制设计。其他几种专用总线(例如 SMBus 和电源管理总线 (PMBus))以及另外一些总线均采用该基本架构。

I2C 总线是一种可寻址总线,因此可以链接多个 IC 和传感器;7 位或 10 位地址字段允许主控器件向选定器件发送消息。最初,I2C 的最大时钟速度为100 千赫兹 (kHz),但是经过多年的发展,更高速的工作模式已将这一限制推高至 3.4 兆赫兹 (MHz)。

I2C 总线使用两条线,即指定为串行数据线路 (SDA) 和串行时钟线路 (SCL)。SDA 和 SCL是开漏/集电极双向线路,并通过电流源或上拉电阻连接到正电源总线。该总线可以连接多个器件,最大数量受总线电容限制。主控器件控制着总线,总线上的每个器件都有唯一的地址。主控器件可以通过总线收发数据(图 1)。I2C 支持多主控操作,其冲突检测和仲裁功能可防止两个或更多主控器件同时启动数据传输。不过,本文将重点介绍单主控配置。

1.png

图 1 显示了 Microchip Technology 的 PKSERIAL-I2C1 I2C 演示板原理图。该演示板使用五种不同的器件来实现 I2C总线,包括 EEPROM温度传感器、12 位模数转换器ADC)、10 位数模转换器DAC) 和 8位串行转并行转换器。主控器件不在板上,而是通过连接器 P1 连接。SDA 和 SCL 总线线路以绿色框出,上拉电阻器以蓝色圈出。

SDA 和 SCL 电平一般为正电源电压的固定百分比,通常表示为 VDD。对于逻辑“1”(高)和逻辑“0”(低),参考电平分别设置为 VDD 的 70%和 30%。

时钟信号以猝发模式出现,每个传输的数据位使用一个时钟。时钟处于高电平时,SDA 线路上的数据必须有效。只有在时钟处于低电平时,才能更改数据。

从设计人员的角度来看,由于 I2C 接口已集成到 IC 中而无需设计接口,因此新项目得以简化。每个器件只需直接连接到总线。在总线上可以添加或移除IC,而不会影响其他电路(假设 IC 的总数不会超越电容极限)。简单的双线总线可最大程度地减少每个 IC 上的引脚数和印刷电路板上的走线数。

I2C 协议

该总线为 8 位导向协议,以字节为单位进行通信。如上所述,在现在所谓的标准模式中,最初的最大时钟速率为 100 kHz。如今,总线在快速模式下支持 400千比特/秒 (Kb/s),在快速增强模式下支持高达 1 兆比特/秒 (Mb/s),在高速模式 (Hs-Mode) 下支持高达 3.4 Mb/s。

通过图示总线上的典型传输,可以很好地说明 I2C 协议(图 2)。屏幕图像的来源是 Teledyne LeCroy
示波器,其包含低速串行数据触发器和解码选件 WS4KHD-EMB TD。该示波器选件可以触发和解码多达 19 个低速串行数据接口,其中就包括 I2C。

2.png

该示波器可以在特定的串行事件触发,包括起始、停止、丢失应答 (ACK)、地址、数据、地址加数据、帧长和 EEPROM数据传输。串行数据标准的协议组件由带色码的叠加层标识。每个协议字段都以二进制、十六进制或 ASCII 解码,并且所选代码显示在叠加层内。

SDA 信号显示为黄色迹线,而 SCL信号显示为红色迹线。灰色的叠加框指示起始和停止功能。砖红色叠加层标记地址数据,蓝色字段为数据包数据,橄榄色叠加框标记 ACK 功能。

顶部迹线显示了从起始到停止的整个 I2C SDA 数据包。紧靠下方是相应的 SCL 信号。再向下第三条迹线是 SDA 信号的时间扩展缩放迹线,其下方是同步SCL 信号。

在数据传输之间总线空闲时,SDA 和 SCL 线均处于高电平状态。SCL 信号包括以时钟速率发出的九个猝发脉冲,每个传输的数据位使用一个,还有一个用于ACK 位。

所有总线事务都由一个主控器件生成的起始位开始,该位在缩放的 SDA 轨迹中显示为灰色叠加框。主控器件在 SCL 线处于高电平状态时将 SDA线拉低,即表示起始信号。一旦主控器件发出起始位后,总线就即视为处于繁忙状态。主控器件可以发出多次起始信号,这种情况下的后续起始信号通常称为重新起始。

所有数据传输的长度均为 8 位(一个字节),每个后跟一个 ACK 位。位传输顺序是先传输最高有效位
(MSB)。每个字节传输必须得到应答。如果从器件处于繁忙状态,而无法接收或发送数据,则可以将 SCL 线拉低。这将迫使主空器件进入等待状态,直到从器件释放SCL 线。

当发送器件在第九个应答时钟脉冲之前释放 SDA 线后,即会形成 ACK 位。如果接收器件已接收到数据字节,则会将 SDA 线拉低。在图 2 的 SDA放大视图中,紧靠第九个时钟脉冲之前有一个窄峰,这表示 SDA 线经释放返回到高电平状态。接收器件拉低 SDA 线以产生 ACK信号,该信号由橄榄色叠加框作为符号标记。如果接收器件未在第九个时钟脉冲之前将 SDA 线拉低,则是一个非应答 (NACK) 响应。如果发生NACK,则主控器件可以生成停止信号并中止传输,也可以发出重复起始信号以重试。

在起始条件之后,即会发出从器件地址。这由砖红色叠加框表示。地址格式可能有两种:7 位或 10 位,其中最常见的是 7 位地址。起始后的前 7位代表地址数据。第 8 位指示数据方向:读或写。SDA 线处于低电平表示写入,而此时 SDA 线处于高电平,表示读取操作。10位寻址使用起始条件后的前两个字节。I2C 为内部功能保留了多个地址。解码地址数据以二进制、十六进制或 ASCII 格式显示在地址叠加框中。

蓝色的叠加字段标记数据传输。每个为八位长,后跟一个 ACK/NACK 响应。I2C 数据包中的数据字节数不受限制,但是图 2 包含 17个字节。解码后的数据(例如地址解码)显示在数据叠加框中。数据流之后是在数据传输结束时主控器件生成的一个停止位,由顶部数据迹线中的灰色叠加框表示。当 SCL线处于高电平状态时,该停止位是 SDA 线从低到高的跳变。在发出停止信号后,总线再次空闲。

显示屏底部的表格汇总了有关数据包的所有信息,包括自触发以来的时间、地址长度、地址,读或写操作、数据包长度,以及数据内容的摘要。该表中的条目数与示波器获取的I2C 数据包数相匹配,后者在本例中仅为一行。

如果发生协议错误,则由协议叠加框后面的亮红色框表示。

I2C 器件

I2C 总线的最大优势之一是,有大量的器件已将该总线纳入自己的设计中。Microchip Technologies 演示板提供了一些 IC类型的示例,这些 IC 包含 I2C 总线或其衍生品之一,如 SMBus。

Microchip Technology 的 PIC16F677 是一款 8位微控制器,其在许多嵌入式设计中均有采用。该产品实施了一个同步串口,经过适当控制后,可通过串行外设接口 (SPI) 或 I2C 与其他控制器或外设进行通信(图3)。

3.png

这款微控制器支持使用 7 位或 10 位寻址的 I2C 主模式和从模式。该器件将 SCK/SCL 引脚用于 I2C SCL 时钟信号,将 SDI/SDA引脚用于数据信号。

这两个引脚连接到 I2C 总线上的 SCL 和 SDA 线,以实现与其他器件的通信。常见的连接是连接至基于 I2C 的传感器,例如 Microchip Technology 的 TCN75AVOA713 双线串行温度传感器(图 4)。

4.png

此温度传感器能够进行串行通信,因此功能方面得以增强。内置的用户可编程寄存器可用于设置温度测量分辨率、节能关机模式,甚至可设置警报输出,以在温度范围超出预设限值时发出提醒。

此外,还有许多器件可以解码 I2C 串行数据流并将其分解为并行数据。这里介绍一下 Microchip Technology 的 MIC74YQS-TR双线 I/O 扩展器和风扇控制器(图 5)。

5.png

该 IC 是完全可编程的 I/O 扩展器,提供八根独立的 I/O 线。这些 I/O 线可以单独编程为输入或输出。图 5 显示了 MIC74YQS-TR在串行总线的控制下驱动八个 LED。这与图 1 中 I2C 演示板上 MCO23008 的用法相似。MIC74YQS-TR与电源稳压器结合使用,也可以使用其四个最高有效位来实现风扇电机的速度控制。

SMBus 和 I2C

I/O 扩展器的串行输入是专为 SMBus 设计,但也与 I2C 总线兼容。SMBus 规格基于 I2C,由 Intel 和 Duracell 于1994 年定义。主要区别在于标准模式 I2C 逻辑电平相对于 VDD 变化,而 SMBus 的逻辑电平则是固定不变。在大多数情况下,当 VDD 介于 3 伏和5 伏之间时,经验表明这不是问题。

另一个区别是 SMBus 的时钟速率限制为 100 kHz 或更低,而 I2C 有几种模式支持更高的时钟速率。当涉及总线兼容性时,这会将最大时钟速率限制为100 kHz 或 I2C 标准时钟模式。

因此,除了非常特殊的情况外,SMBus 和 I2C 都是兼容的。

总结

I2C 总线及其衍生品广泛应用于各种类型的数百种IC,从而使它们在多层面设计和应用中易于连接。混合信号和模拟传感器经过耦合后,即可扩展基于微控制器的嵌入式系统范围。所有这些都通过一个简单的双线串行数字接口实现。

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

    关注

    5396

    文章

    11643

    浏览量

    363706
  • IC
    IC
    +关注

    关注

    36

    文章

    5990

    浏览量

    176419
  • 电路板
    +关注

    关注

    140

    文章

    5005

    浏览量

    99137
  • 总线
    +关注

    关注

    10

    文章

    2908

    浏览量

    88489
  • SDA
    SDA
    +关注

    关注

    0

    文章

    124

    浏览量

    28297
收藏 人收藏

    评论

    相关推荐

    I2C总线简介

    )和SPI(串行外围设备接口)。你需要先了解I 2 C 的基本特性,然后才能彻底理解这三个接口之间的比较,因此,我们将在本文结尾处讨论主题。什么是
    发表于 09-06 10:16

    浅析集成电路互联总线I2C模块

    慕课苏州大学.嵌入式开发及应用.第四章.较复杂通信模块.集成电路互联总线I2C模块0 目录4 较复杂通信模块4.2 集成电路互联总线
    发表于 12-20 08:07

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

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

    i2c总线的特点

    i2c总线的特点:2 I2C 总线使设计人员和厂商都得益.. 3 2.1 设计人员的得
    发表于 08-05 09:05 26次下载

    长虹集成电路i2c总线资料

    长虹集成电路i2c总线资料 有大量电路图及常用IC资料
    发表于 03-31 10:31 33次下载
    长虹<b class='flag-5'>集成电路</b><b class='flag-5'>i2c</b><b class='flag-5'>总线</b>资料

    I2C总线协议及其应用

    I2C总线协议及其应用 一、I2C总线介绍: ---- 由于大规模集成电路技术的发展,在单个芯片
    发表于 02-08 11:23 1585次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>协议及其应用

    基于CPLD的I2C总线接口设计

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

    互联IC总线(I2C)

    I2C(Inter-Integrated Circuit,互联IC总线通过两线制设计(串行数据线SDA和串行时钟线SCL)来提供双向的数据传输,可连接到外部
    发表于 01-13 16:38 13次下载

    互联IC总线(I2C

    互联IC总线(I2C
    发表于 10-11 14:30 26次下载
    互联<b class='flag-5'>IC</b><b class='flag-5'>总线</b>(<b class='flag-5'>I2C</b>

    TMS320DM643xDMP集成电路I2C周处理器的介绍和规范

    本文档介绍了内部集成电路I2C)在tms320dm643x数字媒体周处理器(DMP)。I2C外设提供DMP和其他设备之间的接口符合飞利浦半导体IN
    发表于 04-18 09:49 8次下载
    TMS320DM643xDMP<b class='flag-5'>集成电路</b><b class='flag-5'>I2C</b>周处理器的介绍和规范

    I2C总线系统中引起电压失常的原因和检修方法

    I2C总线系统传送的是脉冲数字信号,总线上要传送少则十几项、多则数百项的控制项目和数据,被控集成电路通过内部接口
    发表于 04-12 09:50 1.6w次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>系统中引起电压失常的原因和检修方法

    I2C串行总线协议是什么?I2C总线有哪些优点?

    1982年发明并推广,用于连接智能传感器和存储器器件,以及控制和监控外设。协议是一种主从式通信协议,允许多个从设备连接到同一总线上,并在
    的头像 发表于 09-12 11:18 1859次阅读

    I2C总线协议的工作原理和寻址格式

    I2C(Inter-Integrated Circuit)总线协议,即集成电路总线协议,是一种用于连接微控制器及其外围设备的串行
    的头像 发表于 05-27 15:47 2032次阅读

    详解I2C总线与SPI总线的区别

    I2C(Inter-Integrated Circuit)表示集成电路互连,是一种用于线路板内部芯片之间通信的总线
    的头像 发表于 10-16 15:16 6927次阅读
    详解<b class='flag-5'>I2C</b><b class='flag-5'>总线</b>与SPI<b class='flag-5'>总线</b>的区别

    I2C总线通信原理 如何设计I2C总线电路

    I2C总线通信原理 I2C(Inter-Integrated Circuit)总线是一种用于集成电路之间进行通信的串行通信协议。它最早由飞利
    的头像 发表于 01-31 15:01 230次阅读