您现在的位置: USB开发网 > USB技术文档 > USB1.1
- USB1.1

搭个简单电路验证USB主机是如何检测USB设备的插入和拨出动作的

------分隔线----------------------------

  USB设备是一种即插即用设备,即插即用的英文缩写为PNP(Plug and Play),在不用关主机的情况即可直接拨插USB设备,而且插上即可使用,那么USB主机是如何检测USB设备的插入和拨出动作的呢

  总结来说USB主机是通过监视USB端口上的电压变化来判断设备的插入和拨出动作的。

  USB集线器端口的两根信号线D+和D-(《USB物理模型简介》一文有介绍) 的每一根都有15kΩ的下拉电阻,而在设备端,在D+或D-上接了1.5kΩ的上拉电阻,当未插入设备时,即集线器的端口悬空时,两根信号线都被下拉电阻拉到了低电平。当USB设备插入时,由于上拉电阻的存在,由1.5K的上拉电阻和15K的下拉电阻分压,两要信号线中有一根被拉到了高电平,集线器检测到这个状态后,它就报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器),这样就检测到设备的插入了。对于全速和高速设备,上拉电阻是接在D+上的,而低速设备则是上拉电阻接在D-上的,集线器通过判断哪根线被拉高来区分是低速设备还是全速和高速设备。USB高速设备先是被识别为全速设备,然后通过主机和设备两者之间的数据通讯进一步确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时会将D+上的上拉电阻断开。当USB主机检测设备的插入后,主机将会向设备发出一系列枚举请求,设备作出正确响应来完成USB设备枚举过程。

  我们做个简单的实验,自已搭一个电路,只用一个上拉电阻接在USB的+5V(VBUS)和D+或者D-上,这个电路插入电脑上的USB端口后同样会提示发现USB设备,只是不能安装驱动程序而已(因为安装驱动力程序需要设备枚举过后,设备枚举过程需要USB设备对主机发来的命令请求数据包作出正确的回复),这时打开设备管理器看看,有显示未知USB设备,并且其VID和PID为0,根据这个,我们可以简单的判断设备是否枚举成功。电路图如下:

 

USB插入检测实验电路
 
图1 USB插入检测实验电路


 

  下面我们来搭这个电路,如果手上没有USB插座,可以用一根USB电缆,一头剪掉,记得插电脑那头扁平接头连线不要留得太短,将一个1.5K电阻焊到上VBUS和D+之间即可,如如何找出USB电缆里这两根线的位置呢,请看下面图所示:

 

USB电缆及插头信号定义
 
图2 USB电缆及插头信号定义

  这里介绍另一种方法,如果您的手上有USB插座的话,这种方法不用把USB电剪断,所以建议使用下面的方法。这种方法直接把电阻焊到另外准备的USB插座上,各种类型USB插座信号脚定义如下所示:

 

USB插座引脚编号
 
图3 USB插座引脚编号(电气含义见图2)

   在USB插座的VBUS和D+(即第1和第3脚)之间焊上1.5K电阻后的效果(我用的是贴片电阻):

 

USB设备插入检测实验
 
图3 在USB-B插座上搭个电阻做USB设备插入检测实验

  然后把这个电路插入电脑主机,Windows真的发现有USB设备插入电脑了,只是不能安装驱动程序而已,如下图所示:

 

USB插入检测实验-发现USB设备
 
图4  Windows真的发现这个假的USB设备了

  打开设备管理器查看这个假的USB设备,发现PID和VID都为0,这也是判断USB枚举成功与否的标志。

 

USB插入检测实验-查看PID和VID
图5 USB插入检测实验-查看PID和VID 
------分隔线----------------------------
联系我们
  • Q Q: 1148374829 点击这里给我发消息
  • 旺旺:jhoneqhsieh 点击这里给我发消息
  • 电话:(0)15923141204
  • 淘宝网店
USB开源项目