USB传输质量有问题,谁来帮帮我啊,很急

我做了一个USB Video设备的驱动。
Video设备的画面是一个秒表。在PC机上时运行驱动能够正常显示,可在ARM板上运行就不正常了。

当我在PC机上运行时,数据的传输速度很快,也很均匀,每隔1秒会接收Video设备的秒表变动图像帧。在这一秒内传递的是上次时间的图像。

PC机上运行模式是:EHCI(High Speed)

当我在ARM板上运行时,每帧图像的数据传递速度是320ms左右,这样它应该是每传递两个上次时间图像帧,就传递变化的时间图像帧。可是实际上,设备每传递1个或每传递3,4个才将时间变化的图像帧传递过来。这样就导致Host端的1秒时间显示忽长忽短。

ARM上·运行模式是:EHCI(Full Speed)

·请问是不是Full Speed和 High Speed导致的这种状况啊,怎么从Full Speed调到
High Speed啊?

确定是USB传输的问题么?。。。

简单地画一个流程图,也许能帮忙分析。
假设,开始传输数据的时刻正好是某一秒的开始,记作0ms,这样按照每隔320ms传输一次数据来看,直到960ms为止,已经传输了3幅同样的图像帧。
那么,问题在于,第4幅是什么样的?应该还是同样的图像吧。因为第4幅开始传输的时候还是在同一秒。
(接下来的分析略。。。)

Full Speed和High Speed的转换的话,要看设备的设置。USB控制器芯片的描述符 HighSpeedConfigDscr 和 FullSpeedConfigDscr 针对两种不同速度。通常FullSpeedConfigDscr 是当作备用选项,即otherspeed。设备加载时根据设置选择其中之一。
以上是设备端的情况。
至于主机端,如果主机支持High Speed的话,加载时能够识别。如果要从主机端改变模式的话,好像要使用命令,重新选择描述符。至于用啥函数,很抱歉,我还不知道。。。

刚才查了一下,应该是usbd_select_config()和usbd_select_interface()这2个函数。不过我还没用过。。。

谢谢你的回答,可是我现在用的config只有1ge,Interface的可选设置也只有1个,所以上两个函数是起不了作用的