zhangjw
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2002-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2703回复:8

急!!!关于USB采集时数据丢失问题

楼主#
更多 发布于:2002-11-14 09:11
本单位开发了多路语音信号采集系统,用AN2131作client端主控,通过一个2KB的双口RAM与采集芯片ADuc8XXX连接,向主机通过一个帧长为0x110的ISO口传送,其中256个有效数据,其他用于速率匹配,一般情况下采集帧长,但是当采集时进行其他操作就会严重丢失数据,
host端用一个线程读取数据,用cypress提供的驱动程序,用启动ISO传输;读取ISO不buffer 关闭ISO传输的方式取数。
这个问题快使我失业了,也是我对USB丧失了信心,各位救我。

最新喜欢:

abei11abei11
软件人员的生命力就是创新
xjLegend
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-14 09:39
ISO方式本来就不保证数据的可靠传输,另外请注意USB传输与采集的时间冲突关系。
我想要点分,这样才有成就感嘛!
SDK
SDK
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-14 10:23
Hi老兄:
   你何苦要用ISO传输呢,不妨采用Bluk传输试一试,速度定能跟得上。
zhangjw
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2002-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-14 12:09
我们测试表明,从C51发送的每个包都是正确的,给人的感觉是由于双口RAM数据被冲掉引起的,好像主机不能按时每1ms访问一次引起的,看其资料应该驱动程序在底层维持一个双缓冲,我不知道是不是真的有,如果有底层应该能保证1ms的访问时间。改成bulk好像也有类似现象。很是郁闷。
软件人员的生命力就是创新
xjtanh
驱动牛犊
驱动牛犊
  • 注册日期2002-08-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-14 17:10
可能是你的应用程序有点问题,你可以试试多线程看看
laicq
驱动中牛
驱动中牛
  • 注册日期2002-10-04
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-14 17:37
通常ISO的正确性还是很高的,问题是你的数据量和你的程序的问题。
[img]http://www.warchina.com/image/zj1.gif[/img] Good good study,day day up!
xjLegend
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-14 17:44

ISO只保证时间,数据量恒定倒是需要采用ISO,若有突发则不行。
一次ISO通信收到的数据量可有可无,要看程序怎么匹配啦!

[编辑 -  11/14/02 by  xjLegend]
我想要点分,这样才有成就感嘛!
zhangjw
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2002-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-15 12:10
我开发的是多线程的,给我的感觉是主机不是每ms访问一次,有很长时间不访问的现象,我觉得我有问题,但我不知道问题在那儿。
软件人员的生命力就是创新
laicq
驱动中牛
驱动中牛
  • 注册日期2002-10-04
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-15 14:22
哎,怎么PM发不出来,直接说算了 :D
应该是你的程序问题,一般来说,上面的线程开多了是有一定的问题,但是这也跟你分配的缓冲区有关系。你可以看看开发包下面的ISOSTREAM例子!相信会有帮助! :D
[img]http://www.warchina.com/image/zj1.gif[/img] Good good study,day day up!
游客

返回顶部