复位
从状态切换图上看,一个 USB 设备连接后,它将会被供电,然后被复位。当软件出错时,我们也可以发出复位信号重新驱动设备。
那么,USB Hub 端口或 USB 控制器端口如何发出复位信号?发出 SE0 信号,并维持至少 10ms。
USB 设备看到 Reset 信号后,需要准备接收“SetAddress()”请求;如果它不能回应这个请求,就是“不能识别的设备”。
设备速率识别
低速/全速
Hub 端口的 D+、D- 都有 15K 的下拉电阻,平时为低电平。全速设备内部的D+ 有 1.5K 的上拉电阻,低速设备内部的 D- 有 1.5K
的上拉电阻,连接到 Hub 后会导致 Hub 的 D+ 或 D- 电平变化,Hub 根据变化的引脚分辨接进来的是全速设备还是低速设备。
高速
高速设备必定兼容全速模式,所以高速设备内部 D+ 也有 1.5K 的上拉电阻,只不过这个电阻是可以断开的:工作于高速模式时要断开它。
高速设备首先作为全速设备被识别出来,然后 Hub 如何确定它是否支持高速模式?
Hub 端口如何监测一个新插入的 USB 设备能否工作于高速模式?流程如下:
对于低速设备,Hub 端口不会监测它能否工作于高速模式。低速设备不能兼容高速模式。
Hub 端口发出 SE0 信号,这就是复位信号
USB 设备监测到 SE0 信号后,会发出“a high-speed detection
handshake”信号表示自己能支持高速模式,这可以细分为一下 3 种情景
如果 USB 设备原来处于“suspend”状态,它检测到 SE0 信号后,就发出“a high-speed detection
handshake”信号
如果 USB 设备原来处于“non-suspend”状态,并且处于全速模式,它检测到 SE0 信号后,就发出“a high-speed
detection handshake”信号。这个情景,就是一个设备刚插到 Hub 端口时的情况,它一开始工作于全速模式。
如果 USB 设备原来处于“non-suspend”状态,并且处于高速模式,它会切换回到全速模式(重新连接D+的上拉电阻),然后发出“a
high-speed detection handshake”信号
“a high-speed detection handshake”信号,就是“高速设备监测握手信号”,既然是握手信号,自然是有来有回:
USB 设备维持 D+ 的上拉电阻,发出“Chirp K ”信号,表示自己能支持高速模式
如果 Hub 没监测到“Chirp K ”信号,它就知道这个设备不支持高速模式
如果 Hub 监测到“Chirp K ”信号后,如果 Hub 能支持高速模式,就发出一系列的“Chirp K”、“Chirp J”信号,这是用来通知
USB 设备:Hub 也能支持高速模式。发出一系列的“Chirp K”、“Chirp J”信号后,Hub 继续维持 SE0 信号直到 10ms。
USB 设备发出“Chirp K ”信号后,就等待 Hub 回应一系列的“Chirp K”、“Chirp J”信号
收到一系列的“Chirp K”、“Chirp J”信号:USB 设备端口 D+ 的上拉电阻,使能高速模式
没有收到一系列的“Chirp K”、“Chirp J”信号:USB 设备转入全速模式
-
usb
+关注
关注
60文章
7945浏览量
264600 -
信号
+关注
关注
11文章
2791浏览量
76754 -
hub
+关注
关注
1文章
115浏览量
41712
发布评论请先 登录
相关推荐
评论