USB 的工作原理:简介(第 1 部分)

如今,从小型拇指驱动器到大型存储设备,几乎每台设备都配备通用串行总线 (USB),仿佛它是万能的!这绝对是双关语。除了用于存储设备外,它还是各种外围设备(如键盘、鼠标、打印机、相机等)的标准化连接。

然而,直到 1996 年,情况才开始发生变化;在此之前,公司使用的是更大、更慢的连接,例如串行端口和并行端口。该标准是康柏、DEC、IBM、英特尔、微软、NEC 和北电自 1994 年开始共同努力开发的。当时的目标是开发一个可用于多种设备的单一接口,消除使用的许多不同连接器,并提高电子设备的数据传输速率。尽管 USB 2.0 是 USB 标准的旧版本,并且已被 USB 3.0、USB 3.1、USB 3.2 和 USB4 等新版本所取代,但它仍然具有相关性,并因其兼容性、遗留支持和成本效益而在各种场景中使用。

USB 体系结构USB Architecture

通用串行总线是一种围绕主从架构设计的异步串行总线协议,但与I2C和SPI等板载协议不同,它不允许总线上有多个主机;因此,系统中只能存在一个主机,并且与设备的所有通信都仅由主机发起。

在 USB 协议中,主机是“上游”组件,而设备是“下游”组件。主机本身由两个子组件组成:

  • 主机控制器:它是一个带有软件驱动程序的硬件芯片组,负责检测新设备,管理数据、电源以及总线上的所有活动。
  • 根集线器:它是主机系统上主要为 USB 层次结构提供起点或根的硬件实体。它与设备所连接的物理连接端口直接关联。

连接到 USB 系统的每个设备都有一个地址,当主机发出命令时,它会响应该地址。主机最多允许 127 个连接,这受到 USB 协议支持的 7 位地址的限制。

实际上,我们看不到有 127 个端口的计算机;因此,为了连接比可用端口数量更多的设备,需要使用外部集线器。为了连接外部集线器,根集线器充当其他集线器连接的根实体。集线器不具备任何主机功能;它只重复往返于设备和主机之间的流量。图 1.1 演示了如何使用外部集线器为主机扩展物理端口。
在这里插入图片描述
USB 采用星型分层拓扑结构,中心是 USB 主机。总线最多只能允许七层,以确保即使处于最低层的 USB 设备也能在 USB 规范定义的最大可容忍传播延迟内进行通信。拓扑中的连续层通过集线器连接;它们有七个下行端口和一个上行端口,用于连接上层和下层。这样,集线器可以菊花链连接在一起,以支持总共 127 个 USB 设备。
在这里插入图片描述

物理接口

任何拥有智能手机或 U 盘的人都能识别出 USB 电缆的样子,对吧?嗯,既是也不是。他们肯定可以识别最常见的 USB 电缆类型,但标准对一系列不同的连接器有定义。要识别电缆支持的连接器类型,我们首先需要查看最常见的单个连接器类型是什么样的!
加粗样式
从图 2.1 中可知,USB 标准可用的不同连接器类型,2007 年后发布的非 iPhone 手机的数据线支持 USB micro B 型母头连接器和 USB A 型公头连接器的组合。USB A 型母头连接器可用于计算机端口和大多数 USB 充电端口,USB micro B 型母头连接器在 2014 年之前曾作为 Android 手机的充电端口;但如今,C 型连接器已取代它们,并成为所有最新(Android 和 iOS)移动设备的标准配置。除了为手机充电和与计算机传输文件之外,USB On-The-Go (OTG) 规范还为移动设备上的 USB 端口引入了另一种用途。USB OTG 允许手机和平板电脑充当主机,允许其他 USB 设备(如闪存驱动器、键盘和鼠标)连接到它们,并扩展它们的功能。

这里有一个有趣的事实:尽管 iPhone 使用其专有的照明连接器,但本质上,它们使用 USB 协议实现 PC 和 iPhone 之间的通信。

现在我们知道如何识别不同的 USB 连接器,我们可以转到 USB 电缆的电源和数据传输部分。绝缘护套包裹电缆以保护内部组件。护套下面是外屏蔽,其中有 VBUS 线(红色)、接地线和铜排流线。排流线连接到 USB 的接地,并提供低电阻路径,以便将周围的电噪声安全地转移到接地。它可以减少电磁和射频干扰,从而中断数据传输,并且对于 USB 3.0 及更高版本的高速 USB 版本非常有效。内屏蔽包含一对双绞线 D+(绿色)和 D-(白色),并且电缆长度可能因 USB 速度而异。高速 USB 的最大推荐电缆长度为 5 米,但仍可以在 480MHz 下运行,这很不寻常,因为高频信号更容易受到衰减和失真的影响,并且信号质量可能会在较长距离内下降。这要归功于高速 USB 电缆的更好构造,因为它们使用双绞线来减少串扰,并且采用更好的屏蔽和阻抗匹配设计,以在更长的距离内保持信号完整性。

