您现在的位置是:主页 > USB2.0规范 >
USB端点描述符bInterval的时间周期解释
发布时间:2022-12-25 22:36:09所属栏目:USB2.0规范 已帮助人编辑作者:【USB接口百科】
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)个周期单位 | 未用 | 未用 |
周期其单位表示多少个周期单位同步传输一次数据。如:
bInterval | 轮询周期2^(N-1) |
---|---|
1 | 1; 每个总线间隔传输数据。 |
2 | 2; 数据每隔一个总线间隔传输一次。 |
3 | 4; 每四个总线间隔传输一次数据。 |
4 | 8; 每八个总线间隔传输一次数据。 |
如对于一个高速端点,它的端点特性为:
wMaxPacketSize是 1024。位 12..11 为01表示两个额外的事务。bInterval为1。选择配置后,同步管道的MaximumPacketSize为1024*(2+1)=3072个字节(2个额外的事务),所以这样USB设备端可以在每个微帧中传输3072个字节,一帧(8个微帧)中传输3072*8=24576个字节。
下图显示了不同的bInterval配置在高速同步传输中的数据传输频率。

超高速端点的同步数据传输每个方格代表一个微帧
对于一个超高速端点,它的端点特性为:
wMaxPacketSize是 1024。bMaxBurst 是15bInterval为1Isochronous.Mult是2wBytesPerInterval是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表示端点的最大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传输中.
以上就是USB接口百科为您提供USB端点描述符bInterval的时间周期解释的解读,本文章链接: http://www.usb-hub.cn/usb20gf/42289.html 欢迎分享转载,更多婚礼相关资讯请前往USB2.0规范