USB电气信号复位与设备速率识别

描述

复位

从状态切换图上看,一个 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 设备转入全速模式

信号

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分