【问题标题】:USB performance issuesUSB 性能问题
【发布时间】:2014-07-23 16:09:42
【问题描述】:

我正在尝试通过 USB 传输数据。这些是最多 64 字节的数据包,以 4KHz 的频率发送。这给出了大约 2Mb/s 的比特率。

获取此数据的软件任务以 2.5 KHz 运行。

理想情况下,我们永远不希望数据包以低于 2.5 KHz 的速度到达那里(因此 2 KHz 不是很好)。

是否有人知道 USB 可以实现的任何一般限制?

我们在一个主板上运行,该主板有一个运行 QNX 的 1.33 GHz 和一个运行 MQX 的 TWR K60F120M 塔式系统的子板。

除了系统的细节之外,USB是否应该用于这种数据传输,即高频和短数据包大小?

非常感谢您的帮助 MG

【问题讨论】:

    标签: usb data-transfer qnx mqx


    【解决方案1】:

    如果您使用正确的传输模式,即使在最慢的规格 (1.1) 下,USB 也可以以高达 12MB/秒的速度传输数据。 USB 每秒将处理 1000 个“帧”。帧包含控制和数据信息,每个帧的不同部分用于不同的目的,因此总的信息内容在这些竞争要求中“多路复用”。

    低速设备将仅使用帧中的几个字节来发送或接收数据。例如调制解调器、鼠标、键盘等。所谓的全速设备(在 USB 1.1 中)可以通过使用等时模式传输实现高达 12 MB/秒的速度,这意味着它们会在每一帧中分割出一大块,并且每次帧出现时可以发送那么多数据(固定大小)。例如,这是音频设备用于将相对数据密集型音乐流式传输到 USB 扬声器的模式。

    如果您能够进行一点本地缓冲,则可以使用等时模式以 1 KHz 发送 64 字节数据,但需要 2 或 3 个周期(2.5KHz)的数据在 USB 帧传输中。您想要保留 64 x 3 = 192 字节的数据(可能还有一些额外的字节用于控制信息,例如存在多少块:2 还是 3?)。然后,随着 USB 帧的到来,您将 2 块或 3 块数据放到线路上,然后接收端将获取该数据,尽管以一种比仅以精确的 2.5KHz 速率平稳地更突发的方式.但是,这种传输数据的方式不仅可以跟上,即使是使用 USB 1.1,并且仍然只使用总可用 USB 带宽的一小部分。

    在我看来,问题在于您的系统设计是否可以容忍“突发”的数据传输速率……换句话说,不是以 2.5KHz 的速率获取 64 个字节,而是以 1 KHz 的速率获得(平均)160 个字节。你实际上会得到这样的东西:

    所以,我认为使用 USB 将是您能做的最好的事情 - 每 1 毫秒 USB 帧重复率获得 2 或 3 个设备数据包的突发传输。

    我不是 USB 方面的专家,但我已经完成了一些工作,包括调试使用 USB“中断”的设备到主机隧道协议,所以我在其他系统上看到了这种实现,以解决 USB 帧速率与设备数据速率匹配的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-24
      • 2017-04-13
      • 2022-01-04
      • 1970-01-01
      • 2010-09-05
      • 2012-09-25
      • 2015-05-28
      相关资源
      最近更新 更多