应用笔记 3891

USB隔离


摘要 : 如果必须隔离一个与PC机连接的设备,人们很自然地会选择USB接口。USB广泛的工业支持和简易结构(USB电缆仅有4条线)使其成为一种通用的PC接口。USB控制器配合SPI接口的嵌入式系统可以很容易地实现电气隔离。SPI接口由简单的单向信号线构成,可在任何速率下运行。

概述

通用串行总线(USB)已经成为外围设备与个人计算机连接的标准方式。如果一个与PC连接的设备需要电气隔离,USB将是一个很自然的选择接口。USB的两个著名的隔离应用是基于PC平台的医疗设备和具有很大地电位差的工业应用。

USB基础信号

USB具有以下三种工作速率:
  • 低速,1.5Mbps
  • 全速,12Mbps
  • 高速,480Mbps
本文讨论全速(12Mbps) USB连接的光隔离,12Mbps的速度可满足一般数据传输的带宽要求,设计中使用廉价光耦,支持足够的数据传输速率。

USB连接器包含四条线:2条用于电源供电(VBUS和GND),2条用于USB数据传输(D+和D-)。VBUS提供5V电源,电流可达500mA。D+和D-为双向信号线,信号传输速率为12Mbps (每位83ns)。D+和D-信号电平为3.3V。

USB隔离的设计挑战

图1. 一个USB外设可以在三个位置隔离:位置1,USB总线;位置2,收发器接口;位置3,应用接口。现在绝大部分设计中,SIE和收发器集成在一起,无法在位置2实现隔离。
图1. 一个USB外设可以在三个位置隔离:位置1,USB总线;位置2,收发器接口;位置3,应用接口。现在绝大部分设计中,SIE和收发器集成在一起,无法在位置2实现隔离。

USB外设结构框图如图1所示。从右至左来看该图,USB收发器连接至D+和D-,发送或接收数据都由OE (输出使能)控制。中间单元是USB串行接口引擎(SIE),其作用是将总线信号(由收发器发送和接收)转换成字节数据或USB信号,以供USB外设使用。最左边的单元是应用电路,可能是微处理器、专用集成电路或数字信号处理器(DSP)。

标记1、2和3的灰色的长方形,显示了放置光耦、隔离USB设备与主计算机的三种可能位置。

图2. 示波器显示USB D+和D-信号(图1中的位置1),83ns的位时间和严格匹配的上升/下降时间,使光耦隔离很难保持信号的保真度。D+和D-是双向信号,使得隔离更加复杂。
图2. 示波器显示USB D+和D-信号(图1中的位置1),83ns的位时间和严格匹配的上升/下降时间,使光耦隔离很难保持信号的保真度。D+和D-是双向信号,使得隔离更加复杂。

位置1

下列理由说明在USB总线上进行光耦隔离是不切实际的,见图2
  1. 信号速率为12MHz,对于性价比较高的隔离器来说成本过高。
  2. D+和D-信号的传输延迟、偏差必须完全一致,使用光耦隔离器很难满足一致性要求。
  3. 总线为双向,而隔离器为单向,使光耦隔离更加复杂。而且对于一个使用集成收发器的外围设备,无法得到OE信号(指示传输方向)。

位置2

使用外置收发器的USB外设其收发器接口暴露在外部,对于这些单向信号可以考虑使用光耦隔离。尽管如此,这个位置和位置1有着相同问题:数据速率过高,而且有多路12MHz速率的信号需要隔离。VPO、VMO、RCV、VPI和VMI信号都运行在12MHz速率,必须严格保持这些信号传输延迟、偏差的一致性。此外,现代USB设计中将SIE和收发器集成在同一芯片,也很难获得这个接口。

位置3

这是最有希望实现隔离的位置,这个接口工作速率低于USB数据速率和线速率,且该接口可以完全由单向信号构成。事实上,一个理想的接口应该只使用少量单向信号,且这些信号的数据速率远低于USB的12MHz信号速率。

符合这些要求的理想接口是SPI (串行外围设备接口),该接口由Motorola定义,现已用于许多半导体器件。由于其简单、高效,SPI成为非常流行的接口。

SPI基础信号

