Chinaunix首页 | 论坛 | 博客
  • 博客访问: 864658
  • 博文数量: 189
  • 博客积分: 4310
  • 博客等级: 上校
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-27 08:56
文章分类

全部博文(189)

文章存档

2015年(1)

2013年(2)

2012年(1)

2011年(39)

2010年(98)

2009年(48)

分类: 嵌入式

2010-02-22 15:30:47

USB主机是如何检测到设备的插入的呢?首先,在USB集线器的每个下游端口的D+和D-上,

分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻

拉到了低电平。而在USB设备端,在D+或者D-上接了1.5K欧姆上拉电阻。对于全速和高速设备,

上拉电阻是接在D+上;而低速设备则是上拉电阻接在D-上。这样,当设备插入到集线器时,

由1.5K的上拉电阻和15K的下拉电阻分压,结果就将差分数据线中的一条拉高了。集线器检测

到这个状态后,它就报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器),

这样就检测到设备的插入了。USB高速设备先是被识别为全速设备,然后通过HOST和DEVICE

两者之间的确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时将D+上的

上拉电阻断开。
    一个简单的实验:只用一个上拉电阻接在USB的+5V和D+或者D-上,WINDOWS也会提示

发现新硬件,但是无法找到驱动程序。这时去设备管理器里面看,有显示未知USB设备,

并且其VID和PID为0。根据这个,我们可以简单的判断设备是否枚举成功。如下图所示,

分别是枚举不成功和枚举成功的图。

阅读(4342) | 评论(0) | 转发(6) |
给主人留下些什么吧!~~