摘要: I²C总线和SMBus是流行的2线总线,它们基本上是相互兼容的。了解更多关于SMB和I2C之间的互换性和差异。
I²C总线和SMBus 是流行的2线总线,它们基本上是相互兼容的。通常情况下,无论是主设备还是从设备,都可以在两个总线之间自由互换。这两种总线都具有可寻址的从站(尽管具体的地址分配在两者之间可能有所不同)。总线以相同的速度运行,最高可达100kHz,但I²C总线有400kHz和2MHz版本。只有在100kHz以下才能确保两个总线之间的完全兼容。本应用程序说明侧重于i2c和SMB之间的显著差异。
I²C总线和SMBus是流行的2线总线,它们本质上是相互兼容的。通常情况下,无论是主设备还是从设备,都可以在两个总线之间自由互换。两个总线都具有可寻址的从站(尽管具体的地址分配在两个总线之间可能有所不同)。总线以相同的速度运行,最高可达100kHz,但I²C总线有400kHz和2MHz版本。显然,只有在100kHz以下才能确保使用所有设备的两个总线之间的完全兼容性。
本应用程序说明着重于两种总线之间的显著差异。虽然假设读者对I²C总线和/或SMBus有一些了解,但让我们首先回顾一些协议基础知识:
启动和停止事件。这是特别重要的,因为它们是向需要进入初始化或重置状态的接口发出信号的方式。
数据和时钟必须高才能产生Start和Stop。除非Data (I²C为SDA, SMBData为SMBus)和Clock (I²C为SCL, SMBus为SMBClk)线路都空闲(没有拉低),否则主服务器不能生成Start或Stop。这是采用开放式集电极总线的结果。
启动和停止条件是唯一的时间,将有一个过渡在数据线上,而时钟是高。
只有在通信过程中时钟处于低电平时,数据才能改变状态。data上的数据必须总是在时钟高电平之前准备好,并且只有在时钟低电平之后才可以更改(Start和Stop除外)。
图1所示 一个典型的通信,显示开始和停止条件
超时和(作为超时的结果)最小时钟速度是I²C总线和SMBus之间最重要的区别。
I²C总线= DC(无超时)
SMBus = 10kHz (35mS超时)
超时是指当时钟低于超时时间(通常为35mSec)时,从设备重置其接口。超时的使用还规定了时钟的最小速度,因为它永远不会静止。因此,SMBus具有最小时钟速度规范。相比之下,I²C总线可以无限期地保持静态。在i2c总线中,只要需要处理数据,主站或从站都可以保持低时钟。
所有这些都是两个总线处理从属错误和从这些错误中恢复的结果。要理解错误恢复,请考虑有两种状态:Start和Stop,在适当设计的I²C或SMBus从设备上,这两种状态指示从设备接口进入特定的状态。在Start的情况下,接口应该初始化自身并准备好接收通信。无论Start条件之前是什么,这都应该发生(例如,如果从服务器处于通信的中间,而主服务器在通信中感到困惑,不得不重新开始)。在Stop的情况下,接口应该再次初始化自身,但应该在任何新的通信之前期待Start。开始和停止都是时钟高时发生的唯一数据转换。为了使数据上的转换发生,数据线(和时钟线)必须是“自由的”,以允许主机根据需要在线上设置高点和低点。
在i2c总线中,如果从机锁定并保持低时钟或低数据,错误恢复是不可能的。很少从设备实际上有能力保持时钟。因此,最常见的总线错误是从设备最终处于数据(数据线)低的状态。在I²C总线中,主机通过对时钟进行时钟时钟,直到数据高,然后发出开始指令,然后发出停止指令来完成错误恢复。
与I²C总线相反,SMBus从站在时钟低的时间超过SMBus规范中规定的35mS超时时,就会复位接口。因此,SMBus主机(如Intel PIIX4)没有内置任何错误恢复例程。实际上,从设备需要同时检查时钟和数据,尽管SMBus规范没有规定这样做。应该这样做,因为经验表明,处于错误状态的slave可以保持低数据,即使时钟可以很高。完全根据SMBus规范实现超时并不能解决这种错误模式。
我²C奴隶 | SMB奴隶 | |
我²C主 | 时钟必须是>10千赫 | |
SMB主 | 可能会封锁巴士 |
SMBus的时钟速度被限制在100kHz,而I²C允许的速度高达400kHz。
尽管两个总线之间的逻辑级规范存在差异,但通常设备可以随意混合和匹配。事实证明,SMBus或I²C总线由于电平差异而发生故障的情况非常罕见。当我们比较图1中所示的各个级别规格时,这可能会让人感到惊讶。
图2 这是I²C总线和SMBus之间电平规格的比较。对于3伏~ 5伏的电源,给出I²C-V(DD)相关的高、低量程
为了进行进一步的比较,表2列出了这些规范。
高 | I(2)C (V) (DD)依赖 | 0.7 × v (dd) |
我²C固定 | 3.0 v | |
SMBus | 2.1 v | |
低 | I(2)C (V) (DD)依赖 | 0.3 × v (dd) |
(2) C固定的 | 1.5 v | |
SMBus | 0.8 v |
虽然似乎有相当多的水平规格之间的差异,设备互换性没有被证明是一个问题,在这方面。这是因为主电源和从电源的输出电压几乎总是接近全电压。
在电压级别的讨论中不太明显的是,这些级别还指定了总线之间不同的电流。SMBus的最小接收电流为100µa,最大接收电流为350µa,而I²C总线的接收电流为3mA。这又将决定上拉电阻的最低可接受值,其示例如下表所示。
3 V V (DD) | 5 V V (DD) | |
I2C总线 | 比;1 k | 比;1.6 k |
SMBus | 比;8.5 k | 比;14 k |
实际上,在SMBus系统中遇到上拉电阻值并不罕见,因为它低于推荐值而违反了此规范。一个非常流行的上拉电阻值范围,甚至在一些SMBus系统中,似乎是2.4k到3.9k。
I²C总线有一个称为General Call的地址,它是0000000,所有设计用于响应General Call的从机都将相应地行动。这是一种可以同时与系统上的多个设备进行通信的方法。
SMBus还提供了一条名为ALERT#的线路,不要与i2c通用呼叫地址混淆。这条线路充当SMBus主机的中断。在接收到中断后,SMBus主机可以发出警报响应。这个警报响应被发送到地址0001 100,任何产生中断的从设备都试图通过在总线上放置自己的地址来标识自己。具有最低地址的设备将占主导地位(由于开放收集器总线)。如果它得到服务并被清除,主服务器可以重复该过程,并通过可能发生的任何其他中断继续工作。
还有一些微妙的问题与上升和下降时间和母线电容有关,这些通常不是一个问题。此外,在使用很少遇到的Acknowledge和No Acknowledge条件方面存在一些协议差异。对于大多数主流选择的主人和奴隶,这些因素通常都不是问题。
超时时间和最小时钟速度
电压水平
上拉电阻值和电流水平
我(2)C | SMBus | |
超时 | 没有 | 是的 |
最小时钟速度 | 直流 | 10千赫 |
最大时钟速度 | 100kHz (400kHz和2MHz也可用) | 100千赫 |
V(高) | 0.7 × V(DD), 3.0V固定 | 2.1 v |
V(低) | 0.3 × V(DD), 1.5V固定 | 0.8 v |
马克斯,我 | 马3 | 350µ |
时钟命名法 | sci | SMBCLK |
数据命名法 | SDA | SMBDAT |
一般电话 | 是的 | 是的 |
提醒# | 没有 | 是的 |
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308