USB2.0规范
+ -

USB 端点描述符

2020-10-31 10442 21

端点描述符

USB设备中的每个端点都有自己的端点描述符,由接口描述符中的bNumEndpoint决定其数量

struct _ENDPOIN_DESCRIPTOR_STRUCT 
{ 
    BYTE bLength;           //设备描述符的字节数大小,为0x7 
    BYTE bDescriptorType;   //描述符类型编号,为0x05
    BYTE bEndpointAddress; //端点地址及输入输出属性 
    BYTE bmAttribute;       //端点的传输类型属性 
    WORD wMaxPacketSize;   //端点收、发的最大包的大小 
    BYTE bInterval;         //主机查询端点的时间间隔 
} ENDPOIN_DESCRIPTOR_STRUCT ;
  • bLength : 描述符大小.固定为0x07.
  • bDescriptorType : 端点描述符类型.固定为0x05.
  • bEndpointAddress : USB设备的端点地址.Bit7,方向,对于控制端点可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端点号.
  • bmAttributes : 端点属性.Bit7-2,保留(同步有定义).BIt1-0:00控制,01同步,02批量,03中断.

    当为同步传输时,bEndpointType的bit3-2的值不同代表的含义不同:
    00:无同步
    01:异步
    10:适配
    11:同步
    BIT5:4
    00: 表示数据端点
    01:表示反馈端点Feedback endpoint
    10:表示隐式反馈数据端点 Implicit feedback Data endpoint
    11:保留

  • wMaxPacketSize : 本端点接收或发送的最大信息包大小.
    USB2.0时:

    对于同步端点,此值用于指示主机在调度中保留的总线时间,这是每(微)帧数据有效负载所需的时间,有效负载时间就是发送一帧数据需要占用的总线时间,在实际数据传输过程中,管道实际使用的带宽可能比保留的带宽少,大家想想,如果实际使用的带宽比保留的还多,那就丢数了;
    对于其类型的端点,bit10~bit0指定最大数据包大小(以字节为单位);
    bit12~bit11对于高速传输的同步和中断端点有效:bit12~bit11可指定每个微帧的额外通信次数,这里大家一定要知道是在高速传输中,当一个事务超时时,在一个微帧时间内重传的次数,如果设置为00b(None),则表示在一个微帧内只传输一个事务,不进行额外的超时重传,如果设置为01b,则表示在一个微帧内可以传输两次事务,有一次额外的重传机会,从下面可以看出,一个微帧最多可以有两次重传事务的机会,如果微帧结束了还是失败,就需要等到下一个微帧继续发送该事务;

USB3.0时:wMaxPacketSize表示包的大小。对于bulk为1024,而对于同步传输,可以为0~1024或 1024。

  • bInterval : 轮询数据传送端点的时间间隔.对于批量传送和控制传送的端点忽略.对于同步传送的端点,必须为1,对于中断传送的端点,范围为1-255.

    对于全速/高速同步端点,此值必须在1到16之间。bInterval值用作2的指数,例如bInterval为4,表示周期为8个单位;
    对于全速/低速中断端点,该字段的值可以是1到255,也就是主机多少ms给设备发一次数据请求;
    对于高速中断端点,使用bInterval值作为2的指数,例如bInterval为4表示周期为8。这个值必须在1到16之间;
    对于高速批量/控制输出端点,bInterval必须指定端点的最大NAK速率。值0表示端点永不NAK。其它值表示每个微帧的bInterval*125us时间最多1个NAK。这个值的范围必须在0到255之间;
    00 = None (1 transaction per microframe)
    01 = 1 additional (2 per microframe)
    10 = 2 additional (3 per microframe)
    11 = Reserved
    其它位默认为0,
    对于全速/低速批量/控制输出端点,此值无意义,可以任意指定。

3: kd> dt _USBD_PIPE_INFORMATION 0xffffbe09`4a851a58
xxx!_USBD_PIPE_INFORMATION
   +0x000 MaximumPacketSize : 0x200
   +0x002 EndpointAddress  : 0x1 ''    //写数据
   +0x003 Interval         : 0 ''
   +0x004 PipeType         : 2 ( UsbdPipeTypeBulk )
   +0x008 PipeHandle       : 0xffffbe09`54126d20 Void
   +0x010 MaximumTransferSize : 0x400000
   +0x014 PipeFlags        : 0

3: kd> dt _USBD_PIPE_INFORMATION 0xffffbe09`4a851a58
xxx!_USBD_PIPE_INFORMATION
   +0x000 MaximumPacketSize : 0x200
   +0x002 EndpointAddress  : 0x1 ''    //写数据
   +0x003 Interval         : 0 ''
   +0x004 PipeType         : 2 ( UsbdPipeTypeBulk )
   +0x008 PipeHandle       : 0xffffbe09`54126d20 Void
   +0x010 MaximumTransferSize : 0x400000
   +0x014 PipeFlags        : 0
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

