USB性能问题

时间:2014-07-23 16:09:43

标签: usb data-transfer qnx mqx

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

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

理想情况下,我们绝不希望数据包的速度低于2.5 KHz(因此2 KHz不是很好)。

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

我们正在运行QNX的1.33 GHz主板和运行MQX的TWR K60F120M塔式系统的子板上运行。

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

非常感谢您的帮助 MG

1 个答案:

答案 0 :(得分:0)

即使是最慢的规格(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个字节。你真的会得到这样的东西: Correspondence between USB and Device data rep rates

因此,我认为使用USB将是您能做的最好的事情 - 每1毫秒USB帧重复率,可以为设备的数据包中的2个或3个进行有点突发。

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