至于I2C和SMBus,很多人很少在细节上谈及和理解他们的不同,包括很多国外的简报,文章也经常是交替的混用和描述。

事实上,在一般使用中,I2C总线和SMBus没有太大区别,实际布线几乎没有区别。即使是直连,大部分也能正确安全的通信和操作。但是,如果真的要仔细探索,还是有很多不同的。如果电子设计工程师不能区分两者的真正区别,必然会在未来开发设计的验证和纠错阶段造成麻烦。所以本文将从各个层面解释I2CBus和SMBus的细微差别,希望能给你带来一些帮助。

应用背景和版本演变的区别

首先从规范制定的背景出发,I2C是设计电视应用时开发的一个界面,第一版是1992年出版的;另一方面,SMBus是英特尔和金霸王联合开发笔记本电脑智能电池时开发的接口。第一版出版于1995年。然而,小型巴士文件也提到,小型巴士确实源自I2C。

I2C源于电视设计,但随后向总路线发展,各种电子设计有机会使用I2C;而SMBus则开发了高级配置和电源管理接口管理消息传递接口和控制传递接口,它们是规范的基础。

虽然I2C和SMBus的制定时间不同,但都在2000年左右进入了成熟的修订。I2C流程改版的主要需求是加速,而SMBus更适合智能电池和ACPI的需求。

I2C的三大修改:

1992 v1.0

1998 v2.0

V2.1,2000

SMBus的三大修订版:

1995 v1.0

1998 v1.1

2000年版本2.0

电气特性的差异:逻辑电平、电流限制和相关限制的定义

确定I2C高/低逻辑电平的方法有两种:相对测定法和绝对测定法。相对测定基于电压Vdd,Hi为0.7Vdd,lo为0.3vdd。绝对测定与TTL电平测定相同,并且直接指定Hi/Li电压,Hi为3.0V,Lo为1.5V..相对的SMBus只是绝对认可,水平和I2C不一样,Hi是2.1V,Lo是0.8V,和I2C不完全一致,但也算偏交。

然而,SMBus还增加了一组更低的电压电平确定,Hi为1.4V,lo为0.6V,这是为了使使用SMBus的设备更具成本效益。

了解了电压,就有了电流。由于SMBus从一开始就用在笔记本电脑上,所以节电性能比I2C好,只需要100 mA就能保持工作,而I2C需要3mA。同样的低功耗特性也反映在漏电流要求中。I2C的最大漏电流是100uA,而SMBus是1uA,但1uA似乎太苛刻了。使用SMBus的器件在验证和测试中耗费了太多的成本和精力,所以在后来的SMBus 1.1版本中放宽了漏电流上限,可以达到5uA。

其次,还有相关限制。I2C有线路电容的限制,而SMBus没有,但它也有类似的支持规范,即电平拉低时的电流限制。当SMBus的集电极开路引脚接通且线路接地时,流经接地的电流不能高于350uA。此外,上限电流具有相同的规格,最小值不小于100uA,最大值不超过350uA。

由于对电流有限制,可以很容易地推断出上拉电阻的电阻值范围在5V Vdd时大于1.6千欧,在3V Vdd时大于1千欧,在5V Vdd时大于14千欧,在3V Vdd时大于8.5千欧。但是,这个定义并不是牢不可破的。在一般实践中,2.4k〜3.9kohm电阻值也可用于SMBus。

注:I2C的时钟线叫SCK或SCL,数据线叫SDA。SMBus的时钟线叫SMBCLK,数据线叫SMBDAT。

I2C和SMBus在逻辑电平上对电压有不同的定义。基本上I2C更灵活更灵活,而SMBus更注重省电。

时差和测试

在物理层空的要求完成之后,物理层的时间又来了,也就是计时上的差异。

就工作频率而言,I2C在这方面相当丰富,最低频率为0Hz ,最高频率为100kHz,400kHz,甚至3.4MHz。与SMBus相比,它非常有限,最慢不低于10kHz,最快不高于100kHz。很明显,I2C和SMBus的交叉操作频率在10 kHz到100 kHz之间。

SMBus,用于笔记本电脑的电池管理、PC配置管理、功耗管理,很容易理解不需要更高工作频率的原因。只要传输少量的监管信息和控制指令,就不需要太高速。广泛使用的I2C自然希望使用更高的传输速率来满足各种可能的需求。然而,人们可能会想为什么SMBus的速度要求最低。为什么不放宽到和I2C一样的最低速度限制呢?

SMBus必须保持10kHz以上的工作频率,主要用于管理和监控。另一个意图是,在保持一定传输速度的同时,通过添加参数,很容易知道总线当前是否空闲,从而省略在传输过程中逐个检测stop信号,或者持续保持STOP检测辅以附加参数检测,使得总线空闲后可以更有效、更快速地重用。

在传输速度要求之后有数据保持时间要求。SMBus规定SMBDAT上的数据必须在SMBCLK线电平下降后保持300nS,但I2C没有同样的强制要求。

