USB1.0和USB1.1只有低速模式(Low-Speed Mode)和全速模式(Full-Speed Mode),理论上最大传输速率分别为1.5Mbps和12Mbps。
USB2.0引入了传输速度更快的高速模式(High-Speed Mode),理论上最大传输速率为480Mbps。
1.术语
在USB 2.0协议中经常会看到以下术语:Chirp K、KJ序列、SE0。这里的状态是根据低速、全速/高速下设备D+和D-上不同的电平信号来决定的,如下图所示。
2.低速和全速设备的识别
主机的D+和D-都接有15K下拉电阻。全速USB设备的数据线D+接有1.5K的上拉电阻,一旦接入主机,主机的D+被拉高;低速USB设备的数据线D-接有1.5K的上拉电阻,一旦接入主机,主机的D-会被拉高,如下图所示。因此,主机就可以根据检测到自己的D+为高还是D-为高,从而判断接入的设备是一个全速还是低速设备。
由于全速和高速设备,都是D+接上拉电阻,因此无法通过D+被拉高来区分全速或高速设备。
3.全速和高速设备的识别
主机检测到全速设备连接上之后,对设备进行复位,设备收到复位信号,如果设备是高速设备,则会主动发起高速模式的握手协议进行速度识别。接下来,就取决于主机端了,如果主机支持高速模式传输,则主机会与该高速设备交互完成高速模式握手协议,之后,两者都工作在高速模式下;如果主机不支持高速模式传输那么握手协议就会失败,设备端也不会切换到高速模式,之后两者都工作在全速模式下。
如果是一个全速设备接到高速主机,设备端没法发起高速握手协议,所以,最终设备和主机都会工作在全速模式下。
4.实测波形分析
插入设备后,首先D+被拉高,主机识别设备为非低速设备,如下图所示:
然后主机对设备复位,设备检测到SE0,准备发起高速握手协议,如下图所示。
设备检测到SE0后,通过内部的电流源向D-线持续灌大小为17.78mA电流。主机端D+和D-挂载45Ω的等效终端电阻,产生约800mV的电压(45Ω*17.78mA),这就是Chirp K信号。Chirp K信号的持续时间至少是1ms,如下图所示。
设备发送Chirp K信号结束后,总线恢复到SE0状态,如下图所示。至此,主机识别设备为高速设备。
主机发送3对KJ序列,告诉设备,主机支持高速传输,如下图所示。
当得知主机也支持高速传输后,主机和设备两端的D-和D+都会挂载45Ω的等效终端电阻,并会断开D+上的1.5K上拉电阻。这两个45Ω电阻并联之后约为22.5Ω,因而可以在D+或者D-数据线上形成约为400mV(22.5Ω*17.78mA)的KJ序列,如下图所示。