zoukankan      html  css  js  c++  java
  • usb2.0 规范学习笔记

    1、一个USB HOST 最多可以同时支持128 个地址,地址0 作为默认地址,只在设备枚举期间临时使
    用,而不能被分配给任何一个设备,因此一个USB HOST 最多可以同时支持127 个地址,如果一个设
    备只占用一个地址,那么可最多支持127 个USB 设备。在实际的USB 体系中,如果要连接127 个
    USB 设备,必须要使用USB HUB,而USB HUB 也是需要占用地址的,所以实际可支持的USB 功能
    设备 的数量将小于127

    2、“复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备
    通过内置的USB HUB 组合而成的设备,比如带录音话筒的USB 摄像头等。

    3、USB 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB
    体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的
    数据包。

    4、端点(Endpoint)是USB设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传
    输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持2 组端点(2 输入,2 输出),
    高速和全速设备最多支持15 组端点。

    5、管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式
    的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。
    任何USB 设备一旦上电
    就存在一个信息管道,即默认的控制管道,USB主机通过该管道来获取设备的描述、配
    置、状态,并对设备进行配置。

    6、USB系统中数据的传输,宏观的看来是在HOST 和USB 功能设备之间进行;微观的看是在应用软件的Buffer 和USB 功能设备的端点之间进行。一般来说端点都有Buffer,可以认为USB 通讯就是应用软件Buffer 和设备端点Buffer 之间的数据交换,交换的通道称为管道。应用软件通过和设备之间的数据交换来完成设备的控制和数据传输。通常需要多个管道来完成数据交换,因为同一管道只支持一种类型的数据传输。用在一起来对设备进行控制的若干管道称为设备的接口,这就是端点、管道和接口的关系。

    7、usb传输有四种方式:控制传输、批量传输、中断传输、同步传输。

    8、控制传输对于最大包长度有固定的要求。对于高速设备该值为64Byte;对于低速设备该值为8;全速设备可以是8 或16 或32 或64.

    9、中断传输并不意味这传输过程中,设备会先中断HOST,继而通知HOST 启动传输。中断传输也是HOST 发起的传输,采用轮询的方式询问设备是否有数据发送,若有则传输数据,否则NAK 主机。

    10、批量传输是一种可靠的单向传输,但延迟没有保证,它尽量利用可以利用的带宽来完成传输,适合数据量比较大的传输。低速USB 设备不支持批量传输,高速批量端点的最大包长度为512,全速批量端点的最大包长度可以为8、16、32、64。

    11、同步传输是一种实时的、不可靠的传输,不支持错误重发机制。只有高速和全速端点支持同步传输,高速同步端点的最大包长度为 1024,低速的为 1023。

    12、这里重点介绍下枚举的过程。当设备连接到主机时,按照以下顺序进行枚举:

        1. 连接了设备的HUB 在HOST 查询其状态改变端点时返回对应的bitmap,告知HOST 某个 PORT 状态发生了改变。
        2. 主机向HUB 查询该PORT 的状态,得知有设备连接,并知道了该设备的基本特性。
        3. 主机等待(至少100mS)设备上电稳定,然后向HUB 发送请求,复位并使能该PORT。
        4. HUB 执行PORT 复位操作,复位完成后该PORT 就使能了。现在设备进入到defalut状态,可以从 Vbus 获取不超过 100mA 的电流。  主机可以通过 0 地址与其通讯。
        5. 主机通过0 地址向该设备发送get_device_descriptor 标准请求,获取设备的描述符。
        6. 主机再次向HUB 发送请求,复位该PORT。
        7. 主机通过标准请求set_address 给设备分配地址。
        8. 主机通过新地址向设备发送get_device_descriptor 标准请求,获取设备的描述符。
        9. 主机通过新地址向设备发送其他get_configuration 请求,获取设备的配置描述符。
        10. 根据配置信息,主机选择合适配置,通过set_configuration 请求对设备而进行配置。这时设备方可正常使用。

    13、USB 设备的常用操作包括:设备连接、设备移除、设备配置、地址分配、数据传输、设备挂起、设备唤醒等。USB 的请求包括标准请求、类请求以及厂商请求三类。所有的请求都通过默认管道发送,按照控制传输的三个阶段进行。

  • 相关阅读:
    HDU 2899 Strange fuction
    HDU 2899 Strange fuction
    HDU 2199 Can you solve this equation?
    HDU 2199 Can you solve this equation?
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 699 掉落的方块(线段树?)
    Java实现 LeetCode 699 掉落的方块(线段树?)
    Java实现 LeetCode 699 掉落的方块(线段树?)
  • 原文地址:https://www.cnblogs.com/pang1567/p/3570796.html
Copyright © 2011-2022 走看看