USB2.0 硬件简介
USB接口通过D+和D-两根数据线传输信号。当设备插入时,主机通过VBUS供电线感知连接,并开始检测设备类型:
主机默认在D+和D-线路上各接一个15K的下拉电阻
设备接入时:
高速设备:D+线通过1.5K电阻接3.3V电压
低速设备:D-线通过1.5K电阻接3.3V电压
全速设备:既接D+又接D-
主机在2.5微秒内检测到D+/D-电压变化(从0V升到3V左右),就会判定有设备接入
高速设备需要特殊设计:
内部使用17.78mA的电流源驱动信号
数据线需保持90Ω阻抗匹配
低速/全速设备无需阻抗匹配,直接用电压信号即可正常通信
简单来说:主机通过检测数据线上的电阻分压变化识别设备,不同速度的设备用电阻连接方式区分,高速设备需要更精密的电气设计。
高速或者全速设备

低速设备

低速设备比较容易区别,但是全速和高速设备进行识别需要USB进行协商。
全速和高速设备进行识别过程:

场景1:主机和设备都支持高速模式
复位阶段:主机检测到设备插入后,会先让数据线D+和D-都保持低电平(称为SE0状态),至少持续10毫秒。设备识别到这个复位信号后,会通过D-线拉取约17.78毫安的电流,同时保持D+线的上拉电阻(1.5千欧)。此时主机端的电阻为45欧姆,因此主机能测到D-线电压约为800毫伏(17.78mA × 45Ω),并识别到设备发出的K信号(称为Chirp K)。
确认阶段:设备发出Chirp K信号后,主机需要在100微秒内连续发送多组KJ信号(K和J交替的脉冲,每个脉冲约50微秒)。设备至少需要收到3组KJ信号后,会在100~500微秒内关闭自己的上拉电阻,并改用45欧姆的下拉电阻。此时总线电阻变为22.5欧姆(主机和设备各45欧姆并联),KJ信号的电压变为约400毫伏(17.78mA × 22.5Ω),最终进入高速模式。
场景2:主机支持高速,但设备仅支持全速
- 主机同样通过SE0复位信号唤醒设备,但设备不会发送Chirp K。主机检测到没有Chirp K后,直接结束复位,转为全速模式(设备原本就用全速模式响应)。
场景3:主机仅支持全速,但设备是高速设备
- 主机发送SE0复位信号后,设备会尝试发送Chirp K信号。但主机因不支持高速模式,无法识别Chirp K,也不会回发KJ信号。最终复位结束后,双方默认进入全速模式。
总结
高速匹配成功:双方通过Chirp K和KJ信号的交互,调整电阻和电压,最终进入高速模式。
不匹配情况:若主机或设备不支持高速,则直接降级为全速模式。
关键信号:
SE0:复位信号(D+和D-同时低电平)。
Chirp K:设备用特定电流和电阻向主机表明支持高速。
KJ信号:主机通过交替脉冲确认高速模式,并调整总线电阻完成切换。