USB学习笔记一

5、列举:主机是怎么知道设备的

    在应用程序可以与一个设备通信之前,主机需要知道设备支持哪些传输类型和终端。
主机也必须分配一个地址给设备。主机通过一个被称为列举的信息交换来完成这些工作。

在USB2.0 协议中,规定了可
以支持3 种速度模式,分别是低速(Low Speed, 1.5Mbps),全速(Full Speed, 12Mbps)和高速(High
Speed, 480Mbps)。但它并未强制要求一定具备高速模式。


    USB的数据交换只能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。
    所有的数据传输都由主机主动发起,而设备只是被动的负责应答。
    在USB OTG中,一个设备可以在从机和主机之间切换,这样就可以实现设备与设备之间的连接,
大大增加了USB的使用范围。但这是依然没有脱离这种主从关系,两个设备之间必然有一个作为主机,
另一个作为从机。USB OTG增加了一种MINI USB接头,比普通的4线USB多了一个ID标识线,用来表明
它是主机还是设备。

    在标准的PC机上,USB主控器是挂在PCI总线上的。在Windows中,USB由各种驱动程序负责管理,
最后由驱动程序产生功能设备(FDO),这就是我们所看到的实际设备了。
    在USB的低速和全速模式中,采用的是电压传输模式。而在高速模式下,则是电流传输模式。
    在USB协议中规定,设备在未配置之前,可以从Vbus上获取100mA的电流;在配置之后,最多可以从
Bbus上获取500mA的电流。

    标准的USB口只有A型和B型,我们平时电脑上用的那种插头叫做A型USB插座。
打印机上面的那个插座,则是B型插座(比较四方的,没有电脑上面那种扁)。
    miniUSB,很小的USB,主要是给便携设备用的,例如MP3、手机等。
    想PC机就是一个主机,其他的只能是设备,因而两个设备之间是无法直接进行通信的。而USB OTG
(on the go)出现,则解决了这个矛盾:一个设备可以在某种场合下,改变身份,以主机的形式出现。

    USB标准规定了里面信号线的颜色,其中Vbus为红色,D-为白色,D+为绿色,GND为黑色。

    USB主机是如何检测到设备的插入的呢?
    首先,在USB集线器的每个下游端口的D-和D+上,分别接了一个15K欧姆的下拉电阻到地。这样,在
集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D+或者D-上接了1.5K欧姆
上拉电阻。对于全速和高速设备,上拉电阻是接在D+上;而低速设备则是上拉电阻接在D-上。这样,设备
插入到集线器时,由1.5K的上拉电阻和15K的下拉电阻分压,结果就将差分数据线中的一条数据线中的一条拉高了。
集线器检测到这个状态后,它就报告给USB主控器,这样就检测到设备的插入了。

   

 

      USB设备的枚举过程

     枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些
信息来加载合适的驱动程序。

控制传输分为三个过程:建立过程,可选的数据过程,状态过程。
   
    首先,USB主机检测到USB设备插入后,就会先对设备复位。设备复位后,USB主机就会对地址为0的
设备发送获取设备描述符的标准请求。所有的USB设备在总线复位后其地址都为0,这样主机就可以跟
那些刚刚插入的设备通过地址0通信。主机在建立阶段发出获取设备描述符的输入请求,设备收到该请求后,
在,在数据过程将设备描述符返回给主机。主机在成功获取到一个数据包的设备描述符后并且确认没有
错误后,标准的设备描述有18个字节。

    然后主机再对设备复位一下,接下来就会进入到设置地址阶段。这时USB主机发出一个设置地址
的请求,地址包含在建立包中,具体的地址USB主机会负责管理,它会分配一个唯一的地址给新的设备。
USB设备在收到地址后,返回0长度的转态包,主机收到0长度的状态包之后,会返回一个ACK给设备。设备
在收到ACK之后,就可以启用新的地址了。这样设备就分配到了一个唯一的设备地址,以后主机通过它来进行
访问该设备。然后主机再次获取设备描述符,这次跟第一次可能有点不一样,这次需要获取完全部的
18个字节设备描述符。

     接下来,主机就会获取配置描述符。配置描述符总共为9字节。主机在获取到配置描述符后,根据
里面的配置集合总长度,再获取配置集合。配置集合包括配置描述符,接口描述符,端点描述符等等。

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值