首先,全速和低速很好区分:因为在设备端有一个 1.5K 的上拉电阻,当设备插入控制器或上电时,有上拉电阻的那根数据线就会被拉高,控制器根据 D+/D-上的电平判断所挂载的是全速设备还是低速设备。全速设备D+端有1.5K上拉电阻,低速设备D-端有1.5K上拉电阻。
控制器检测到有设备插入/上电时,向主机通报,主机发送一个请求让控制器复位新插入的设备。设备复位操作是控制器通过驱动数据线到复位状态SE0(即 D+和 D-全为低电平)。
高速设备看到复位信号后,通过内部的电流源向D-线持续灌一个小电流,加上内部的等效阻抗近似于45R,所以在控制端可以看到一个约800mV的电压,这就是 Chirp K 信号(由设备发起)。
在控制器端,虽然下达了复位信号,并一直驱动着SE0,但控制器端的USB2.0 的高速接收器一直在检测设备端发起的ChirpK信号,如果没有看到ChirpK信号,就继续复位操作,直到复位结束,之后就在全速模式下操作。如果只是一个全速的控制器,不支持高速操作,那么该控制器不理会设备端发送的ChirpK信号,之后设备也不会切换到高速模式。
再回到设备端来,设备检测到控制器发出的Chirp信号后,它必须在 500us 内切换到高速模式。控制器发送出来的 Chirp KJ 序列幅值降到了原先的一半,为400mV。这是因为设备端会挂载新的终端电阻,此时等效阻抗为22.5R,正好是之前阻抗的一半。以后高速操作的信号幅值就是400mV而不像全速/低速那样的800mV。
至此,高速设备与 USB2.0控制器握手完毕,进行后续的480Mbps 高速信号通信,这就是咱们常说的USB握手协议,关于USB接口就先介绍到这里,希望能对屏幕前的小伙伴提供帮助。