USB 端点(二)

一个端点是一个可唯一识别的USB设备的Portion,它是主机与设备间通信流的一个结
束点 。一系列相互独立的端点在一起构成了USB逻辑设备 每个逻辑设备有一个唯一的地
址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有
唯一的端点号。
这个端点号是在设备设计时被给定的。每个端点都是一个简单的连接点
,或者支持数据流进设备,或者支持其流出设备,两者不可得兼。
   一个端点的特性决定了它与客户软件进行的传送的类型。一个端点有以下特性:
   ·端点的总线访问频率要求
   ·端点的总线延迟要求
   ·端点的带宽要求
   ·端点的端点号
   ·对错误处理的要求
   ·端点能接收或发送的包的最大长度
   ·端点的传送类型(详见4.4节)
   ·端点与主机的数据传送方向
   端点号不为0的端点在被设置前处于未知状态,是不能被主机访问的。

USB内为什么要设计成许多端点,少之几个,多至几十个
一般地, USB设备必须有一个控制端点0,是双向的,其他的方向是唯一,IN OR OUT!
为什么要设计成许多端点?
USB定义了四种传输类型,每种类型数据流有不同的特性,使用不同的端点来实现不同的传输类型。 
在通信过程中可能存在各种传送,为满足基本要求,就定义了多个不同类型的端点,大概是这个原因吧

标准的USB设备有5种USB描述符:设备描述符,配置描述符,字符串描述符,接口描述符,端点描述符.
USB设备中的每个端点都有自己的端点描述符,由接口描述符中的bNumEndpoint决定其数量.下面详解:

typedef struct _USB_ENDPOINT_DESCRIPTOR_
{
    BYTE        bLength,
    BYTE        bDescriptorType,
    BYTE        bEndpointAddress,
    BYTE        bmAttributes,
    WORD      wMaxPacketSize,
    BYTE        bInterval
}USB_ENDPOINT_DESCRIPTOR;

bLength : 描述符大小.固定为0x07.
bDescriptorType : 接口描述符类型.固定为0x05.
bEndpointType : USB设备的端点地址.Bit7,方向,对于控制端点可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端点号.
bmAttributes : 端点属性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03中断.
wMaxPacketSize : 本端点接收或发送的最大信息包大小.
bInterval : 轮训数据传送端点的时间间隔. 对于批量传送和控制传送的端点忽略 对于同步传送的端点,必须为1,对 于中断传送的端点,范围为1-255
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值