您的位置:首页 > 其它

usb---端点

2013-07-24 21:15 183 查看
一个端点是一个可唯一识别的USB设备的Portion,它是主机与设备间通信流的一个结束点一系列相互独立的端点在一起构成了USB逻辑设备。每个逻辑设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号。这个端点号是在设备设计时被给定的。除端点0外的每个端点(与管道对应)都是一个简单的连接点,或者支持数据流进设备(OUT),或者支持其流出设备(IN),两者不可得兼。

一个端点的特性决定了它与客户软件进行的传送的类型。一个端点有以下特性:

·端点的总线访问频率要求

·端点的总线延迟要求

·端点的带宽要求

·端点的端点号

·对错误处理的要求

·端点能接收或发送的包的最大长度

·端点的传送类型

·端点与主机的数据传送方向

端点号不为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 : 端点属性.Bit1-0:00控制,01同步,10块传输,11中断.同步类型:Bit3-2:00非同步,01异步,10自适应,11同步.端点的用法类型:Bit5-4: 00数据端点,01显式反馈端点,10隐式反馈端点,11保留。Bit7-6保留。

wMaxPacketSize : 本端点接收或发送的最大信息包大小Bit10-0表示数据包长度,Bit12-11每小帧最多传输的事务处理数,其余保留,必须设置为0.

bInterval : 轮训数据传送端点的时间间隔.对于块传送和控制传送的端点忽略.对于同步传送的端点,必须为1,对于全速(USB1.1)中断传送的端点,范围为1-255,对应的访问间隔为1ms~255ms。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: