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

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

3天内不再提示

I²C总线与SMBus的比较指南

星星科技指导员 来源:ADI 作者:ADI 2023-01-13 15:26 次阅读

I²C总线和SMBus™是流行的2线总线,基本上相互兼容。通常,设备(主机和从设备)可以在两条总线之间自由互换。两条总线都具有可寻址从站(尽管两者之间的特定地址分配可能有所不同)。总线以相同的速度工作,最高可达100kHz,但I²C总线具有400kHz和2MHz版本。两条总线之间的完全兼容性仅在100kHz以下得到保证。本应用笔记重点介绍I²C和SMB之间的显著差异。

I²C总线和SMBus是流行的2线总线,基本上相互兼容。通常,设备(主机和从设备)可以在两条总线之间自由互换。两条总线都具有可寻址从站(尽管两条总线之间的特定地址分配可能有所不同)。总线以相同的速度工作,最高可达100kHz,但I²C总线具有400kHz和2MHz版本。显然,使用所有器件的两条总线之间的完全兼容性仅在100kHz以下才能得到保证。

本应用笔记重点介绍两条总线之间的显著差异。虽然假设读者对I²C总线和/或SMBus有一定的了解,但让我们首先回顾一些协议基础知识:

启动和停止事件。这些尤其重要,因为 它们是向接口发出信号的方式,表明它需要转到 已初始化或重置状态。

数据和时钟必须很高才能生成启动和停止。一位大师 无法生成启动或停止,除非数据(I²C的SDA和 SMBData for SMBus)和时钟(SCL 用于 I²C,SMBClk 用于 SMBus)线路 是自由的(不是拉低的)。这是成为开放收藏家的结果 总线。

启动和停止条件是唯一的时间 在时钟为高电平时成为数据线上的过渡。

仅当通信期间时钟为低电平时,数据才能更改状态。 数据上的数据必须始终在时钟高电平之前准备就绪 并且仅在时钟变低后更改(除了 启动和停止)。

pYYBAGPBCEaAdH9EAAAp182H5ng706.png

图1.典型的通信,显示启动和停止条件。

超时和时钟速度

超时和(由于超时)最小时钟速度是I²C总线和SMBus之间最重要的区别。

I²C 总线 = 直流 (无超时)
SMBus = 10kHz (35mS 超时)

超时是指每当时钟变为低电平的时间超过超时时间(通常为 35 毫秒)时,从设备就会重置其接口。超时的使用也决定了时钟的最低速度,因为它永远不会静止。因此,SMBus 具有最低时钟速度规格。相比之下,I²C总线可以无限期地变为静态。在I²C总线中,主站或从站都可以根据需要保持时钟低电平以处理数据。

所有这些都是两条总线如何处理从站错误并从这些错误中恢复的结果。要了解错误恢复,请考虑有两种状态,即启动和停止,在正确设计的I²C或SMBus从机上,这两种状态指示从接口进入特定状态。在 Start 的情况下,接口应自行初始化并准备好接收通信。无论启动条件之前是什么,都应该发生这种情况(例如,如果从站处于通信过程中,主设备感到困惑并不得不重新开始)。在 Stop 的情况下,接口应再次初始化自身,但应在任何新通信之前期待启动。“开始”和“停止”都是时钟为高电平时发生的唯一数据转换。为了使数据上的转换发生,数据线(和时钟线)必须是“自由的”,以允许主站根据需要在线上放置高点和低点。

在I²C总线中,如果从机锁定并保持时钟或数据低电平,则无法进行错误恢复。实际上很少有从设备能够保持时钟。因此,最常见的总线错误是从设备最终处于数据(数据线)低电平的状态。在I²C总线中,主机通过时钟时钟直到数据为高电平,然后发出启动后停止信号来完成错误恢复。

与I²C总线相比,只要时钟处于低电平,时间超过SMBus规范中规定的35ms超时,SMBus从站就会复位其接口。因此,英特尔 PIIX4 等 SMBus 主站没有内置任何错误恢复例程。实际上,从设备需要检查时钟和数据,即使SMBus规范没有规定这一点。应该这样做,因为经验表明,处于错误状态的从站可以保持低数据,即使时钟可能很高。完全按照 SMBus 规范实现超时并不能解决此错误模式。


I²C Slave
SMB Slave
I²C Slave
I²C Master I²C Master
SMB Master Potential for bus lockup SMB Master

SMBus的时钟速度限制为100kHz,而I²C允许高达400kHz的速度。

逻辑电平

尽管两条总线之间的逻辑电平规格存在差异,但通常器件可以混合使用,并可以放弃匹配。事实证明,SMBus或I²C总线很少因电平差异而发生故障。当我们比较相应的电平规格时,这可能会令人惊讶,如图1所示。

pYYBAGPBCD6AYcJYAAAfXMgpPt4107.png

图2.这是I²C总线和SMBus之间电平规格的比较。I²C-VDD显示了 3 V 至 5 V 电源的相关高值和低值范围。

为了进一步比较,表 2 一起列出了规格。

High I2C VDD Dependent 0.7 × VDD
I²C Fixed 3.0V
SMBus 2.1V
Low I2C VDD Dependent 0.3 × VDD
I2C Fixed 1.5V
SMBus 0.8V

尽管电平规格之间似乎存在相当大的差异,但在这方面,器件互换性并未被证明是一个问题。这是因为主机和从站的输出电压摆幅几乎总是接近全电源电压。

上拉电阻电流电平

在讨论电压电平时,不明显的是,这些电平也由总线之间的不同电流指定。SMBus的最小灌电流为100μA,最大灌电流为350μA,而I²C总线的最小灌电流为3mA。这反过来又将确定上拉电阻的最低可接受值,其示例如下表所示。

3V VDD 5V VDD
I2C 总线 > 1k > 1.6k
SMBus > 8.5k > 14k

实际上,在SMBus系统中遇到上拉电阻值并不罕见,因为上拉电阻值低于推荐值,因此违反了此规范。即使在某些SMBus系统中,上拉电阻值的一个非常普遍的范围似乎是2.4k至3.9k。

一般呼叫和警报响应

I²C总线有一个称为通用呼叫的地址,即0000 000,所有设计用于响应通用呼叫的从站都将相应地采取行动。这是一种可以同时与系统上的多个设备通信的方法。

SMBus还规定了一条名为ALERT#的线路,不要与I²C通用呼叫地址混淆。此行充当 SMBus 主服务器的中断。收到中断后,SMBus 主服务器可以发出警报响应。此警报响应被发送到地址 0001 100,任何生成中断的从设备都试图通过将自己的地址放在总线上来识别自己。地址最低的设备将占主导地位(由于集电极开路总线)。如果它被维修和清除,主服务器可以重复该过程并通过可能发生的任何其他中断进行处理。

其他小细节

有一些与上升和下降时间和总线电容有关的微妙问题通常不是问题。此外,在使用“确认”和“不确认”条件方面,还存在一些很少遇到的协议差异。对于大多数主流的主人和从属选择,这些因素通常都不是问题。

显著差异总结

超时和最小时钟速度

电压等级

上拉电阻值和电流水平

I2C SMBus
Timeout No Yes
Minimum Clock Speed DC 10kHz
Maximum Clock Speed 100kHz (400kHz and 2MHz also available) 100kHz
VHIGH 0.7 × VDD, 3.0V Fixed 2.1V
VLOW 0.3 × VDD, 1.5V Fixed 0.8V
Max I 3mA 350µA
Clock Nomenclature SCL SMBCLK
Data Nomenclature SDA SMBDAT
General Call Yes Yes
Alert# No Yes

审核编辑:郭婷

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

    关注

    10

    文章

    2706

    浏览量

    87215
  • SMBus
    +关注

    关注

    0

    文章

    70

    浏览量

    21722
  • I²C总线
    +关注

    关注

    0

    文章

    14

    浏览量

    2102
收藏 人收藏

    评论

    相关推荐

    I2C总线协议

    我用I2C总线协议扩展一个数字指南针,结果输入输出语句都变成死循环了,这是什么原因啊!(程序是有用的,可写可读,只是不知怎么的过一天就成这样了,是硬件问题么?)求赐教!~
    发表于 11-04 21:58

    数字温度传感器系统接口:SPI、I2CSMBus如何选

    共存于同一系统总线上(系统冗余常会要求这一点),或者面向低功耗应用,这时I2CSMBus将是首选接口。图1:数字温度传感器简化框图下面几部分将介绍每种串行总线及其优缺点。1. S
    发表于 09-23 16:55

    FPGA中I²C 总线解析 I²C 总线是什么

    在现代电子系统中,有为数众多的 IC 需要进行相互之间以及与外界的通信。为了简化电路的设计,Philips 公司开发了一种用于内部 IC 控制的简单的双向两线串行总线 I²C
    发表于 09-29 09:37

    增强型I2CSMbus主接口参考设计包括BOM及层图

    I2C 外设不支持 SMbus(...)主要特色支持 I2CSMbus 主接口连接 PRU-ICSS动态块模式读取和写入传输包含用于定制的 PRU-ICSS 源代码
    发表于 10-26 10:00

    I2CSMBus之间的技术差异

    来源 网络关于I2CSMBus,许多人很少去谈论与了解两者的细节差异,包括很多国外的简报,文章也经常将两者混写、交杂描述、交替运用。确实,在一般运用下,I2C Bus与SMBus没有
    发表于 11-21 19:49

    如何使I2C主机成为SMBus主机?

    你好,我正在努力使I2C成为SMBUS的主人。我面临以下问题1。SMBus奴隶的删除插入使得S I2C接口被卡住。-原因-在ISR I2C
    发表于 09-19 07:57

    如何驱动I2C总线

    KC705用户指南,IIC_MUX_RESET_B在低电平时有效,因此我必须将其驱动为高电平以启用FPGA U1与I2C总线上其他组件之间的I2C串行转换。所以我把那段代码:IIC_M
    发表于 09-20 07:25

    SMBusI2C有什么差别?

    系统管理总线(SMBus)是一个两线接口。通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。它基于I2C操作原理。SMBus为系统和电源管理相关的任务提供一条控制
    发表于 03-20 09:01

    I2C总线简介

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

    I2C简介

    SMBus 2.0 兼容。它可以用于多种用途,包括 CRC 生成和验证、 SMBus(系统管理总线)以及 PMBus(电源管理总线)。根据器件的不同,可利用 DMA 功能来减轻 C
    发表于 08-10 08:10

    Gowin I3C Dual Clock IP用户指南及参考设计

    本次发布 Gowin I3C Dual Clock IP 用户指南及参考设计。Gowin I3C Dual Clock IP 的用户指南及参考设计可在高云官网下载,其中,参考设计已配置
    发表于 09-30 06:08

    AT32F435/437 I 2C使用指南

    AT32F435/437 I2C使用指南主要就I2C 总线接口的基本功能进行讲解和案例解析。
    发表于 10-25 08:09

    AT32F425 I2C使用指南

    AT32F425 I2C使用指南本文主要就I2C 总线接口的基本功能进行讲解和案例解析。
    发表于 10-25 07:39

    AT32F402/405 I 2C使用指南

    AT32F402/405 I2C使用指南本文主要就I2C 总线接口的基本功能进行讲解和案列解析。
    发表于 10-26 08:17

    基于Verilog的SMBus总线控制器的设计与实现

    SMBus是一种高效的同步串行总线。通过分析SMBus总线协议,提出了一种运行于基于PCI-Express技术的桥接芯片上的SMBus控制器
    发表于 07-16 15:08 16次下载