首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >USB主机多久将大量数据包发送到设备端点?

USB主机多久将大量数据包发送到设备端点?
EN

Stack Overflow用户
提问于 2022-04-28 16:25:28
回答 1查看 195关注 0票数 0

我正在开发一个带有Teensy微控制器的USB设备--如果这有帮助的话,让我们把它限制在USB1.X/“全速”设备上。USB (1.0)类定义使用批量传输端点进行通信,所以这就是使用的传输类型。

我了解到,与中断/等时传输不同,批量传输不限于帧/微帧定时--允许这些传输后,它们可以“填充”剩余带宽。例如,根据规范,每帧(USB全速)可以发送多达19x 64字节的批量事务。

因此,我的问题是:

  1. 主机每隔多长时间/多久提供一次批量传输服务?(即主机发送批量输入/输出数据包的频率)?
  2. 是否完全由主机定义?或者我可以以某种方式请求或确保最快的传输服务吗?

有关Q1的更多细节,如果有帮助的话:

我知道所有的USB交易都是由主机驱动的。我知道在传输任何数据之前,主机必须发送一个入/出包。因此,我试图确认主机是否每隔大约52 19(1000 19/ 19)发送大量输入/输出令牌消息?或者实际上,由于其能力的限制,它的速度要快得多,不管这个未知的速度如何,设备都会做出反应。

EN

回答 1

Stack Overflow用户

发布于 2022-04-28 19:25:54

前提是:

  • 带宽不共享(例如与同一USB总线/集线器上的其他USB设备共享)
  • 设备和主机上的应用程序可以足够快地获取和接收数据,
  • 只发送最大大小的数据包(如端点声明的),所有活动端点都发送和/或接收数据

然后主机将轮询设备而不暂停,您确实可以在1ms第二帧内实现多达20个数据包(最好的情况)。

调度完全由主机控制,但也在USB标准中指定。所以主人的自由有限。

在设备方面,你必须做两件事:

  • 实现缓冲,这样USB外围设备就有一个要发送的包,或者一个可以随时接收数据包的可用时隙。在较旧的USB外围设备中,这是通过双缓冲解决的,在较新的设备中,您可以为最大大小的多个packets
  • Always发送数据包设置缓冲区。否则,主机可能会暂停,直到它再次轮询下一个数据包。

优化后的设备的实际总吞吐量约为1兆字节/秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72047195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档