UVC 视频控制接口中断端点描述符
通过视频控制接口包括用于实现特定类请求的控制端点(默认端点0)用于返回中断状态信息的可选中断状态返回端点。视频控制端点描述符标准的视频控制端点描述符使用端点0来实现标准的中断控制,故无须额外的标准视频控制端点描述符。特定类的视频控制端点描述符使用端点0来实现特定类视频控制,故无须特定类的视频控制端点......
USB设备描述符、配置描述符、接口描述符和端点描述符的拓扑关系
在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。一次只能有一个配置是活动的。大多数的设备只有一个配置和一个接口,当一个设备......
UVC 端点描述符
在USB规范中,端点描述符用于描述设备的端点信息。视频控制接口VC中的端点描述符视频控制接口(VC)的端点描述符可以存在,也可以不存。如果存在,必须是中断类型的,且必须为输入端点。bLength : 描述符大小.固定为0x07.bDescriptorType : 接口描述符类型.固定为0x05.bE......
UVC 视频流端点描述符
视频数据端点可以实现为同步端点或批量端点。等时/同步传输视频端点描述符使用和标准USB设备端点描符同样的数据结构。struct _ENDPOIN_DESCRIPTOR_STRUCT { BYTE bLength; //设备描述符的字节数大小,为0x12 BYTE ......
UAC 标准等时音频数据端点描述符
标准等时音频数据端点描述符:Standard AS Isochronous Audio Data Endpoint Descriptor,用于描述音频数据流的传递方式及方法。标准等时音频数据端点描述符数据结构定义如下:typedef struct _USB_AUDIO_ENDPOINT_DESCRI......
USB 端点描述符
端点描述符USB设备中的每个端点都有自己的端点描述符,由接口描述符中的bNumEndpoint决定其数量struct _ENDPOIN_DESCRIPTOR_STRUCT { BYTE bLength; //设备描述符的字节数大小,为0x7 BYTE bD......
UAC 多源自适应数据端点描述符
仅当自适应源有一个或多个同步音频数据端点时,才存在此描述符类型。typedef struct _USB_AUDIO_ENDPOINT_DESCRIPTOR { UINT8 bLength; UINT8 bDescriptorType; UINT8 bEndpointAddre......
UAC麦克见音频同步端点描述符
UAC音频采用同步传输,故数据传输的端点必须为同步传输。端点描述符的数据结构如下:关于同步传输可详见:http://www.usbzh.com/article/detail-118.html标准端点描述符代码如下:/* USB_DT_ENDPOINT: Endpoint descriptor......
USB端点描述符bInterval的时间周期解释
USB 端点描述符用于描述主机查询端点的时间间隔,这个值根据USB的版本和端点的类型而不同。中断传输同步传输控制传输批量传输低速1-255,单位为ms///全速1-255,单位为ms1-16,2^(N-1)个周期单位//高速1-16,2^(N-......
UAC 类特定等时音频数据端点描述符
类特定等时音频数据端点描述符:Class-Specific AS Isochronous Audio Data Endpoint Descriptor,用于描述标准音频传输端点的属性。类特定等时音频数据端点描述符数据结构定义如下:typedef struct _USB_ASD_ENDPOINT_D......
WinUSB获取USB设备端点信息
使用WinUsb_QueryInterfaceSettings函数获取指定接口下的所有信息,然后解析端点信息并打印。struct PIPE_ID{ UCHAR PipeInId; UCHAR PipeOutId;};BOOL QueryDeviceEndpoints (......
UAC1.0麦克风端点描述符wMaxPacketSize的问题分析
同事搞了一个UAC麦克风,将输入端点设置如下: ----------------- Endpoint Descriptor -----------------bLength : 0x09 (9 bytes)bDescriptorType ......
UAC设备端点符Feedback端点描述符的校验判断
UAC的同步传输可以在同步(1101)和异步(0101)的方式工的时候,可以选择使用一个FeedBack端点进行数据的传输校准。当然,这里的01代表该端点是同步传输方式,其中11代表是同步,01代表的是异步。当然也有一种01代表自适应方式。这些概念可详见:UAC音频设备的同步传输(同步、自适应、......
UVC摄像头dwMaxPayloadTransferSize批量传输与USB端点描述符wMaxPacketSize的关系说明
这个问题是老生常谈了,其实结合以前的文章我们应该能说明白,可详见:USB数据长度为0的DATA/IN事务 https://www.usbzh.com/article/detail-624.htmlUSB2.0 事务 https://www.usbzh.com/article/detail-691......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!