我作了一个数据采集系统,用的是CY的通用驱动程序。在主机应用程序里,我将每次读取的数据设置成32k,采出来的数据发现每块内(32k)的数据是完整的,可是块与块之间的数据发生了丢失的情况。这到底是什么原因了,请老大们体体意见!!!!
回复(19) 2004-11-21 18:33 来自版块 - USB驱动开发
表情
jinghuiren那应该不会出现你说的问题,我当初做的时候1M的实时传输都不会出现问题的,是不是你用得是1.1模式?如果是2.0是不会出现的 告诉你一个简单的方法,降低你的采样率,这样就知道是不是主机方接受速度不够造成的数据丢失了(2004-11-30 09:35)
AllenZh我没有直接使用通用驱动(2004-11-28 22:55)
aqdy001AllenZh能提点建议吗(2004-11-24 16:33)
AllenZh10M/s ,不用外加RAM能实现吗? fimeware不是我做的,我只做了驱动,所以不知道他们加了内存没有,不过他告诉我有最大4k的buffer,但以前他使用时在两个包之间有丢数据,使用我的驱动后就OK了(2004-11-24 15:08)
AllenZh我用的是CY的通用驱动程序哑,难道这也有问题。 YES(2004-11-24 14:57)
shen_5100010M/s ,不用外加RAM能实现吗?(2004-11-24 14:50)
aqdy001我用的是CY的通用驱动程序哑,难道这也有问题。(2004-11-24 14:45)
AllenZh因为你设备端写数据的速率太快了,应该至少大于1MB/s,你可以尝试把速率降到1MB/s以下,这样用就不会丢失数据了,或者将双缓冲改成四缓冲,这样也许能好一点。 根本原因:主机每次发送一个URB需要0.2ms左右的时间,也就是说两个URB之间会有一个0.1ms以上的时间间隙,...(2004-11-24 14:29)
aqdy001多谢jinghuiren。我的采样率只有40k,没有你说的那么快。我觉的根本原因就象你说的那样,但不知道怎么把驱动改成异步io模式。(2004-11-24 12:37)
jinghuiren因为你设备端写数据的速率太快了,应该至少大于1MB/s,你可以尝试把速率降到1MB/s以下,这样用就不会丢失数据了,或者将双缓冲改成四缓冲,这样也许能好一点。 根本原因:主机每次发送一个URB需要0.2ms左右的时间,也就是说两个URB之间会有一个0.1ms以上的时间间隙,...(2004-11-24 12:06)

返回顶部