同样,SMBus也要求接口复位后超时,一般是35mS,I2C在这方面没有限制,可以随意扩展。从属SMBus还要求频率处于Lo电平时的最大持续时间不得超过限值,以避免收发器两端因长期处于Lo电平而出现时序脱轨。

此外,I2C和SMBus对信号的上升时间和下降时间也有不同的细节,必要时必须确认,或者在验证过程中稍加注意。

智能电池或ACPI的实施、监督和控制需要SMBus作为底层的备份。图为一个简单的多组智能电池系统,其中有两组智能电池A和B。

“已完成”和“未完成”机制之间的强制性差异

不仅是电气和时序的差异,更深层次的协议机制也是不同的。在I2C,在主终端的发送端与接收端通信之前,受控端的地址信息会在总线上广播,每个接收端都会接收到地址信息,但只有与地址信息对应的接收端才会发送“正确”响应,让发送方知道对应的接收方已经准备好,可以通信。

然而,I2C并不强迫接受方做出回应或保持沉默。即使静默,发送端也会继续工作,开始数据传输,发出读/写指令。这种机制在一般应用中仍然是可行的。但是,在一些实时应用中,任何动作和机制都有一定的时限要求,因此这种可选的响应方式会造成问题,并可能导致受控端。

同样的情况,在SMBus上,接收方收到地址信息后不允许响应,每次都要响应。为什么要强行回应?其实和SMBus的应用密切相关。有时,连接到SMBus的受控设备会被动态添加和删除,例如更换新电池,或者将笔记本电脑与DOCK PORT连接等。如果连接的设备发生了变化但没有响应,那么主控端的程序就没有掌握整个系统的最新配置,从而导致误操作。

类似的情况也适用于ACPI。PC内外往往有一些可以动态添加和删除的设备,比如内部风扇和外部打印机,也应该对主控终端发送的地址信息强制完整响应。

地址操作和数据传输有所不同。在I2C,虽然从设备响应主设备发送的地址,但在后续的数据传输中,有些事务必须先处理后响应,因此原始传输无法继续。此时,从机必须向主机发送“不适当”的响应,向主人表示奴隶正忙于其他事务。

另一方面,SMBus和I2C一样,会向主机表示,Slave没有正确接收和发送带有NACK回复的信息,但是SMBus的Slave会在每个后续的Byte传输中发送NACK回复。这种设计的原因是,系统总线没有其他表示可以要求主机重新发送。更直接地说,NACK机制在SMBus标准中是强制性的,任何消息传输都是非常重要的,不允许泄漏。

I2C完成一段地址或数据信息的传输后,接收端可以发出消息收到和失败的响应。SMBus也有相同的机制,但是由于应用程序的原因,有一个更强制性的回显请求。

传输协议的子集和超集

交互通知机制有区别,是否强制,协议也有区别。事实上,SMBus的通信协议和协议中使用的消息格式仅取自I2C规范中数据传输格式定义中的子集。因此,如果I2C与SMBus混合使用,I2C设备在访问SMBus设备时只能使用SMBus的协议和格式。但是,如果使用I2C标准访问方法,它们将无法正确访问。

此外,在I2C规范中有一个通用调用方法。当发送地址信息“000000”时,I2C上的所有从属设备都应该响应它。这种机制适合于Master向所有从机更新和传递广播消息,是一种整体和批量的操作模式。

SMBus有相同的General Call机制,但是另外SMBus有一个特殊的ALERT机制,但是这只能通过在频率线和数据线之外增加另一条线来实现。虽然报警被称为报警,但它实际上是为了中断,从机可以拉低SMBSUS线路的电位,这意味着向主机发送中断报警,要求主机尽快为从机提供传输服务。

作为对该服务请求的响应,主机通过I2C/SMBus的频率线和数据线进行通信,但是您如何知道该通信只是主机和从机之间的一般通信?还是专门针对Slave的中断要求的服务响应?

这主要是通过主机发送的地址信息来区分的。如果是响应中断的服务,地址信息必须是“0001100”。当从机收到“0001100”的地址信息时,就知道这是主机专门提供的中断服务通信。

所以软件工程师要注意的是,在规划的时候,所有Slave一定不能占用地址“0001100”来使用ALERT机制在I2C短寻址中指定了一些保留自用的地址,在最初的设计和定义中应该注意,以免以后因为抢占而重写软件的麻烦。

补充提醒一下,SMBSUS也是一条在集电极开路外有上拉电阻的线路,所以一个从机拉低电位后,其他从机检测到电位被拉低,说明有一些从机在和主机进行中断请求和响应服务。需要等待抢占中断服务权的从机被服务,然后再将SMBSUS释放到高电平,才能继续“看谁能先拉低线路电平?”争取服务中断的方法。

转载自郭长友博客

———————————广告

1.《SMBus I2C与SMBus之间的差异》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《SMBus I2C与SMBus之间的差异》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1699306.html