USB全速和低速设备的检测

来源:互联网 发布:cnstorm和淘宝比哪个好 编辑:程序博客网 时间:2024/04/28 12:14

1、全速和低速设备的检测
如图所示为一个简易的usb连接模型,左边为usb host,右边为usb设备。全速和低速设备通过其端接的上拉电阻的位置来区分。

简单的usb设备连接图

全速和低速设备端接如图所示,设备的D+线上接上拉电阻(R4)1.5K欧姆,而低速设备D-线上接上拉电阻(R3)1.5K欧姆,二者下行端口的下拉端统一接15K欧姆的电阻连接到地。

当USB的host端口没有连接设备时,由于下拉电阻的存在,使D+和D-上的电压为0,而当端口接上设备时,设备供电后,电源会通过上拉电阻(1.5K欧姆)和端口的下拉电阻(15K欧姆)分压,在D+或D-上产生一个正脉冲,而USB主机根据脉冲产生在哪根数据线上,来判断是全速还是低速。
2、高速设备和全速设备的检测
在连接的最开始阶段,高速设备是当成全速设备来识别的,因此,高速设备的D+线上也会有一个1.5K欧姆的上拉电阻到电源,但是与全速设备不相同的是,高速设备对这个上拉电阻,会有一个开关进行通断控制。因为高速信号传输是通过电流驱动的,D+和D-上的信号幅值在0V和400mv之间切换,所以传输时不允许有一个接到3.3V的上拉电阻存在。

*以下就是简化的高速设备检测流程。*
===》1,集线器或者主机必须确认连在它端口上的设备不是低速设备,高速设备是以一个全速设备的身份出现的,即和全速设备一样,高速设备也在D+端有一个1.5K的上拉电阻。USB2.0的HUB把设备当成一个全速设备,然后进行一系列的握手信号来确认双方的身份,如果HUB是USB2.0,设备也是高速的 就工作在高速模式,否则只能工作在全速模式。

===》2,当集线器或者主机确认端口设备不是低速设备后,它将在握手协议的最开始阶段,T0时刻,发出一个SE0(D+,D-都为低电平并持续至少10mS),用作复位。(当设备为非低速设备,且总线处于SE0状态才可以进行高速握手。)

===》3,设备检测这个SE0,进行复位。(这里设备根据自己处在何种状态,会作出不同的动作)

===》4,假如设备是高速设备,则它会让上拉电阻仍然连接,但会使高速的端接无效,并驱动高速信号电流流向D-线上,这将在总线上产生一个K脉冲。该脉冲,在复位的TO时刻后,必须持续至少1.0 ms,但不能超过7.0ms
(低速下:D+为“0”,D-为“1”是为“J”状态,“K”状态相反;
全速下:D+为“1”,D-为“0”是为“J”状态,“K”状态相反;
高速下:D+为“1”,D-为“0”是为“J”状态,“K”状态相反;)

===》5,集线器在观察到设备发出的K脉冲至少2.5 us后,必须能检测出这个脉冲。假如集线器没有检测出这个脉冲,则它必须持续的发出SE0信号,直到复位结束。

===》6,在当K脉冲信号在总线上存在不超过100 us的时间后,集线器必须开始发送间隔的K脉冲和J脉冲序列信号,在J’s和K’s之间的总线上不允许有空闲状态发生。该序列信号在复位结束之前将持续一段时间,不少于100 us,但不长于500 us。(这保证了总线上始终保持活动状态,阻止设备进入高速挂起状态。)每一个独立的K脉冲和J脉冲的持续时间至少为40 us,但不能长于60 us。

===》7,在完成脉冲序列信号发生之后,集线器发出SE0信号,直到复位结束。在复位结束时,集线器必须转到高速使能状态,而无需在数据线上作出任何改变。

===》8,在设备完成发送它自己的脉冲信号(K脉冲)后,它将寻找高速集线器的脉冲信号。设备至少需要观测到K-J-K-J-K-J脉冲序列,来作为检测到一个有效的集线器脉冲信号。每一个独立的K脉冲和J脉冲至少需检测到2.5 us。

A),假如设备检测到脉冲序列K-J-K-J-K-J,则在检测到后的500 us之内,设备要求断开D+的上拉电阻,并使能高速端接,进入高速缺省状态。即已进入高速模式

B),假如设备在完成它自己的脉冲信号之后的1.0 ms到2.5 ms之内,没有检测到脉冲序列K-J-K-J-K-J,则设备要回复到全速缺省状态,并等待至复位结束。(进入全速模式)

注:部分内容参考自:

[USB2.0的高速、全速及低速设备的检测]
(http://blog.csdn.net/lg2lh/article/details/7321542)

[USB2.0 速度识别–区分低速-高速-全速]
(http://www.mamicode.com/info-detail-969074.html)

0 0
原创粉丝点击