电气特性
这里我们略过USB的机械特性 (mechanical properties) 部分,有兴趣的朋友可以参阅 USB 2.0 Specification 中的第六章 Chapter 6 Mechanical
的内容。
本篇介绍 USB 2.0 的电气特性,不打算对 USB 2.0 Specification 中的第七章 Chapter 7 Electrical
进行详细的电气特性解读,会参考 USB 中文网 进行笼统地概念描述。有兴趣的朋友可以自行参阅第七章中的内容。
推荐学习由百问网提供的全场景工业互联设备管理系统解决方案,其中有对 USB 核心内容的详细讲解。
USB2.0设备连接状态的检测
USB2.0设备的引脚接线定义分为四根线
,分别为
- 电源线(VBus)
- D+
- D-
- 地线(GND)
主机端与设备的电路图如图所示:
USB主机端的 D+ 和 D- 均有一个 15K 的下拉电阻,而设备端根据 USB 设备分为两大类 USB低速 和 USB全速/高速,分别在其设备的 D- 或 D+ 上拉一个 1.5K 的电阻。
- 主机端 D+ 和 D- 均有一个 15K 的下拉电阻。
- 低速设备端 D- 上拉一个 1.5K 的电阻
- 高速/全速设备端 D+ 上拉一个 1.5K 的电阻
连接状态检测流程如下:
-
VBUS 上电与设备连接检测
上电与监控:
默认情况下,USB主机端的 VBUS 为高电平,当 USB 设备插入时,主机或集线器将 VBUS 电压加到设备上,USB设备端的 VBUS 从低电平变为高电平(>=4.01V),USB设备端 VBUS 检测到高电平。
USB设备内部的上拉电阻(通常在 D+ 或 D- 线上,取决于设备本身)会拉升一个数据线电平,用以表明连接状态。
主机或集线器通过监测差分数据线(D+ 和 D-)的电压,检测设备的连接状态。如果检测到某条数据线(D+ 或 D-)的电压持续超过 VIH(输入高电平阈值,通常>2.0V)且持续时间超过指定的 TDCNN(连接信号延迟时间,通常为3.1ms),则判定为设备已连接。 -
去抖动检测 (Debounce)
USB 系统在检测到连接后,启动一个去抖动计时器,以过滤短暂的机械噪声或不稳定信号。
去抖动时间为至少 100 ms (TATTDB),确保物理和电气连接稳定。如果在去抖动期间出现断开信号(例如 SE0 状态),计时器会重置。 -
检测设备速度
USB 主机或集线器在检测到设备连接后,开始通过以下方式判断设备速度:
- D+ 拉高表示全速 (Full-Speed)。
- D- 拉高表示低速 (Low-Speed)。
如果设备支持高速 (High-Speed),需要通过复位过程进一步检测。
-
端口复位与设备初始化
-
复位信号发送 (Reset):
主机向设备的端口发送复位信号(SE0),将设备置于默认状态。
复位信号持续至少 10 ms (TDRST),随后 USB 系统保证设备至少有 10 ms 的恢复时间 (TRSTRCY)。 -
设备初始化:
设备在复位后进入默认状态,此时仅能响应地址 0 的命令,且只能消耗不超过 100 mA 的电流。
-
-
总线枚举 (Bus Enumeration)
-
地址分配:
主机向设备分配一个唯一的地址,将设备从默认状态转移到地址状态。 -
配置读取:
主机通过读取设备描述符、配置描述符等,获取设备的功能和特性。
主机基于读取的配置数据,发送 SetConfiguration 命令完成设备配置,使设备进入配置状态。
-
-
检测完成并开始通信
设备进入配置状态后,其所有的端点(Endpoint)特性和功能激活,主机可以开始正常通信。
此时设备已准备好执行其功能,例如数据传输或响应控制请求。
低速/全速设备速度识别
USB 在集线器和功能端(指USB设备)通过如图 7-20 和图 7-21 所示的方式连接。全速和低速设备通过上拉电阻位置来区分:
- 全速设备 (Full-speed devices):如图 7-20 所示,其上拉电阻位于 D+ 数据线上。
- 低速设备 (Low-speed devices):如图 7-21 所示,其上拉电阻位于 D- 数据线上。
- 下游端口的下拉终端:是连接到地的电阻,值为 15 kΩ ±5%。
为了确保信号水平满足手册中表 7-2 中的要求,上拉电阻的设计必须能够在复位后的最短恢复时间(2.5 µs)内将 D+ 或 D- 从 0V 拉升到最低 VIH(高电平输入电压)。
- 如果设备使用可拆卸电缆,则必须采用一个值为 1.5 kΩ ±5% 的电阻,该电阻连接到一个电压源(VTERM),该电压源范围在 3.0V 至 3.6V。
- 如果设备使用固定电缆,也可以使用其他终端方式,但任何终端的等效电阻 (Thevenin resistance) 必须不小于 900 Ω。
注意:终端的等效电阻不包括主机/集线器端的 15 kΩ ±5% 电阻。
上拉电阻的电压源必须来自 USB 电缆提供的电源或由其控制,以确保当 VBUS 被移除时,上拉电阻不会通过其连接的数据线提供电流。
高速度设备速度识别
对于USB2.0的高速设备,其连接状态的检测是一样的。并且USB2.0高速设备在设备的连接检测时,也是以USB2.0全速的工作状态进行通讯连接的。只是在USB主机端对设备复位后,USB高速设备会主动发送USB高速协商信号,而主机端如果正确识别,则工作在全速状态的USB2.0高速设备切换到高速状态。而USB2.0全速设备并不会对主机端发送高速协商信号。更详细的解释
USB2.0设备断开状态的检测
USB设备一般分为自供电和VBUS供电。
对于由 VBUS 供电的设备,当设备与主机断开后,设备将无电源供电,这种情况下设备端的固件程序无法运行,故对于此种设备,USB设备端断开的检测无任何意义。
USB2.0规范对 USB总线 VBUS 上的电压有规定,所以对于支持 VBUS 检测的 USB设备,可以通过检测 VBUS 上的电压低于 VBSVLD即4.01V 时即可认为 USB设备与主机已经断开。
对于不支持 VBUS 上检测的 USB设备,是通过 D+/D- 上的电压变化来检测的。
无论是否支持 VBUS 检测的 USB设备,当检测到设备已经与主机断开后,都需要 D+或D- 上的上拉电阻,来确保下次连接检测的初始化状态是正确的。
在实际的硬件电路中,VBUS 设备端会有一个旁路电容,过快的快速插拔导致设备端的 VBUS 电压因旁路电容的存在导致无法降低到 4.01V 以下,导致设备端的断开检测设备。
断开检测的流程如下:
-
低速/全速模式下的检测
当设备断开连接时,下行端口的数据线(D+和D-)由下行端口内的下拉电阻拉低至单端低电平阈值以下(小于0.8V)。
主机/集线器的下行端口进入SE0状态,并在持续的SE0状态超过TDDIS时间后(最小值为2us),标记为断开状态(TDDIS具体时间参数由USB 2.0规范定义)。 -
高速模式下的检测
高速模式下,当下行端口发送信号时,如果设备断开,信号会因为远端终端电阻的移除而反射回来,导致差分信号幅度增加至≥625 mV。
高速断开检测使用EOP(End of Packet)帧信号期间的无过渡信号段(连续40位bit时间的稳定信号)来完成。这一过程保证信号反射足够明显以触发断开检测器。
如果在发送32位无过渡信号后,检测到差分信号超过625 mV的断开阈值,集线器/主机的下行端口将报告断开状态。
J、K状态
-
在全速或者低速模式下
- 当接收端检测到 D+ 信号线的电压比 D- 信号线的电压高出 200mV 时,表示差分信号 “1”
- 当接收端检测到 D- 信号线的电压比 D+ 信号线的电压高出 200mV 时,表示差分信号 “0”
-
在高速的模式下
- 当接收端检测到 D+ 信号线的电压比 D- 信号线的电压高出 360mV 时,表示差分信号 “1”
- 当接收端检测到 D- 信号线的电压比 D+ 信号线的电压高出 360mV 时,表示差分信号 “0”
USB2.0规范中对以下的差分信号 1 和 0 的状态定义为 J状态 和 K状态。
-
全速和高速模式下
- J状态对应差分信号“1”
- K状态对应差分信号“0”
-
低速模式下
- J状态对应差分信号“0”
- K状态对应差分信号“1”
无论是低速、全速或者是高速模式下,IDLE(即空闲状态)都是1,只是全速和高速的空闲状态叫J状态,而低速的叫K状态。
Chirp J 和 Chirp K状态
Chirp J和Chirp K状态只出现在高速模式的速度检测握手协议中,即设备从全速识别为高速设备的状态转换过程中。其原理是:高速模式是由电流驱动的,其J/K信号是由一个17.78mA的电流源向D+和D-数据线产生,当USB主机进入高速模式后,主机和设备两端的D-和D+都会挂载45Ω的等效终端电阻,并会断开D+数据线上的上拉电阻,这两个电阻并联之后为约为22.5Ω,因而可以在D+或者D-数据线上形成约为400mV的高速J/K信号。而高速设备在连接到USB主机时默认为全速模式,因此此时USB设备端还未挂接45Ω终端电阻,而是挂载了1.5K的上拉电阻,此时USB设备端的上拉电阻1.5K和主机端的45Ω并联后约45Ω,因此会在D+和D-上会形成800mV(17.78x45)的差分信号,这种差分信号就是Chirp J和Chirp K状态。
USB硬件编码格式NRZI
SE0(Single-Ended Zero)
在USB2.0中,SE0(Single-Ended Zero)是一种特定的信号状态,具有重要的电气特性,通常用于表示总线的空闲状态或数据的分隔。要理解SE0信号,我们需要了解USB信号的编码方式以及在不同情况下SE0信号的表现。
1. USB2.0 信号的基本传输方式
USB2.0通信使用差分信号传输,其主要使用两条线:D+(数据正线)和D-(数据负线)。信号在这两条线之间通过电压差异来传输数据。USB2.0采用了NRZI(Non-Return to Zero Inverted)编码技术来表示数据。
- 逻辑 1:D+ 信号高,D- 信号低(D+ > D-)。
- 逻辑 0:D+ 信号低,D- 信号高(D+ < D-)。
2. SE0 信号的定义
SE0指的是一种特殊的信号状态,在这个状态下,D+和D-两个信号线的电压是相等的,通常都为低电平(0V),即D+ = D-。这代表了USB总线的空闲或不活动状态。
-
空闲状态
当USB总线处于空闲状态时,D+和D-信号线都会保持在SE0状态。也就是说,这时D+和D-的电压都为0V,表示没有数据传输发生。 -
总线复位
在USB协议中,总线复位(reset)时也会发生SE0信号。主机(Host)通过将D+和D-都拉低到SE0状态来启动复位过程。USB设备在总线复位期间必须保持在SE0状态,并且等待复位结束后才能恢复通信。 -
数据传输结束
在一些特定的场景中,SE0信号也用于表示数据传输的结束。例如,当传输完成时,USB设备可能会将D+和D-拉低到SE0状态,表示该数据包的传输已完成。