0

I am trying to transfer data over USB. These are packets of at most 64 bytes which get sent at a frequency of 4KHz. This gives a bit rate of about 2Mb/s.

The software task that picks up this data runs at 2.5 KHz.

Ideally we never want packets to get there slower than 2.5 KHz (so 2 KHz isn't very good).

Is anyone aware of any generic limits on what USB can achieve?

We are running on a main board which has a 1.33 GHz running QNX and a daughter board which is a TWR K60F120M tower system running MQX.

Apart from the details of the system, is USB supposed to be used in this kind of data transfers, i.e., high frequency and short packet sizes?

Many Thanks for your help MG

4

1 回答 1

0

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

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

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

正如我所看到的,问题在于您的系统设计是否可以容忍“突发”的数据传输速率......换句话说,不是以 2.5KHz 的速率获取 64 个字节,而是得到(在平均)160 字节,速率为 1 KHz。你实际上会得到这样的东西: USB 和设备数据重复率之间的对应关系

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

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

于 2015-05-16T14:43:48.043 回答