USB2.0 reset 的几种情况
1、USB2.0 Reset
USB2.0 reset, 是将D+ 和 D- 同时拉低, 进入SE0 状态。
reset 时间:按照spec 规定7.1.75 正常是10-20ms, 需要注意的是如果是root hub 时间则规定为最少50ms(这50ms 可以不连续,但是如果不连续,每个reset 信号之间的间隔时间应该小于3ms)
HUB 如果收到host 发送的setFeature (portreset), 可以对device发送reset 信号。
2、 Reset 的规范
1、FS/LS mode
device 如果是在FS/LS mode 下, 当host 将D+/D- driver 成SE0 后, spec 规定Device 应该在检测到SE0 超过2.5us 后,将这个信号识别为Reset 信号。
2、HS mode
-
hub 需要先check device 确保其不会是 LS device(Spec 规定LS device 不会支持HS)。这一点很好理解, HS 进入suspend是需要切换到FS mode, 而 LS device D+/D- 和FS device相反,所以无法实现切到FS mode。
-
hub 收到host 发送的setFeature (portreset),将D+/D- drives SE0。
-
device 去检测到SE0。
这里需要分几种情况考虑:1) device 在suspend 的情况下, hub 发送reset。device 检测到SE0, 到进行 HS handshake, 时间间隔不少于2.5us(就是device检测到SE0 到打chirp K 的时间)2) device 在FS mode下且是non-suspend 的情况下, hub 发送reset。device 检测到SE0, 到进行 HS handshake, 时间间隔不少于2.5us 且不长于3ms (就是device检测到SE0 到打chirp K 的时间)3) device 在HS mode下且是non-suspend 的情况下, hub 发送reset。1. 高速设备在收到挂起信号(3ms空闲,这3ms不会打SOF)后,应在0.125ms内切换到全速状态,也就是说要把终端电阻移除,并在D+数据线上重新挂上1.5k上拉电阻。2. 设备在随后的100-875?s内检测数据线上的状态。如果该状态是一个Full speed J(D+ =1, D- =0),那么说明host发下来的是一个挂起信号;如果此时该状态是SE0(D+ =0,D- =0),说明是host drive数据线D+到0,这是一个复位信号(复位信号会持续至少 10ms 时间)。
-
Device 进行HS handshake
device 检测到Reset 后, 在2.5us(最少) 后,开始打chirp K (电压幅度800mv) 持续时间最短1ms, spec 规定 chirp K 结束时间不能晚于7ms(即从RESET 开始检测到SE0 到打完ChirpK 要小于7ms)
-
Hub 检测到Chirp K 后,开始打3 组chirp KJ。