我正在尝试通过USB传输数据。这些是最多64字节的数据包,以4KHz的频率发送。这给出了大约2Mb / s的比特率。
获取此数据的软件任务以2.5 KHz运行。
理想情况下,我们绝不希望数据包的速度低于2.5 KHz(因此2 KHz不是很好)。
是否有人知道USB可以实现的任何通用限制?
我们正在运行QNX的1.33 GHz主板和运行MQX的TWR K60F120M塔式系统的子板上运行。
除了系统的细节之外,USB是否应该用于这种数据传输,即高频和短数据包大小?
非常感谢您的帮助 MG
答案 0 :(得分:0)
低速设备将仅使用帧中的几个字节来发送或接收其数据。例如调制解调器,鼠标,键盘等。所谓的全速设备(在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帧速率与设备数据速率匹配的问题。