USB2.0是向下兼容USB1.X的,即USB2.0支持高速,全速,低速的USB设备
(HIGH-SPEED,FULL-SPEED,LOW-SPEED),而USB1.X不支持高速设备。
因此如果高速设备接在USB1.X的hub上,也只能工作在全速状态。
因此对速度的识别是很重要的,否则没办法以想要的速度通信。
**************************************************************************************
全速和低速区分
根据规范,全速和低速很好区分。因为在设备端有一个1.5K的上拉电阻,
上电后,有上拉电阻的那根数据线会被拉高,
根据 D+或D-的电平状态来检测是全速还是低速设备。
全速,高速的识别比较简单,但是USB2.0,USB1.X只有一对数据线,
就没办法有第三种状态来表示高速设备了,所以高速设备的识别稍微复杂。
**************************************************************************************
高速设备是以一个全速设备的身份出现的,即和全速设备一样,高速设备也在D+端有一个1.5K的上拉电阻。
USB2.0的HUB把设备当成一个全速设备,然后进行一系列的握手信号来确认双方的身份,
一方面HUB要检测设备是高速还是全速,另一方面设备也要检测HUB是USB2.0还是USB1.X的,
如果HUB是USB2.0,设备也是高速的 就工作在高速模式,否则只能工作在全速模式。
HUB连接到设备或上电时,向主机报告,主机通过发送Set_port_feature请求让hub复位新插入的设备。
设备复位操作是驱动数据线到复位SE0(D+,D-都为低电平),并持续至少10MS。
高速设备复位后,通过内部的电流源向D-持续灌17.78MA大小的电流。
因为此时D+端的1.5K上拉电阻还没撤销,在hub端,全速/低速驱动器形成一个45欧姆的终端电阻,
两电阻并联约形成45欧姆的阻抗,所以在HUB端可以看到一个 800ma(17.78*45)的电压,
这个就是Chirp K信号。Chirp K 的持续时间是 1ms - 7ms.
在HUB端,虽然下达了复位信号,并一直驱动着SE0,但usb2.0的高速接收器一直在检测 Chirp K信号,
如果没有检测到,就继续复位操作,直到复位结束,然后就工作在全速状态。
如果只是一个全速的hub,不支持高速设备,那么hub也不会理会Chirp k信号,之后