USB2.0 reset 的几种情况

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

  1. hub 需要先check device 确保其不会是 LS device(Spec 规定LS device 不会支持HS)。这一点很好理解, HS 进入suspend是需要切换到FS mode, 而 LS device D+/D- 和FS device相反,所以无法实现切到FS mode。

  2. hub 收到host 发送的setFeature (portreset),将D+/D- drives SE0。

  3. 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 时间)。
  1. Device 进行HS handshake
    device 检测到Reset 后, 在2.5us(最少) 后,开始打chirp K (电压幅度800mv) 持续时间最短1ms, spec 规定 chirp K 结束时间不能晚于7ms(即从RESET 开始检测到SE0 到打完ChirpK 要小于7ms)
    在这里插入图片描述

  2. Hub 检测到Chirp K 后,开始打3 组chirp KJ。
    spec 规定, 在Device chirp K 打完之后,100us 内hub 必须开始打chirp KJ,3组 chirp KJ 必须在500us 内打完 (单个chirp K 或者 J 持续时间>=40us 且<=60us)。

  3. Device 打完chirpK 后会去检测 hub 的chirp K-J-K-J-K-J。
    1、如果检测到chirp K-J-K-J-K-J ,需要在500us 内,将FS 的上拉电阻移除,进入HS mode。
    2、Device 如果在(1~2.5)ms内没有检测到chirp K-J-K-J-K-J ,则留在FS mode 等待reset 结束。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/shenjin_s/article/details/109112447
今日推荐