USB 速度建议最大电缆长度
低速(1.5 Mb/s)3 米
全速(12 Mb/s)3米
高速(480 Mb/s)5米
超高速(5 Gb/s)3米
超高速+(10 Gb/s)2米

在这里插入图片描述
图 2.2 说明了 USB 电缆的组成部分,即:

  • V BUS线为所有连接的设备提供 4.4 至 5.25 V 的恒定电源电压
  • GND线为设备提供地电压参考。
  • D+ 和 D- 是在 3.3V 下工作的数据线,使用带位填充的非归零反转 (NRZI) 编码的差分传输。

最后一点可能听起来有些令人望而生畏,因为诸如 NRZI、差分传输和位填充等术语经常被提及,但本教程将彻底帮助您理解这些术语的含义。

不归零倒置空间 (NRZI-S) 编码

不归零倒置空间是数字通信系统中常用的二进制编码方案。基本思想是信号电平的变化代表二进制零,而无变化代表二进制一。为了更好地理解,让我们检查下面给出的使用 NRZI-S 编码的信号

在这里插入图片描述

观察图 2.3 中标记的变化,我们可以看到变化 1表明在传输二进制 0 时信号的极性发生了翻转,而传输二进制 1 时极性在 2 位时间内保持不变。但是,当在总线上传输另一个二进制 0 时,即变化 2 的事件,信号的极性再次翻转。图 2.3 中变化 3、4、5 和 6 的情况也表明了相同的情况。简而言之,在 NRZI-S 编码中,只要遇到二进制 0,信号的极性就会翻转,因此在这种类型的编码中,不是用电压电平来表示位,而是使用信号的转换。该技术有助于有效利用带宽,在有限的带宽内实现更高的数据速率。

位填充

虽然 NRZI 编码确实有助于有效利用带宽,但它引入了同步问题,如果存在较长的 1 序列,接收器可能难以保持准确的位同步,从而导致潜在的错误。

为解决此问题,我们执行了位填充。此技术的规则很简单:我们需要在一组 N 个相同位后插入一个极性相反的位,以保持同步。在 USB 中,位填充是通过在六个连续的二进制 1 后插入一个相反值 (0) 的位来完成的。

在这里插入图片描述
图 2.4 演示了使用 NRZI-S 编码的位填充,您可以观察到,在六个连续的 1 之后,一个相反值的位(即 0)作为填充位传输以保持同步。这解释了位填充,但接收器如何知道何时可以期待填充位?接收器接收数据的规则是,在六个连续的 1 之后,它期待一个填充位“0”,并将其移除以提取实际的数据位。

在这里插入图片描述

数据传输

USB 协议中的数据传输是通过差分对信号进行的;总线具有工作电压为 3.3V 的 D+ 和 D- 线。使用差分信号的好处是这些信号不易受到周围电器的电磁干扰。它们也不会发出任何可能影响周围电子设备的电磁辐射,这一点非常重要,因为 USB 协议旨在绕过微处理器和微控制器等敏感设备。实际上,可能会出现这样的问题:如果不使用差分对,USB 会在多大程度上影响周围的设备?从这个角度来看:全速 USB 设备的工作数据速率为 12Mb/s,这实际上是 12MHz 交流信号,可以发射 12MHz 无线电信号,通常表现得像天线一样,当放置在微处理器或微控制器附近时,会引起大量干扰,而在差分对的情况下,两根线的相位彼此相差 180°,无线电波会相互抵消,因为它们会相互破坏性干扰,从而显着减少无线电发射。因此,使用差分对,我们可以提高 USB 的数据速度,而不必担心周围设备的干扰。要了解有关差分对信号的更多信息,您可以阅读我们关于 CAN 协议的博客,其中对差分信号进行了深入解释。

