USB2.0规范
+ -

USB端点描述符bInterval的时间周期解释

2021-10-22 5666 17

USB 端点描述符用于描述主机查询端点的时间间隔,这个值根据USB的版本和端点的类型而不同。

中断传输 同步传输 控制传输 批量传输
低速 1-255,单位为ms / / /
全速 1-255,单位为ms 1-16,2^(N-1)个周期单位 / /
高速 1-16,2^(N-1)个周期单位 1-16 ,2^(N-1)个周期单位 解释1 解释1
高速 125us为单位 1-16,2^(N-1)个周期单位 未用 未用
  • 解释1:对于高速批量/控制输出端点,bInterval必须指定端点的最大NAK频率。值0表示端点永不NAK。其它值表示每个微帧的bInterval*125us时间最多1个NAK。这个值的范围必须在0到255之间;

周期其单位表示多少个周期单位同步传输一次数据。如:

bInterval 轮询周期2^(N-1)
1 1; 每个总线间隔传输数据。
2 2; 数据每隔一个总线间隔传输一次。
3 4; 每四个总线间隔传输一次数据。
4 8; 每八个总线间隔传输一次数据。
  • 对于全速,总线间隔是一帧。一帧的长度是 1 毫秒。
  • 对于高速和超高速,总线间隔是一个微帧。微帧的长度是 125 微秒。八个连续的微帧构成一个高速或超高速帧。

高速端点的同步数据传输

如对于一个高速端点,它的端点特性为:

  • wMaxPacketSize是 1024。
  • 位 12..11 为01表示两个额外的事务
  • bInterval为1。
    选择配置后,同步管道的MaximumPacketSize为1024*(2+1)=3072个字节(2个额外的事务),所以这样USB设备端可以在每个微帧中传输3072个字节,一帧(8个微帧)中传输3072*8=24576个字节。
    下图显示了不同的bInterval配置在高速同步传输中的数据传输频率。
    高速端点的同步数据传输

    每个方格代表一个微帧

超高速端点的同步数据传输

对于一个超高速端点,它的端点特性为:

  • wMaxPacketSize是 1024。
  • bMaxBurst 是15
  • bInterval为1
  • Isochronous.Mult是2
  • wBytesPerInterval是45000

所以其最大字节数可以计算为wMaxPacketSize * ( bMaxBurst +1) * ( Mult + 1) =49152。
设备将该值限制为 45000 字节的wBytesPerInterval值。该值表示在MaximumPacketSize 45000 中。客户端驱动程序只能使用MaximumPacketSize值。在这个例子中,请求可以分为三个突发事务。前两个突发事务各包含 16 个wMaxPacketSize块. 最后一个突发事务包含 12 个块来保存剩余的字节。此图显示了通过超高速传输的同步数据包传输的轮询间隔和字节。
1024*(16+16+12)=45056,所以第三个突发传输的第12事务,数据为1024-56=968个字节。
超高速端点的同步数据传输

关于高速设备控制传输批量传输中的bInterval

在高速设备控制传输批量传输的bInterval表示端点的最大NAK频率。
这里我们首先回顾一下NAK握手包的用法:

  • NAK握手包由设备端发出,主机接收
  • 对于输入数据传输,表示设备没有数据或者没有计划向主机发送数据。
  • 对于输出数据传输,表示设备无法接收来自主机的数据。

从以上NAK的用法来看:

  • 设备是无法收发数据,由设备主动通知主机的定时机制。
  • 对于控制传输,一般一次控制一次数据的传输,这个NAK好像没有什么意义。因为即使设备没有数据或无法接收数据时,也会对控制传输NAK掉。
  • 对于BULK传输,这里的bInterval有一定的意义。由于批量传输支持突发即burst传输,所以在进行大批量数据传输时,可以不必每次传输都ACK,而这里的NAK表示数据无法接收或无数据发送了,可以早点知道传输结束或无法继续接收数据。这样就大大提高了数据的发送效率。

如我们手中一个硬盘,其输入输出端点如下:

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (never NAKs)
Data (HexDump)           : 07 05 02 02 00 02 00  

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x02 (TransferType=Bulk)
wMaxPacketSize           : 0x0200 (max 512 bytes)
bInterval                : 0x00 (never NAKs)
Data (HexDump)           : 07 05 83 02 00 02 00                              .......

这里都是永不NAK。

所以本人这里对于bInterval的NAK的理解是,这东西有没啥用,而且还费带宽。因为这会和高速设备中的PING机制重复。

PING 机制来探测设备是否就绪,并且PING只用于控制传输或批量传输的OUT传输中.

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......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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