你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

全速USB和高速USB的识别过程分析

[复制链接]
aimejia 发布时间:2018-5-21 14:12
本帖最后由 aimejia 于 2018-5-21 14:32 编辑 5 a) x+ N0 v" |; h# e! |

7 M/ R6 z, m! n) M2 o6 a

注:本文是根据网上的一些资料整理而成。

7 t: N) |* c7 F2 Z1 G6 e

1 前言

我们知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度类型的设备,而USB1.x的hub不能支持高速设备(High Speed Device)。因此,如果高速设备挂到USB1.x的hub上,那该设备只能工作在全速模式下。不管是hub还是设备(device),对于速度的区分是非常重要的,否则,后续的通信根本无法进行。

- V3 X  a4 y8 p- U' Y4 p! K# ?

2 全速和低速USB的识别

根据规范,全速(Full Speed)和低速(Low Speed)很好区分,因为在设备端有一个1.5k的上拉电阻,当设备插入hub或上电(固定线缆的USB设备)时,有上拉电阻的那根数据线就会被拉高,hub根据D+/D-上的电平判断所挂载的是全速设备还是低速设备。如下两图:

2.jpg

图1 全速USB设备的连接


; C0 q4 ]2 j% i/ [+ q" O

3.png

图2 低速USB设备的连接

3 高速USB的识别

USB全速/低速识别相当简单,但USB2.0,USB1.x就一对数据线,不能像全速/低速那样仅依靠数据线上拉电阻位置就能识别USB第三种速度:高速。因此对于高速设备的识别就显得稍微复杂些。

1 T# }+ e2 r# H) ?: O, q& g! b9 x' N

高速设备初始是以一个全速设备的身份出现的,即和全速设备一样,D+线上有一个1.5k的上拉电阻。USB2.0的hub把它当作一个全速设备,之后,hub和设备通过一系列握手信号确认双方的身份。在这里对速度的检测是双向的,比如高速的hub需要检测所挂上来的设备是高速、全速还是低速,高速的设备需要检测所连上的hub是USB2.0的还是1.x的,如果是前者,就进行一系列动作切到高速模式工作,如果是后者,就以全速模式工作。

- k# q+ K, N0 q; R

下图展示了一个高速设备连到USB2.0 hub上的情形:

4.gif

' D; @4 }- o/ ^) L  p

图3 高速USB的协商过程


3 z- C- F/ A1 o9 h

hub检测到有设备插入/上电时,向主机通报,主机发送Set_Port_Feature请求让hub复位新插入的设备。设备复位操作是hub通过驱动数据线到复位状态SE0(Single-ended 0,即D+和D-全为低电平),并持续至少10ms。


/ ?& C8 o  }  U0 O  R6 |

高速设备看到复位信号后,通过内部的电流源向D-线持续灌大小为17.78mA电流。因为此时高速设备的1.5k上拉电阻还未撤销,在hub端,全速/低速驱动器形成一个阻抗为45欧姆(Ohm)的终端电阻,2电阻并联后仍是45欧姆左右的阻抗,所以在hub端看到一个约800mV的电压(45欧姆*17.78mA),这就是Chirp K信号。Chirp K信号的持续时间是1ms~7ms。

6 O4 C; @! n3 y

在hub端,虽然下达了复位信号,并一直驱动着SE0,但USB2.0的高速接收器一直在检测Chirp K信号,如果没有Chirp K信号看到,就继续复位操作,直到复位结束,之后就在全速模式下操作。如果只是一个全速的hub,不支持高速操作,那么该hub不理会设备发送的Chirp K信号,之后设备也不会切换到高速模式。


8 C) h' T# ?( f/ `' {2 o

设备发送的Chirp K信号结束后100us内,hub必须开始回复一连串的KJKJKJ….序列,向设备表明这是一个USB2.0的hub。这里的KJ序列是连续的,中间不能间断,而且每个K或J的持续时间在40us~60us之间。KJ序列停止后的100~500us内结束复位操作。hub发送Chirp KJ序列的方式和设备一样,通过电流源向差分数据线交替灌17.78mA的电流实现。

# [! j; ?2 x$ D

再回到设备端来。设备检测到6个hub发出的Chirp信号后(3对KJ序列),它必须在500us内切换到高速模式。切换动作有:
' [5 i3 G4 \# d$ X& K. w7 e1.断开1.5k的上拉电阻。 6 Q3 w) |- \8 Y: {; E/ l: G) E1 |
2.连接D+/D-上的高速终端电阻(high-speed termination),实际上就是全速/低速差分驱动器。 4 n" b6 j) T/ p1 U/ E4 o. Q
3.进入默认的高速状态。

/ y0 P3 V. y9 @/ u& E3 L

执行1,2两步后,USB信号线上看到的现象就发生变化了:hub发送出来的Chirp KJ序列幅值降到了原先的一半,400mV。这是因为设备端挂载新的终端电阻后,配上原先hub端的终端电阻,并联后的阻抗是22.5欧姆。400mV就是由17.78mA*22.5Ohm得来。以后高速操作的信号幅值就是400mV而不像全速/低速那样的3V。


; Q$ F$ ]7 x# m; Z

至此,高速设备与USB2.0 hub握手完毕,进行后续的480Mbps高速信号通信。


' e0 V, H' D7 |$ ^  ]1 J1 W

最后附上几幅实际USB高速识别的示波器抓图,图中蓝色信号是D+,黄色信号是D-。

1.数据线D+在T点之前挂上1.5K电阻,在T点被host拉成SE0状态。在近2ms后,设备发送第一个Chirp K,向host通知说:我是一个高速设备,如果可能,请用高速方式与我通信。其幅度是800mV(17.78mA * (45ohm ||1.5kohm) = 800mV,见上文解释)。在这里,Chirp K的持续时间是2.13ms(a,b两点之间)。

5.png

   图4 示波器截取的高速USB协商过程1


& g6 Y  d- _$ n* ^1 ~

2.这幅图显示了host发出的chirp KJ信号的幅度,头几个KJ是800mv(a,b之间),随后的是400mV。图中可以看到设备在收到第三个chirp J(蓝色短条)后马上把1.5k电阻取消,导致chirp J的幅值下降到400mV。(17.78mA * (45Ohm ||45Ohm) = 17.78mA * 22.5Ohm = 400mV)  

6.png

图5 示波器截取的高速USB协商过程2


8 d- \' y" j2 B8 m* L1 n* ~

3.测量了一个chirp J的宽度:43.5us。

7.png

图6 示波器截取的高速USB协商过程3

7 y1 w6 v& y/ r

最后附上一张来自Don Anderson的USB System Architecture里的USB HS接口图:

8.png

图7 High-Speed signal Interface

5 r9 u! L4 ~2 @

  转载自flydream0                                                                                                                                                                                                  

                                                                                                                                                                                                                                                                                                                                                  
; y& {1 G" i3 w* a$ ^: B
赞 收藏 评论1 发布时间:2018-5-21 14:12

举报

1个回答
七哥 回答时间:2018-5-21 17:14:45
云里雾里,不懂高速

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版