如何识别不同工作速度的USB3.0设备
USB3.0设备在开发之前就已经确定其工作模式:低速、全速还是高速。低速和全速设备在工作过程中无法改变其速度模式,而高速设备在高速握手协议失败后会工作在全速模式下,这样使得一个高速设备即使连接到一个全速的USB主机也能正常工作。全速设备在其 D+线上有一个上拉电阻Rpu;而低速设备的上拉电阻Rpu在D-上。USB3.0设备上的上拉电阻Rpu的阻值是1.5kΩ±5%,主机或hub的端口上的下拉电阻Rpd是15kΩ±5%。
当USB3.0主机与全速或者低速设备连接后,因为上拉电阻的存在,D+或D-的电压会上拉到3V左右。USB主机根据哪根差分线上有上拉来判断接入USB3.0设备的类型,如果D+上有上拉,主机就把设备识别为全速设备;如果D-上有上拉,主机就把设备识别为低速设备。
在高速模式下,不管是USB3.0设备还是USB主机,在D+和D-数据线上都要有一个45Ω等效对地电阻。高速设备在初始连接时,是以全速模式连接到主机的,即高速设备的D+上挂载了上拉电阻,主机检测到全速模式的设备连接后,会对该设备进行复位(RESET)。工作在全速模式下的 USB3.0设备收到复位信号后,会主动发起高速模式握手协议进行速度识别。如果主机支持高速设备,会和该设备交互完成高速模式握手协议,此时USB3.0主机和设备都工作在高速模式下;如果主机不支持高速设备,握手协议会失败,该设备也不会切换到高速模式。
需要注意的是,USB3.0设备连接到主机后,主机必须在先对设备进行复位,复位信号至少持续10ms,整个高速握手协议是在复位过程中完成的,且在复位信号结束之前完成。USB3.0主机和设备在复位结束后,都必须确定自己的速度模式。