USB 通信通过 D+ 和 D- 线上的不同信号状态进行。其中一些状态传输数据,而其他状态则用作特定信号条件。这些状态的解释如下:

  • 差分 0 和差分 1:这两个状态用于 USB 上的一般数据通信。差分 1 表示 D+ 线为高电平,D- 线为低电平。差分 0 表示 D+ 线为低电平,D- 线为高电平。
  • J 状态和 K 状态:USB 指定了另外两种差分状态:J 状态和 K 状态。这些状态的定义取决于设备的速度。在全速和高速设备上,J 状态是差分 1,K 状态是差分 0,但在低速设备上则相反。
  • 单端零(SE0):这是当 D+ 和 D- 都被驱动为低电平时发生的信号条件之一。
  • 单端一(SE1):这是当 D+ 和 D- 都被驱动为高电平时发生的情况。
  • 空闲:这种情况发生在总线成功传输之前和之后。空闲状态取决于设备的速度,在低速设备上,空闲状态由 D+ 为低和 D- 为高组成,而全速设备则相反。
  • 数据包开始 (SOP):当 D+ 和 D- 线从空闲状态转换为 K 状态时,发生在任何低速或全速数据包开始之前。
总线状态特征
差分 1D+ 高,D- 低
差分 0D+ 低,D- 高
单端 0 (SE0)D+ 和 D- 低
单端 1 (SE1)D+ 和 D- 高
J状态:低速 全速 高速差分0 差分1 差分1
K 状态:低速 全速 高速差分1 差分0 差分0

在这里插入图片描述

USB 速度

USB 规范定义了多种速度,例如低速、全速、高速、超高速和超高速+,随着最新 USB4 的推出,修订仍在不断进行中。熟悉 USB 的人都知道多年来发生了大量名称变更,但我们将努力在整个介绍中遵循最新的命名约定。请注意,较新的主机可以与低速设备通信,但低速主机无法与全速设备通信。所有可用的 USB 速度规范都是如此。

  • 低速设备:这些设备支持高达 1.5Mb/s 的数据速度;键盘、鼠标等属于此类别。
  • 全速设备:这些设备支持高达 12Mb/s 的数据速度;支持 USB 的手机、音频设备等都属于此类。
  • 高速设备:这些设备支持高达 480 Mb/s 的数据速度;USB 拇指驱动器、存储设备等都属于此类别。
  • 超高速和超高速+设备:这些设备支持较新版本的 USB 协议,即 USB 3.2 Gen 2x2,并且可以支持高达 20Gb/s 的数据速度。虽然 USB4 于 2019 年推出,规定基本速度为 20 Gb/s,但它可以选择支持 40 Gb/s 和 80 Gb/s。

事实已经足够了,让我们来了解一下主机如何识别所连接的设备是低速、全速还是高速设备。当 USB 设备连接到主机时,设备的速度由连接到 D+ 或 D- 线上的上拉电阻检测。D+ 线上的 1.5kΩ 上拉电阻表示该设备是全速设备,而 D- 线上的 1.5kΩ 上拉电阻表示该设备是低速设备。
在这里插入图片描述
一般来说,低速、全速和高速设备都会宣传其最大可用速度,但实际上设备的速度会受到传输类型、开销、可用带宽等因素的影响。

USB 电源

USB 设备由其所连接的主机供电,这一点并不奇怪。USB 上的 V BUS线提供恒定的 4.4 - 5.25V 电压,可为 USB 设备供电。对于 USB 设备,有两种设备类别:总线供电设备和自供电设备。
在这里插入图片描述
自供电设备: 这些设备由外部电源供电,因为这些设备的电流消耗超过 500mA,这是 USB 端口可为设备提供的最大电流。

总线供电: 这些设备从主机获取电力,其电流消耗不超过 500mA。此类别可进一步分为高功率和低功率设备。高功率设备的设计消耗电流几乎等于 500mA,而低功率设备消耗的电流始终小于 500mA。这些规范可以追溯到 USB 2.0 成为主流的时候,但根据当前标准,即 USB 3.x 和 USB4 以及相关的电源传输标准,使用 USB-C 端口可以提供高达 100 瓦的功率,具体取决于主机控制器的功能。无论主机的功能如何,带有电源块的 USB-C 电缆都可以提供高达 240 瓦的功率,用于手机快速充电,甚至用于笔记本电脑的充电端口。

回到 USB 2.0,设备在配置状态之前不得消耗超过 100mA 的电流。在配置步骤中,设备可以请求功率预算,根据该预算决定设备的子类别,并将功率分配给它所连接的端口设备。如果设备在配置过程之前或期间消耗的电流超过 100mA,主机会将其从根集线器上断开。

在本教程中,我们了解到 USB 架构仅允许整个系统使用一个主机。然后,我们了解了如何使用差分传输、NRZI 编码技术和位填充在 USB 协议中进行通信。最后,我们研究了 USB 规范的不同 USB 速度规范和电源传输功能。本教程系列重点介绍 USB 2.0,因为即使过了十年,它仍然是运行在微控制器上的设备的首选。对于嵌入式工程师来说,扩展 USB 产品支持以实现用户友好性和调试至关重要。在下一个教程中,我们将深入了解 USB 协议上的通信工作原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值