USB通信协议

    要对USB传输有个清楚的了解首先必须要了解两个基本概念:端点和管道。
(l)端点
    所有的传输都是传送到设备端点,或是从设备端点发出。端点其实就是一个能够储存多个字节的缓存器。在USB规范中,端点被定义为“USB设备中唯一可寻址部分,是主机与设备之间通信流的来源或去向。”
    每个端点所需的唯一地址是由端点编号和方向组成的。编号范围可以是0-15,方向则基于主机的角度:创表示朝向主机,OUT表示远离主机。配置为执行控制传输的端点必须在两个方向上都能传输数据。所以控制端点实际上包含一对共享一个端点编号的创和OUT端点。
    每个设备都必须将端点0配置为控制端点。其他传输类型则仅以一个方向发送数据。一个单一的端点编号既可以支持IN端点地址,也可以支持OUT端点地址。除了端点0外,中速设备还可以再增加30个端点(1-15,每个都既支持IN,又支持OUT)。低速设备仅限于再增加2个端点,采取任何方向组合。
    端点的特性,主要包括数据传输方式(用于IN事务的端点、OUT事务的端点和SETUP事务的端点等)、总线访问频率、带宽、端点号(由USB接口芯片定义)和数据包最大容量等。除了端点0(用作控制传输端点,默认)外,端点必须在设备被主机配置后才能使用。
(2)管道
   管道(PIPE),并不像端点那样具有实在的意义。它只是一种逻辑上的概念,它是指主机与设备端点之间的连接。管道就是数据传输的通道,代表了主机的数据缓冲区与设备端点之间交换数据的能力。设备被配置后,端点就可以使用了,因此管道也就存在了。每个设备都拥有一个使用端点0的默认控制管道(Default Contro1 PIPE)。
   USB规范根据信息是单向传输还是双向传输,将管道定义为流管道和消息管道。控制传输是唯一使用双向消息管道的传输,其他的传输则是使用单向的流管道。
   在消息管道中,每一个传输都以一个包含请求的设置事务开始。要完成这个传输,主机与设备可能交换数据和状态信息,或是设备只传送状态信息。如果设备支持某个请求,它会执行该请求的动作。如果设备不支持该请求,它会用一个表示不支持的码来响应。USB规范并没有定义流管道的数据格式,设备只是接收传来的数据,主机的软件或是设备的固件再做适当的处理。
   此外,还有一种特殊的管道-控制管道,为了与端点0的特殊性配合,因而这里单独提出来。所以设备必须支持端点0以构筑控制管道。通过控制管道,主机可以获得描述USB设备的完整信息,包括设备类型、电源管理、配置及端点描述等。作为USB即插即用的典型体现,只要设备连接到主机上,端点就可以被访问,即与之相应的管道也就存在了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值