原文地址:www.beyondlogic.org/usbnutshell…
原文作者:
发布时间:
连接器
所有设备与主机有上游连接,所有主机与设备有下游连接。上游连接器和下游连接器在机械上不能互换,从而杜绝了集线器的非法环回连接,如下游端口连接到下游端口。通常有两种类型的连接器,称为A型和B型,如下图所示。
A型USB连接器
B型USB连接器
A型插头总是面向上游。A型插座通常会出现在主机和集线器上。例如,A型插座常见于计算机主板和集线器上。B型插头总是连接在下游,因此B型插座会出现在设备上。
有趣的是,在一些电脑商店里发现A型到A型的电缆直连,以及一系列的USB性别转换器。这是与USB规范相矛盾的。唯一的A型插头到A型插头的设备是用于连接两台电脑的桥梁. 其他被禁止的电缆是USB延长线,其中一端有一个插头(A型或B型),另一端有一个插座。这些电缆违反了USB的电缆长度要求。
USB 2.0包含的勘误表引入了迷你USB B连接器。关于这些连接器的细节可以在Mini-B连接器工程变更通知中找到 迷你连接器背后的原因来自于一系列的微型电子设备,如手机和收纳盒。目前的B型连接器太大,不容易集成到这些设备中。
最近刚刚发布的On-The-Go规范,为USB增加了点对点功能。这将USB主机引入到手机和电子收纳盒中,因此已经包含了mini-A插头、mini-A插座和mini-AB插座的规范。我想我们应该很快就会充斥着迷你USB线和一系列迷你到标准的转换线。
| 针号 | 电缆颜色 | 功能 |
|---|---|---|
| 1 | 红色 | VBUS(5伏) |
| 2 | 白色 | D- |
| 3 | 绿色 | D+ |
| 4 | 黑色 | 地面 |
USB电缆采用标准的内部电线颜色,使不同厂家的电线更容易识别。该标准规定了电缆的各种电气参数。读一读最初的USB 1.0规范所包含的细节很有意思。你会理解它规定了电气属性,但第6.3.1.2段建议USB电缆上的过模的推荐颜色应该是霜白色--多么无聊啊! USB 1.1和USB 2.0则放宽到推荐黑色、灰色或自然色。
PCB设计者需要参考第6章的标准脚印和引脚布局。
电气
除非您是为USB设备/收发器或USB主机/集线器设计芯片,否则您需要了解的关于第7章中的电气规格的内容并不多。我们在这里简单地讨论一下基本要点。
正如我们已经讨论过的,USB使用差分传输对来传输数据。这是用NRZI编码的,并且是位填充的,以确保数据流中足够的转换。在低速和全速设备上,差分 "1 "是通过将D+拉到2.8V以上,用一个15K欧姆的电阻拉到地,D-拉到0.3V以下,用一个1.5K欧姆的电阻拉到3.6V来传输的。另一方面,差分'0'是指D-大于2.8V,D+小于0.3V,使用同样合适的下拉/上拉电阻。
接收器将差分'1'定义为D+大于D- 200mV,差分'0'定义为D+小于D- 200mV。信号的极性是反转的,这取决于总线的速度。因此,'J'和'K'状态被用于表示逻辑电平。在低速时,"J "状态是差分0,在高速时,"J "状态是差分1。
USB收发器有差分和单端输出。某些总线状态由D+、D-或两者都有的单端信号表示。例如,如果保持超过10mS,单端零或SE0可用于表示设备复位。将D-和D+都保持在低电平(<0.3V)就会产生SE0。如果您使用收发器和FPGA作为USB设备,单端和差分输出是需要注意的。你不能只对差分输出进行采样。
低速/全速总线的特性阻抗为90欧姆+/- 15%。因此,在为D+和D-选择阻抗匹配的串联电阻时,观察数据表非常重要。任何好的数据表都应该规定这些值和容差。
高速(480Mbits/s)模式使用17.78mA恒定电流进行信号传输,以降低噪音。
速度识别
一个USB设备必须通过拉高D+或D-线至3.3伏来表明其速度。下图中的全速设备将使用连接到D+的上拉电阻来指定自己为全速设备。设备端这些上拉电阻也将被主机或集线器用来检测连接到其端口的设备是否存在。如果没有上拉电阻,USB会认为总线上没有任何连接。有些设备在其硅片中内置了这个电阻,可以在固件控制下开启和关闭,其他设备则需要一个外部电阻。
例如飞利浦半导体公司有一个SoftConnectTM技术。当第一次连接到总线上时,可以让微控制器在启用上拉速度识别电阻之前对USB功能器件进行初始化,表示有器件连接到总线上。如果上拉速度识别电阻连接到Vbus,那么只要插入插头,就表明有器件已经连接到总线上。然后,当微处理器还没有开始初始化usb功能设备时,主机可能会试图复位设备并要求描述符。
其他供应商(如Cypress Semiconductor)也在他们的EzUSB器件中使用可编程电阻来实现重新计数TM的目的,在这种情况下,一个器件可以被列举为一个功能,如现场编程,然后在固件控制下从总线上断开,并列举为另一个不同的器件,所有这些都不需要用户抬起眼睛。许多EzUSB设备没有任何Flash或OTP ROM来存储代码。它们在连接时是自举的。
图2:带上拉电阻的全速设备连接到D+。
图3:连接到D-的上拉电阻的低速器件。
您会注意到我们没有为高速模式加入速度识别。高速设备将以全速设备(1.5k至3.3V)的方式开始连接。一旦它被连接,它将在复位期间做一个高速鸣叫,并建立一个高速连接,如果集线器支持它。如果设备工作在高速模式下,那么就会去掉上拉电阻来平衡线路。
支持高速模式不需要符合USB 2.0的设备。如果速度不是很关键,这就可以生产更便宜的设备。这也是低速USB 1.1设备的情况,它不需要支持全速。
然而,一个高速设备必须不支持低速模式。它应该只支持先连接所需的全速模式,如果成功协商后再支持高速模式。一个符合USB 2.0标准的下游设备(集线器或主机)必须支持所有三种模式,即高速、全速和低速。
电源(VBUS)
USB的好处之一是总线供电的设备--设备从总线上获取电源,不需要外部插头组或额外的电缆。然而,许多人在没有考虑到所有必要标准的情况下就跃跃欲试。
一个USB设备在配置描述符中指定了它的功耗,以2mA为单位,我们将在后面详细研究。一个设备不能增加它的功耗,大于它在枚举过程中指定的值,即使它失去了外部电源。USB功能有三类。
- 低功率总线供电功能
- 大功率总线供电功能
- 自供电功能
低功率总线供电的功能从VBUS中获取所有的电力,并且不能获取任何超过一个单位负载。USB规范将单位负载定义为100mA。低功率总线供电功能也必须设计成能在VBUS电压4.40V和设备上行插头处测量到的最高电压5.25V下工作。对于许多3.3V器件,LDO稳压器是强制性的。
大功率总线供电的功能将从总线上提取所有的电源,在配置之前,不能提取超过一个单位负载,之后,只要它在描述符中要求这样做,它就可以排出5个单位负载(最大500mA)。高功率总线功能必须能够在最低4.40V的电压下被检测和列举。当在满单位负载下工作时,规定最低VBUS为4.75V,最高为5.25V。同样,这些测量是在上游插头处进行的。
自供电功能最多可以从总线上提取1个单位负载,其余的功率来自外部电源。如果这个外部电源发生故障,它必须有规定,从总线上提取不超过1个单位的负载。自供电功能更容易设计规范,因为没有那么多的功耗问题。1个单位的总线供电负载允许在没有应用主/次电源的情况下检测和列举设备。
任何USB设备,无论是总线供电还是自供电,都不能驱动其上游面向端口的VBUS。如果VBUS丢失,设备有漫长的10秒时间从用于速度识别的D+/D-上拉电阻中移除电源。
其他VBUS考虑因素是必须限制浪涌电流。这在USB规范第7.2.4.1段中有概述,但通常被忽视。涌入电流是由VBUS和地之间的电容量贡献的。因此,该规范规定您的设备上的最大去耦电容为10uF。当您在电流流过电感式USB电缆后断开设备时,电缆的开口端可能会出现较大的反激电压。为了防止这种情况发生,规定了最小1uF的VBUS去耦电容。
对于典型的总线供电设备,它的耗电量不能超过500mA,这并不合理。那么你要问的复杂情况是什么?也许是暂停模式?
暂停电流
所有设备都必须采用暂停模式。在暂停期间,额外的约束条件会生效。最大的暂停电流与单位负载成正比。对于1个单位负载的设备(默认情况下),最大暂停电流为500uA。这包括来自总线上的上拉电阻的电流。在集线器上,D-和D+都有15K欧姆的下拉电阻。为了功耗的目的,在器件处的下拉电阻与1.5K欧姆的上拉电阻串联,使得在通常3.3v的VTERM上的总负载为16.5K欧姆。因此在我们开始之前,这个电阻就会沉淀200uA。
许多设备的另一个考虑因素是3.3V稳压器。许多USB设备在3.3V上运行。PDIUSBD11就是这样一个例子。线性稳压器通常效率很低,平均静态电流在600uA左右,因此需要更高效、更昂贵的稳压器。在大多数情况下,你还必须减慢或停止微控制器上的时钟,以落在500uA的限制内。
很多开发人员在USB实现者论坛中问,超过这个限制有什么复杂的问题?据了解,大多数主机和集线器都没有能力检测到这种程度的过载,因此如果你耗费了也许5mA甚至10mA的电流,你应该还是没有问题的,要知道,到最后,你的设备违反了USB规范。然而在正常的操作中,如果你试图超过100mA或你指定的允许负载,那么希望集线器或主机能够检测到这一点并断开你的设备,以保证总线的完整性。
当然,如果你选择设计一个自供电设备,这些设计问题是可以避免的。对于台式电脑来说,悬浮电流可能不是一个很大的问题,但随着On-The-Go规范的引入,我们将开始看到USB主机内置到手机和移动收纳箱中。从这些设备中提取的电力消耗将对电池的工作寿命产生不利影响。
进入暂停模式
当总线上没有活动超过3.0ms时,USB设备将进入暂停状态。然后它还有7ms的时间来关闭设备,并且消耗的电流不超过指定的暂停电流,因此在总线活动停止后10mS必须只从总线上消耗额定的暂停电流。为了保持与暂停的集线器或主机的连接,设备在暂停期间仍必须为其上拉速度选择电阻提供电源。
USB有一个开始帧数据包或保持活力的总线上定期发送。这可以防止空闲的总线在没有数据的情况下进入暂停模式。
高速总线将每125.0 µs ±62.5 ns发送一个微帧。 全速总线将每隔1.000 ms±500 ns发送一个帧。 低速总线将有一个keep alive,即在没有任何低速数据的情况下,每1ms发送一个EOP(数据包结束)。 术语 "全局暂停 "是指整个USB总线集体进入暂停模式。然而,选定的设备可以通过向设备连接的集线器发送一个命令来暂停。这被称为 "选择性暂停"。
当设备收到任何非空闲信号时,设备将恢复运行。如果设备启用了远程唤醒功能,那么它可以向主机发出信号,以从暂停状态恢复运行。
数据信令速率
另一个经常被忽视的地方是USB时钟的容差。这在USB规范的7.1.11节中有规定。
- 高速数据的时钟频率为480.00Mb/s,数据信令容差为±500ppm。
- 全速数据的时钟频率为12.000Mb/s,数据信令容差为±0.25%或2,500ppm。
- 低速数据的时钟频率为1.50Mb/s,数据信令容差为±1.5%或15,000ppm。
这使得谐振器可以用于低成本的低速设备,但却排除了用于全速或高速设备的可能性。