关 闭

新闻中心

EEPW首页 > 安全与国防 > 设计应用 > 对I2C信号和SMBus信号进行无毛刺快速隔离的方法

对I2C信号和SMBus信号进行无毛刺快速隔离的方法

——
作者:时间:2007-12-26来源:收藏

  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公司 (http://www.agilent.com/)的 hcpl2300 光隔离器的组合,能满足 400khz 增强 i2c 总线规范的定时要求。总传输延迟大约为 100 纳秒,因此您可以调节逻辑阈值来适应其它要求。虽然您可以使用该电路来使sda 和 scl 线支持时钟完全同步,但只要主设备的通信速度不快于最慢的从设备,就不必使用这种额外的电路。如果您不需要时钟同步,则您可在scl中 使用一个光耦合器。

隔离器相关文章:隔离器原理


评论


相关推荐

技术专区

关闭