USB端点和管道

USB设备的端点

     USB外设本身应包含一定数量的独立的寄存器端口,并能由USB设备驱动程序直接操作。这些寄存器也就是USB设备的端点。一个设备可以有多个端点,但所有的USB设备都必须有一个零端点以用于设置,完成Control类型传送。

     每一个设备都有一个由主机分配的唯一的地址,而各个设备上的端点都有设备确定的端点号和通信方向。每个端点只支持单向通信,要么是输入端点,数据流方向是从设备到主机;要么是输出端点,数据流方向是从主机到设备。设备地址、端点号和通信方向三者结合起来就唯一确定了各个端点。

      在设备配置时,必须告诉主机设备的各个端点的特性,包括端点号、通信方向、端点支持的最大包大小、带宽要求,以及支持的通信方式等。其中,端点支持的最大包大小称为数据有效负载(Data Payload),这是个重要的概念。前面提到的端点0比较特殊,它实际是由输入和输出两个端点组成。每个设备都必须有端点0、主机和它建立的默认管道(Default Pipe),用于配置设备和实现对设备的一些基本的控制功能。除了端点0,其余的端点在设备配置之前是不能和主机通信的。只有设备在配置描述符中报告了主机,它有那些端点及这些端点的特性,待主机确认后,这些端点才被激活。除端点0之外,低速USB设备最多只能有两个端点,而全速设备最多能有15个。

                     

                                                  USB 通信流

  管道

      管道(Pipe)是USB设备的端点和主机软件进行数据传输的通道。管道是从逻辑概念上来描述信息传输的通道。USB协议规定了流管道(Stream Pipe)和消息管道(Message Pipe)两种管道。其中,消息管道有定义的结构;默认控制管道属于消息管道。

      在一个传输发生之前,主机与设备之间必须先建立一个管道。因此,每条管道与端点的特性都有直接关系,它只能支持一种通信方式。例如,一个USB设备应有一个端点来支持接收数据的管道,还应有另一个端点来支持发送数据的管道。端点0所对应的管道称为默认管道。USB主机对外设的控制就是通过在与外设之间相连的默认管道发“外设请求”来实现的。

转载于:https://www.cnblogs.com/markmin214/archive/2013/04/03/2998776.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值