I2C信号和SMBus信号的快速隔离
- 格式:doc
- 大小:116.50 KB
- 文档页数:3
I2C Bus与SMBus间技术差异前言:关于I2C与SMBus,许多人很少去谈论与了解两者的细节差异,包括很多国外的简报,文章也经常将两者混写、交杂描述、交替运用。
确实,在一般运用下,I2C Bus与SMBus没有太大的差别,从实际接线上看也几乎无差异,甚至两者直接相连多半也能相安无误地正确互通并运作。
不过若真要仔细探究,其实还是有诸多不同,如果电子设计工程师不能明辨两者的真实差异,那么在日后的开发设计的验证纠错阶段必然会产生困扰,为此本文将从各层面来说明I2C Bus与SMBus的细微区别,期望能为各位带来些许帮助。
我写这篇文章,可以理解为郭長祐先生博客中相关文章的读书笔记,我可没有那么高的造诣,关于I2C Bus的基础,可参考先生之前的「I2C 界面之线路实务」,网址为:/n/article.asp?id=304799064272FED148256FDC00481D68当然也可以去参考Philips半导体网站的I2C官方规格:/acrobat/literature/9398/39340011.pdf运用背景、版本演进之别首先从规格的制订背景开始,I2C是在设计电视应用时所研发的界面,首版于1992 年发表;而SMBus(System Management Bus)则是Intel与Duracell (金顶电池)共同制订笔记本电脑所用的智能型电池(Smart Battery)时所研发的接口,首版于1995 年发表,不过SMBus文件中也提及,SMBus确实是参考自I2C,并以I2C为基础所衍生成。
I2C起源于电视设计,但之后朝通用路线发展,各种电子设计都有机会用到I2C;而SMBus则在之后为PC所制订的先进组态与电源管理接口(Advanced Configuration & Power Interface;ACPI)规范中成为基础的管理讯息传递接口、控制传递接口。
虽然I2C与SMBus先后制订时间不同,但都在2000年左右进入成熟化改版,I2C的过程改版以加速为主要诉求,而SMBus以更切合Smart Battery及ACPI的需求为多。
i2c隔离方案随着现代电子设备的不断发展,对于电路间隔离的需求越来越重要。
随之而来的是对于I2C通信协议的隔离方案的需求。
本文将介绍i2c隔离方案的原理、应用以及一些常见的解决方案。
一、i2c通信的原理和特点I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接芯片之间的通信。
它采用主从结构,通过两根线(时钟线SCL和数据线SDA)实现通信。
I2C通信具有如下特点:1. 高效:I2C通信占用的引脚数量较少,可以在多个设备之间共享同一个总线,提高了系统的灵活性和简洁性。
2. 速度可变:I2C通信的速度可以根据需求进行调整,对于不同的应用场景可以选择不同的速度。
3. 多设备支持:I2C通信协议支持多个设备共享同一个总线,通过每个设备有不同的地址来实现区分。
4. 传输距离有限:I2C通信协议在传输距离方面存在限制,对于长距离通信需要考虑信号衰减和抗干扰能力。
二、i2c隔离的需求尽管I2C通信具有诸多优点,但在一些特殊情况下,需要对I2C信号进行隔离,以确保系统的可靠性和稳定性。
1. 地址冲突:当多个设备位于不同电源域或者地线域中时,可能会出现地址冲突的情况。
通过隔离I2C信号可以解决这个问题。
2. 抗干扰:长距离传输或者噪声环境下,I2C信号容易受到干扰,导致通信错误。
隔离可以提高I2C信号的抗干扰能力。
3. 电气隔离:一些应用场景需要进行电气隔离,例如隔离高电压和低电压环境下的通信。
I2C隔离可以满足这方面的需求。
三、i2c隔离的解决方案1. 光耦隔离:光耦隔离是一种常见的I2C隔离方案。
它通过光电耦合器将电路分为输入和输出两个部分,实现了电气隔离。
2. 磁耦隔离:磁耦隔离采用磁耦合器将电路分离,实现电气隔离。
这种隔离方案可以提供更高的隔离电压和抗干扰能力。
3. 电容隔离:电容隔离通过电容耦合器实现电路的隔离。
相比于光耦和磁耦隔离,电容隔离的成本更低,但是隔离性能也有所下降。
I2C与SMBus的区别SMBus是一种二线制串行总线,1996年第一版规范开始商用。
它大部分基于I2C总线规范。
和I2C一样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能特性,但只工作在100KHZ且专门面向智能电池管理应用。
它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始位,在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。
SMBus与I2C总线之间在时序特性上存在一些差别。
首先,SMBus需要一定数据保持时间,而I2C总线则是从内部延长数据保持时间。
SMBus具有超时功能,因此当SCL太低而超过35 ms时,从器件将复位正在进行的通信。
相反,I2C采用硬件复位。
SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。
SMBus只工作在从10kHz到最高100KHZ。
最低工作频率10kHz是由SMBus超时功能决定的。
Comparing the I2C Bus to the SMBusAbstract: The I2C bus and the SMBus are popular 2-wire buses that are essentially compatible with each other. Normally devices, both masters and slaves, are freely interchangeable betw een both buses. Both buses feature addressable slaves (although specific address allocations can vary between the two). The buses operate at the same speed, up to 100kHz, but the I2C b us has both 400kHz and 2MHz versions. Complete compatibility between both buses is ensured o nly below 100kHz. This application note focuses on the significant differences between I2C a nd SMB.The I2C bus and the SMBus are popular 2-wire buses that are essentially compatible with each other. Normally devices, both masters and slaves, are freely interchangeable between both b uses. Both buses feature addressable slaves (although specific address allocations can vary between the two buses). The buses operate at the same speed, up to 100kHz, but the I2C bus h as both 400kHz and 2MHz versions. Obviously, complete compatibility between both buses using all devices is ensured only below 100kHz.This application note focuses on the significant differences between the two buses. Although it is assumed that the reader has some knowledge of the I2C bus and/or the SMBus, let's fir st review some protocol basics:•Start and Stop events. These are especially important in that they are ways of signa ling to an interface that it needs to go to an initialized or reset state.•Data and Clock must be high to generate Start and Stop. A master can't generate a S tart or Stop unless both the Data (SDA for I2C and SMBData for SMBus) and Clock (SCLfor I2C and SMBClk for SMBus) lines are free (not pulled low). This is a consequence of being an open-collector bus.•Start and Stop conditions are the only times there will be a transition on the Data line while Clock is high.•Data can change state only when Clock is low during a communication. The data on Da ta must always be ready just prior to a high on Clock and be changed only after Clock has gone low (with the exception of Start and Stop).Figure 1. A typical communication, showing the Start and Stop conditions.Timeout and Clock SpeedTimeout and (as a consequence of timeout) minimum clock speed are the most important differe nces between the I2C bus and the SMBus.I2C Bus = DC (no timeout)SMBus = 10kHz (35mS timeout)Timeout is where a slave device resets its interface whenever Clock goes low for longer than the timeout, typically 35mSec. Use of a timeout also dictates a minimum speed for the cloc k, because it can never go static. Thus, the SMBus has a minimum-clock-speed specification. By comparison, the I2C bus can go static indefinitely. In the I2C bus, either a master or a slave can hold the clock low as long as necessary to process data.All of this comes about as a result of how the two buses deal with slave errors and recoveri ng from those errors. To understand error recovery, consider that there are two states, Star t and Stop, which on a properly designed I2C or SMBus slave dictate that the slave interface go to a specific state. In the case of a Start, the interface should initialize itself and be ready to receive a communication. This should occur regardless of what preceded the Start condition (for example, if the slave was in the middle of a communication in which the mast er got confused and had to start over). In the case of a Stop, an interface should again ini tialize itself, but should be expecting a Start prior to any new communication. Both Starts and Stops are the only Data transitions that take place when Clock is high. In order for the transitions on Data to take place, the Data line (and the Clock line) must be "free" to all ow the master to place highs and lows on the line as it needs.In the I2C bus, if the slave locks up and holds either Clock or Data low, error recovery is impossible. Very few slave devices actually have the ability to hold Clock. As a result, the most common bus error is slave devices that have ended up in a state where Data (the data l ine) is low. In the I2C bus, a master accomplishes error recovery by clocking Clock until Da ta is high and then issuing a Start followed by a Stop.In contrast to the I2C bus, SMBus slaves are expected to reset their interface whenever Cloc k is low for longer than the timeout specified in the SMBus specification of 35mS. As such, SMBus masters such as the Intel PIIX4 don't have any error recovery routine built in. In rea lity, slave devices need to examine both Clock and Data, even though the SMBus specification doesn't dictate that. This should be done, as experience has shown that slaves in an errorstate can hold Data low, even though Clock can be high. Implementing timeout exactly accordi ng to the SMBus specification doesn't address this error mode.Table 1. Considerations for Mixing Devices and Masters with Regard to TimeoutI2C Slave SMB SlaveI2C Master Clock must be > 10kHzSMB Master Potential for bus lockupThe SMBus is limited to a clock speed of 100kHz, whereas I2C permits speeds up to 400kHz. Logic LevelsDespite differences in logic-level specifications between the two buses, generally devices c an be mixed and matched with abandon. It has proven rare that either an SMBus or an I2C bus has had a fault due to level differences. This may come as a surprise when we compare the re spective level specifications as shown in Figure 1.Figure 2. This is a comparison of level specifications between the I2C bus and the SMBus. I2 C-V DD-related high and low value ranges are shown for power supplies from 3 volts to 5 volts.For further comparison, Table 2 lists the specifications together.Table 2. Level Specifications for the I2C Bus and the SMBusV DD is typically expected to be between 3 volts and 5 volts.High I2C V DD Dependent 0.7 * V DDI2C Fixed 3.0 VSMBus 2.1 VLow I2C V DD Dependent 0.3 * V DDI2C Fixed 1.5 VSMBus 0.8 VAlthough there may seem to be quite a bit of difference between level specifications, device interchangeability has not been shown to be a problem in this regard. This is because maste rs and slaves virtually always have output-voltage swings close to the full supply voltage.Pullup Resistors and Current LevelsWhat wasn't readily evident in the discussion of voltage levels is that these levels are als o specified with different currents between the buses. The SMBus specifies a minimum sink cu rrent of 100μA, and a maximum of 350μA, compared to 3mA for the I2C bus. This in turn woul d determine the lowest acceptable value of the pullup resistor, examples of which are shown in the table below.Table 3. Minimum Pullup Resistor Values per Bus Specifications3V V DD 5V V DDI2C Bus > 1k > 1.6kSMBus > 8.5k > 14kIn reality, it is not unusual to encounter pullup resistor values in SMBus systems, which vi olate this specification by being lower than recommended. A very popular range for pullup re sistor values, even in some SMBus systems, seems to be 2.4k to 3.9k.General Call and Alert ResponseThe I2C bus has an address called General Call, which is 0000 000, and all slaves designed t o respond to the General Call will act accordingly. This is a means by which several devices on the system can be communicated with simultaneously.The SMBus also has a provision for a line called ALERT#, not to be confused with the I2C Gen eral Call address. This line acts as an interrupt to the SMBus master. Upon receipt of an in terrupt, the SMBus master can issue an Alert Response. This Alert Response is sent to addres s 0001 100, and any slave device that generated an interrupt attempts to identify itself by putting its own address on the bus. The device with the lowest address will dominate (due to the open-collector bus). If it is serviced and cleared, the master can repeat the process a nd work up through any other interrupts that may have occurred.Other Little DetailsThere are subtler issues having to do with rise and fall times and bus capacitance that are generally not a concern. In addition, there are some protocol differences with regard to use of Acknowledge and No Acknowledge conditions that are rarely encountered. With most mainstr eam choices of masters and slaves, none of these factors is typically a problem.Summary of Significant Differences1.Timeout and minimum clock speed2.Voltage levels3.Pullup resistor values and current levelsTable 4. ComparisonsI2C SMBus Timeout No Yes Minimum Clock SpeedDC 10kHzMaximum Clock Spe ed 100kHz (400kHz and 2MHz also available)100kHzV HIGH0.7 * V DD, 3.0 V Fixed 2.1V V LOW0.3 * V DD, 1.5 V Fixed 0.8V Max I 3mA350μAClock Nomenclatur e SCLSMBCLKData Nomenclature SDASMBDAT General Call Yes Yes Alert# No Yes。
i2c隔离方案I2C是一种常见的串行通信协议,广泛应用于许多嵌入式系统中,例如传感器、显示器、嵌入式系统等等。
但是,由于I2C总线上的设备之间的电气连接是共享的,因此可能存在数据泄漏、EMI干扰甚至设备损坏等问题。
为了解决这些问题,I2C隔离方案最近成为了研究的热点。
简介I2C通信是一种串行通信技术,全名为Inter-Integrated Circuit,是一种由Philips(现在为NXP)开发的面向设备通信的总线。
该总线由两条单向线(SDA和SCL)组成,其中SDA线用于双向数据传输,SCL线用于时钟信号传输。
I2C总线上的所有设备都使用相同的总线连接,因此它可以通过在总线上发送特定的命令来实现设备之间的通信。
I2C隔离方案的目的是降低共享I2C总线所带来的风险。
共享总线会带来一些风险,如电流峰值可能会损坏与总线连接的设备,例如传感器或其他器件,或干扰导致总线上的数据损坏。
隔离I2C 总线可以解决这些问题,同时它还可以使通信更加安全和可靠。
隔离方案I2C隔离方案基本上分为两类:基于变压器和基于光电隔离器的方案。
基于变压器的隔离方案是使用高频磁场在两个物理电气隔离区之间传输I2C信号。
这种方案可以防止设备之间的电流和电气噪声相互干扰。
变压器提供了一种高效且经济的方式,用于隔离I2C通信。
在I2C总线上,这种隔离器通常置于从器件和主机之间,以隔离它们以及所有其他器件之间的电气连接。
基于光电隔离器的方案是使用光电耦合器来传输I2C信号。
传输过程中,输入先被传输到发光二极管(LED),然后转换到光电晶体管(OPT),最终转化为电信号输出到输出端口。
光耦合器可用于隔离来自传感器或其他外部设备的高电压或高电流信号。
优点I2C隔离方案可以有效地降低传输过程中的EMI干扰和电气噪声的影响,提高通信准确性和实现更高的信号传输速率。
通过广泛应用于许多嵌入式和自动化应用程序中,可以实现更高级别的安全和数据完整性,减少可能发生的故障和损坏的风险。
i2c隔离方案I2C是指Inter-Integrated Circuit,是一种串行通信协议,可在多个设备之间进行数据传输。
然而,在特定的应用场景中,I2C信号会受到干扰,导致通信过程中的问题。
为了解决这些问题,开发了I2C隔离方案。
本文将介绍I2C隔离方案的原理、应用和优势。
一、I2C隔离方案的原理I2C隔离方案通过隔离器件将I2C总线分为两个电气隔离区域,分别为主机端和从机端。
在主机端,I2C信号经过隔离器件进行转换,并传输到从机端。
这样做的目的是隔离主机与从机之间的地线和电源线,从而防止地线回路、不同地电位和噪声干扰对I2C通信的影响。
二、I2C隔离方案的应用1. 工业自动化:在工业自动化领域,传感器和执行器通常连接到控制器或PLC。
通过使用I2C隔离方案,可以防止地线回路引起的干扰,确保高可靠性和稳定性。
2. 医疗设备:医疗设备中经常使用I2C总线连接传感器和监测设备,如心率监测、血压计等。
通过使用I2C隔离方案,可以保障医疗设备的准确性和安全性。
3. 航空航天:在航空航天领域,I2C总线被广泛应用于飞行控制系统和通信系统。
I2C隔离方案可以提供可靠的通信和数据传输,确保飞行器的稳定性和安全性。
三、I2C隔离方案的优势1. 数据完整性:使用I2C隔离方案可以防止噪声和电气干扰对数据传输的影响,确保数据的完整性和准确性。
2. 地线回路隔离:I2C隔离器件可以有效隔离主机和从机之间的地线回路,避免地线回路引起的干扰问题。
3. 电气隔离:通过电气隔离,可以消除不同地电位之间的干扰,提高系统的稳定性和可靠性。
4. 安全性提升:I2C隔离方案可以防止潜在的电源线干扰,提高设备的安全性和可靠性。
5. 简化系统设计:使用I2C隔离方案,可以减少对其他外部元件的需求,简化系统设计和布线。
结论I2C隔离方案在工业自动化、医疗设备、航空航天等领域具有重要的应用价值。
它通过隔离器件将I2C总线分为两个电气隔离区域,避免了地线回路和噪声干扰对通信的影响。
pca9306原理
PCA9306是一种双向I2C总线和SMBus电平转换器,通常用于在不同电平的I2C设备之间进行通信。
其原理主要涉及电平转换和双向通信两个方面。
首先,PCA9306能够实现双向电平转换,即可以将高电平转换为低电平,也可以将低电平转换为高电平。
这使得不同电平的I2C 设备能够在同一总线上进行通信,而不会因为电平不匹配而导致通信失败。
其原理是通过内部的电平转换电路,将输入的高电平信号转换为输出的低电平信号,或者将输入的低电平信号转换为输出的高电平信号,从而实现电平的匹配和转换。
其次,PCA9306还支持双向通信,可以实现在两个I2C设备之间的双向数据传输。
在通信过程中,PCA9306可以根据输入的数据信号来控制输出的数据信号,从而实现数据的双向传输。
其原理是通过内部的双向电平转换逻辑电路,根据输入的数据信号来控制输出的数据信号的方向,从而实现双向通信。
综上所述,PCA9306的原理主要包括电平转换和双向通信两个方面,通过内部的电平转换电路和双向通信逻辑电路,实现不同电
平的I2C设备之间的通信和数据传输。
这种原理使得PCA9306成为一种非常实用的电平转换器,广泛应用于各种需要不同电平设备之间通信的场合。
I2C和SMBus简介I²C(发⾳:I⽅C,在内核⽂档中写成I2C)是由Philips开发的协议。
它是⼀个慢的两线协议(变速,⾼达400khz),具有⾼速扩展(3.4 MHz)。
它提供了⼀种廉价的总线,⽤于连接不频繁或低带宽通信需求的许多类型的设备。
I2C⼴泛应⽤于嵌⼊式系统。
有些系统使⽤的变体不符合品牌要求,因此不被宣传为I2C,⽽是在不同的名称下,例如TWI(双线接⼝)、IIC。
官⽅的I2C规范是NXP Semiconductors发布的“”(UM10204)。
SMBus (System Management Bus)基于I2C协议,主要是I2C协议和信令的⼦集。
许多I2C设备将在SMBus上⼯作,但⼀些SMBus协议添加了超出I2C协议所需的语义。
现代PC主板依赖于SMBus。
最常见的通过SMBus连接的设备是使⽤I2C eeprom配置的RAM模块和硬件监控芯⽚。
因为SMBus主要是通⽤I2C总线的⼦集,所以我们可以在许多I2C系统上使⽤它的协议。
然⽽,有些系统不满⾜SMBus和I2C电⽓约束;以及其他系统不能实现所有通⽤SMBus协议语义或消息的协议。
术语使⽤官⽅⽂档中的术语,I2C总线连接⼀个或多个主芯⽚和⼀个或多个从芯⽚。
简单的I2C总线master 芯⽚是开始与从芯⽚通信的节点。
在Linux内核实现中,它被称为 adapter 或总线。
适配器驱动程序位于drivers/i2c/busses/⼦⽬录中。
algorithm 包含可⽤于实现整个I2C适配器(adapters)类的通⽤代码。
每个特定的适配器驱动程序要么依赖于drivers/i2c/algos/⼦⽬录中的算法驱动程序,要么包含它⾃⼰的实现。
slave 芯⽚是在主芯⽚寻址时响应通信的节点。
在Linux中,它被称为 client(客户端)。
客户端驱动程序被保存在⼀个特定于它们所提供的特性的⽬录中,例如⽤于gpio扩展程序的drivers/media/gpio/以及⽤于视频相关芯⽚的drivers/media/i2c/。
新版本已出,不再支持5V VDD,改为外置LDO,驱动能力更强。
软件包下载地址(将以下链接拷贝到另一地址栏打开):/s/1dDHyJN7使用方法见下面的第五、六、七项。
一、功能简介USB转SMbus/I2C转接板是一款实用方便的多功能转换板。
通过电脑主机上位机软件,很方便地和具有SMBus或I2C设备的接口通讯。
二、SMBus和I2C概念I2C总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。
是微电子通信控制领域广泛采用的一种总线标准。
它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。
SMBus 是System Management Bus 的缩写,是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯。
它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。
三、SMBus与I2C的差别SMBus与I2C总线之间在时序特性上存在一些差别。
首先,SMBus需要一定数据保持时间,而I2C总线则是从内部延长数据保持时间。
SMBus具有超时功能,因此当SCL太低而超过35 ms时,从器件将复位正在进行的通信。
相反,I2C采用硬件复位。
SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。
SMBus只工作在从10kHz到最高100kHz。
最低工作频率10kHz是由SMBus超时功能决定的四、接线标识VDD--红色 GND--白色或黑色 SDA--黄色或紫色 SCL--绿色或蓝色五、接线方式I2C设备没有外接供电时,可以选择转接板的VDD(3.3V或5V)给I2C设备供电,值得注意的是转接板上的VDD只有100MA的驱动能力,如果I2C设备需要更大电流,请接外部电源,使用第二种接法。
SMBUS(I2C)原理SMbus 最早是由Intel公司提出來的. 現在由SBS管理維護這一個規格. 此規格是用Philips的I2C簡化而來. SMbus 是由兩條訊號所組成的一種匯流排. 是為了在系統上較慢速的裝置及電源管理裝置之間的溝通使用. 使系統可取得這些裝置的製造廠商,型號,一些控制資訊,錯誤訊息及狀態.這兩條訊號為SMBCLK 和SMBDATA. 這和I2C 上的Clock(SCL) 和Data(SDA) 是一樣的.( 取材自Philips I2C)上圖為一SMbus 的架構圖. 不同的裝置都接在同一Bus 上. 在SMbus 上只有一個Master. 所有的命令均由此Master 發出. 其他的裝置(Slave) 只能接收Master 發出的命令或回覆資料給M aster.上圖為SMbus 開始及結束bus 的圖. 當SCL 為High 而SDA 由High 變Low 時表示開始一個SMbus 的命令. 當SCL 為High 而SDA 由Low 變High 時表示結束一個SMbus 的命令.這二個狀況在Smbus 裡是唯一的. 在一般傳送資料時均不可能發生. 而在一般傳送資料時則是在每一次SCL 的上升緣時的SDA 狀態來決定. 這些資料包含了仲裁,確認,送出資料給那一個裝置及送出的資料.或要取得那一個裝置的資料及由裝置送出的資料.關於I2C Bus與SMBus,許多人很少去談論與瞭解兩者的細節差異,包括很多國外的簡報文件也經常將兩者混寫、交雜描述、交替運用。
確實,在一般運用下,I2C Bus與SMBus沒有太大的差別,從實體接線上看也幾乎無差異,甚至兩者直接相連多半也能相安無誤地正確互通並運作。
不過若真要仔細探究,其實還是有諸多不同,如果電子設計工程師不能明辨兩者的真實差異,那麼在日後的開發設計的驗證除錯階段時必然會產生困擾,為此本文將從各層面來說明I2C Bus與SMBus的細微區別,期望能為各位帶來些許助益。
对I2C信号和SMBus信号进行无毛刺快速隔离的方法
I2C 是一种流行的串行协议,适用于电源控制器、ADC、DAC、EEPROM 以及其他器件。
在某些数据采集和电源控制设备中,您必须把I2C主设备与一个或多个从设备隔离开来,以便解决噪声、接地和安全等问题。
另外,虽然可以把128 个外设连接到总线,但在某一部位,地电位差和总线电容过大会使噪声余量和定时余量变小。
本设计思路表明如何利用用一种符合400kHz 增强型I2C 总线规范要求的方法,对I2C 或SMBus 信号进行快速的、无毛刺光隔离。
I2C 总线由双向时钟和数据线(SCL 和SDA)组成,SCL和SDA 均用电阻器或电流源来拉高电平。
各器件均用集电极开路的I/O 引脚连接到总线。
有一种隔离I2C信号的办法是用图1所示电路的变种来实现的,图1仅仅示出了SDA;SCL 工作原理与SDA相同。
图1,本电路是一种简单的I2C隔离器。
图 1 所示电路的工作原理是,把非隔离的SDA 线路电位拉低的一个器件会使一个光耦合器LED导通,从而使隔离的SDA 线路电位拉低,并使隔离侧的光耦合器LED不工作,反之亦然。
然而,如果隔离势垒两侧的器件正在拉低各自的SDA 线路的电位,则这些光耦合器就处于一种不确定状态,两个LED 部分导通。
当非隔离的器件释放其SDA 线路时,SDA线路上的电压上升,直到隔离侧的LED 能够完全导通为止。
只有这样,非隔离的SDA 线路才会再次变为低电平。
这种情况在I2C通信期间的各个时候都会发生,其中包括时钟同步(在SCL 线路上)、多主设备仲裁、SMBus 中断仲裁(在SDA 线路上)。
图2 示出了图1 所示电路的工作细节。
74HC125 三态非反相缓冲器仿真两个I2C 器件的漏极开路输出。
线上的逻辑低电平迫使输出端变为低电平,而逻辑高电平则使输出端处于高阻抗状态。
波形1 和波形 2 表示SDA缓
冲器和隔离的SDA 缓冲器的使能线的输入信号。
波形3 和波形 4 则分别表示相应的输出信号。
图2,简单的I2C 隔离器在某些情况下会产生大量毛刺。
这类电路以多种形式发表在报刊上,而且通常配有需要 5 ~ 10 mA LED 驱动电流的慢速光耦合器。
这些电路可在有限的设备中使用,但它们速度慢,而且仍然会产生毛刺。
试图用高速元件来克服速度问题和驱动问题,只会使这些电路变得几乎无法使用。
图1 所示电路使用需要500mA LED 驱动电流的高速HCPL2300 光耦合器。
如果两条SDA 线都保持为低电平,然后同时释放,则两个光耦合器就会互相对抗,形成振荡器(图3)。
这种振荡的特性取决于上拉电阻、供电电压和电容型数据线路(去掉9pF 示波器探头中的一个,就会使振荡停止,而用一个10pF 电容器代替这一探头,就会再次开始振荡)。
图3,在图1所示电路中使用高速元件会导致不可预测的行为。
图4,改进的I2C隔离器速度快,不会产生毛刺。
图 4 所示电路通过建立“高”(上拉至5V)、“拉低”和“被拉低”三种逻辑电平来解决这些问题。
当两侧都处于空闲高电平时,两个光耦合器均关断。
当某一侧把其SDA 线拉至低于0.4V(适合于集电极开路输出和漏极开路输出的安全假定值)时,比较器使其LED导通。
另一侧的SDA线拉低至大约0.6V,这仍被解释为逻辑低电平,但不会导致那一侧的LED 导通。
当两侧均在拉低各自SDA线电平时,两个LED 都导通。
在这种状态下,如果一侧释放其SDA线,那么它会很明显地从I2C器件输出的低电平升至大约0.6V。
图5,这一示波器照片示出了改进的I2C隔离器的工作情况。
图 5 示出了图 4 所示电路的工作细节。
LT1719 比较器和Agilent公司(/)的HCPL2300 光隔离器的组合,能满足400kHz 增强
I2C 总线规范的定时要求。
总传输延迟大约为100 纳秒,因此您可以调节逻辑阈值来适应其它要求。
虽然您可以使用该电路来使SDA 和SCL 线支持时钟完全同步,但只要主设备的通信速度不快于最慢的从设备,就不必使用这种额外的电路。
如果您不需要时钟同步,则您可在SCL中使用一个光耦合器。