我正在尝试通过USB传输数据。这些是最多64字节的数据包,以4 4KHz的频率发送。这给出了大约2Mb/s的比特率。
获取此数据的软件任务以2.5 KHz的速度运行。
理想情况下,我们永远不希望数据包以低于2.5 KHz的速度到达那里(因此2 KHz不是很好)。
有没有人意识到USB可以实现的任何通用限制?
我们在一个主板上运行,主板上有一个运行QNX的1.33GHz和一个子板,子板是一个运行MQX的TWR K60F120M塔系统。
除了系统的细节之外,USB是否应该用于这种数据传输,即高频和短数据包大小?
非常感谢你的帮助,MG
发布于 2015-05-16 22:43:48
如果您使用正确的传输模式,即使在最慢的规格(1.1)下,USB也能以高达12MB/秒的速度传输数据。USB每秒将处理1000个“帧”。帧包含控制和数据信息,并且每个帧的各个部分用于各种目的,因此总的信息内容在这些相互竞争的需求中被“多路复用”。
低速设备将仅使用帧中的几个字节来发送或接收数据。例如调制解调器、鼠标、键盘等。所谓的全速设备(在USB1.1中)可以通过使用等时模式传输实现高达12MB/秒的传输,这意味着它们可以在每一帧中划分出很大的一块,并且可以在每次出现帧时发送那么多数据(固定大小)。例如,这是音频设备用于将相对数据密集型音乐流式传输到USB扬声器的模式。
如果您能够执行一点本地缓冲,则可以使用等时模式以1 KHz的速度发送64字节的数据,但在USB帧传输中需要2或3个周期(2.5 KHz)的数据。您可能希望保留64x3= 192字节的数据(外加一些额外的字节用于控制信息,比如存在多少块:2个还是3个?)。然后,随着USB帧的到来,您将2个或3个数据块放到线路上,然后接收端将获得该数据,尽管以一种比以精确的2.5 the速率平滑地更快的方式。然而,即使使用USB1.1,这种传输数据的方式也远远跟不上,并且仍然只使用总可用USB带宽的一小部分。
在我看来,问题在于您的系统设计是否能够容忍“突发”的数据传输速率……换句话说,不是以2.5 KHz的速率获取64个字节,而是以1 KHz的速率获取(平均) 160个字节。你实际上会得到类似这样的东西:

所以,我认为使用USB将是你能做的最好的事情--以每1 mSec USB帧的速率发送2到3个你的设备的数据包。
我不是USB专家,但我做过一些工作,包括调试一个使用USB“中断”的设备到主机隧道协议,所以我在其他系统上见过这种实现,以解决USB帧速率与设备数据速率匹配的问题。
https://stackoverflow.com/questions/24915612
复制相似问题