表1. SPI信号
SPI Signal Description Comments
SS# Slave Select Selects the chip for data transmission, supplied by the master
MOSI Master Out Slave In Unidirectional data pin
MISO Master In Slave Out Unidirectional data pin
SCLK Serial Clock Serial clock, supplied by the master

表1给出了SPI接口的4个信号。SPI为主从式接口,主接口启动并控制与一个从接口的通信。主机提供从机选择信号(SS#)和串行时钟(SCLK),用于同步数据传输。SPI接口具有四种时钟模式,具体由2个模式信号CPOL (时钟极性)和CPHA (时钟相位)决定,这些信号表示为(CPOL, CPHA)。

图3描述了微处理器与SPI从设备间的SPI数据传输,图3采用最常见的SPI模式(0,0)。在(0,0)模式中,时钟在无效状态下为低电平。SPI主机在第一个SCLK上升沿之前将MOSI数据准备好。SPI数据在SCLK下降沿变化,主从设备均在上升沿对数据进行采样。

图3. 工作在模式(0,0)的SPI接口,如果SCLK信号为低有效(静止状态为高),同样的接口也可工作在模式(1,1)。这些低频信号易于进行光隔离。
图3. 工作在模式(0,0)的SPI接口,如果SCLK信号为低有效(静止状态为高),同样的接口也可工作在模式(1,1)。这些低频信号易于进行光隔离。

很容易在微处理器上实现SPI接口,即使是没有包含硬件SPI单元的微处理器。SPI接口只需要微处理器通过4个通用IO引脚(GPIO)构建图3信号,子程序可通过直接触发IO引脚的读写操作实现。

图4显示了USB外设控制器使用SPI接口时,SPI与USB的数据速率差异。图中,主控制器实现USB键盘功能,并周期性地点亮一个LED灯。图5所示SPI数据传输可由LED闪烁指示(触发一个输出位);USB通信为USB主机请求键盘数据。

两种总线之间数据速率的差异很显著。频率较低的单向SPI信号比12MHz的双向USB总线信号更易于隔离。SPI信号使隔离方法变得非常简单,能在任何频率下运行,适用于各种光隔离器。

图4. SPI数据速率和USB信号速率的比较。SPI信号更易于通过光耦传输。
图4. SPI数据速率和USB信号速率的比较。SPI信号更易于通过光耦传输。

系统如何按照图4使得存在巨大差异的USB控制器的SPI总线速率与USB信号速率协调工作呢? USB的优点之一是通过内部流量控制实现“自节流”。通过使用“NAK" (非应答)握手信号完成信号流量控制。由此,外围设备告知主机请求的数据还没准备好,主机应稍后再试。

SPI数据速率和USB NAK

图5. USB总线的低速外围设备对主机IN数据请求的响应。主机在信息包362-364中发出数据请求。外围设备发出信息包420表示数据准备就绪。插入的IN-NAK信息包为USB流量控制,外围设备在数据准备就绪之前始终响应NAK。
图5. USB总线的低速外围设备对主机IN数据请求的响应。主机在信息包362-364中发出数据请求。外围设备发出信息包420表示数据准备就绪。插入的IN-NAK信息包为USB流量控制,外围设备在数据准备就绪之前始终响应NAK。

图5显示了USB数据传输的流量控制机制。从信息包362开始,主机发出Get_Descriptor-Configuration请求。信息包363从第二个字节到最后一个字节的09表示主机请求外设发送9个字节的数据。外设在信息包364中对请求应答,然后对请求进行译码,并将请求数据装入数据FIFO的末端0处。低速外围设备需要一定时间才会应答这个请求,低速SPI总线会进一步延长响应时间。

988.667微秒后(信息包364后),主机在信息包366中开始请求发送数据。外设没有数据,USB硬件自动产生NAK握手响应,表明“忙碌中,稍后再试”。主机在信息包368中重试,并从外设获得同样的NAK应答。这个IN-NAK过程一直持续到信息包419,外设最终完成请求数据的装载,并在数据末端0处准备数据发送。此时,外设在信息包420中将以9字节的数据包响应取代NAK,主机在信息包421中应答。

IN-NAK响应(图5中用虚线矩形标出)可能发生多次,这意味着SPI接口的工作速率没有最低限制。允许设计者调整SPI数据速率,以适应高性价比设计中的光耦选择。

隔离USB设计实例

图6. 隔离USB设计原理图,左边部分由USB总线自身供电,右边部分使用隔离电源供电。在SPI接口处进行隔离,使得设计简单,并且不受USB总线时序的影响。
详细电路图(PDF, 204kB)
图6. 隔离USB设计原理图,左边部分由USB总线自身供电,右边部分使用隔离电源供电。在SPI接口处进行隔离,使得设计简单,并且不受USB总线时序的影响。

图6是利用Atmel®的低成本微处理器AtTiny13 (U6)、光耦HCPL-2531 (U3-5)和MAX3420E (U1)构建,MAX3420E是带有SPI接口的USB外设控制器。虽然U6不包含硬件SPI单元,通过对GPIO引脚进行“逐位控制”可以很容易地实现SPI接口。U1提供四个通用输入、四个通用输出引脚取代(加至) U6实现SPI接口的引脚。这个设计使用两个输出引脚驱动LED指示器D1和D2,一个输入引脚连接至按钮PB1。因为U1本身包含由SPI接口控制的IO引脚,这些IO与U6本质上是隔离的,因此不需要额外隔离。

图7. 在隔离接口两侧的SPI SCLK信号,上部:ISOVCC = 8.3V,ISOGND = 5V。下部:由USB供电:VCC = 3.3V,GND = 0V。
图7. 在隔离接口两侧的SPI SCLK信号,上部:ISOVCC = 8.3V,ISOGND = 5V。下部:由USB供电:VCC = 3.3V,GND = 0V。

图7显示了隔离接口两侧的SCLK信号,两条曲线的基线都在屏幕底部。上部曲线显示由U6产生的SCLK信号,但有5V的偏移。

图8. 隔离的SCK信号(上部)和处于MAX3420E侧的SCK信号(下部),扩大比例显示。
图8. 隔离的SCK信号(上部)和处于MAX3420E侧的SCK信号(下部),扩大比例显示。

图8是图7放大比例后的图形,用于说明光耦的性能。这个设计中选择的电阻使光耦在起始位置有0.5µs的延迟。SCLK中间部分的短脉冲由U6驱动SCLK IO引脚的程序产生。U6的这部分程序如图9所示。

图9. AtTiny13对MAX3420E寄存器进行读操作的汇编程序。在此可以调整SPI接口的时序以提高光耦的性价比。
图9. AtTiny13对MAX3420E寄存器进行读操作的汇编程序。在此可以调整SPI接口的时序以提高光耦的性价比。

r4标号前,SCK信号驱动为低电平,然后再次驱动为高电平(SCLK_LOSCLK_HI是汇编宏,不需要改变代码就可以很容易对实际电路的IO引脚赋值)。

这两个语句之间插入少量NOP指令,图8中的窄脉冲可以变宽,由此,使用低速光耦(这意味着更低的成本)成为可能。这个方法证明在光隔离应用中使用SPI接口的灵活性。

结论

由于USB数据信号的高速、双向和严格的一致性要求,电气隔离USB设计面临诸多挑战。如果隔离USB控制器和应用处理器之间的接口(图1中的位置3),隔离问题将会变得简单,因为这个接口可在任意速率下运行。位置3的低信号速率使其非常适合低成本光耦解决方案。对于任何隔离设计,需要隔离的线路越少,成本就越低。因为SPI接口只使用四条低速、单向信号线,所以SPI接口是隔离的理想位置。因为MAX3420E可以通过简单的SPI接口与任意的微处理器进行通信,是嵌入式系统增加USB功能的理想方案,也为系统提供了简单的隔离方案。MAX3421E也可以用作隔离型USB主设备,MAX3421E即可作为外围设备也可作为主设备,使用与MAX3240E相同的SPI接口。

类似文章发表在2006年7月版EDN

下一步
EE-Mail 订阅EE-Mail,接收关于您感兴趣的新文档的自动通知。
© , Maxim Integrated Products, Inc.
The content on this webpage is protected by copyright laws of the United States and of foreign countries. For requests to copy this content, contact us.
APP 3891:
应用笔记 3891,AN3891, AN 3891, APP3891, Appnote3891, Appnote 3891