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

关于用USB采集数据的问题求救!!

楼主#
更多 发布于:2002-06-23 14:38
急!!!
我用USB开发一块8路数据同时采集的数据采集卡,用ISO方是向主机传送数据。驱动用Cypress的驱动,主机端采集数据首先用
ISO_START 启动ISO传输
然后不断调用ISO_READ取回数据,
最后用ISO_STOP。可以正确采集。
但是在采集是如果我启动其它程序或切换应用程序
就会出现采集数据错误的现象。
我不知道是由于什么原因引起的,这个问题直接影响我们产品的推出,请各位大侠帮忙。
先谢了。

最新喜欢:

sunmaculasunmac...
软件人员的生命力就是创新
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-23 15:15
数据采集系统用iso传输好吗?还是用bulk
zhangjw
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2002-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-23 15:30
传输是用ISO方式传输,每毫秒传输一次,我自己还得进行速率匹配,本来我是用bulk方式传输的,EZ_USB可以用8个bulk传输每个bulk缓冲区是64字节,我用8KHz8路采样,每毫秒就采集一块bulk,这样留给host相应的时间就是8ms,这样不能抵抗系统调度的抖动。我看到用ISO方式传输时可以给驱动送一个较大的缓冲区,所以用ISO方式传输,但是还是不能经得起任务切换这样的系统调度,我很苦恼的。
软件人员的生命力就是创新
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-23 16:06
8路同时采样还是轮流采样?8位还是12位?
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-23 16:24
如果你的处理器资源补其它程序完全占用了,那么系统就没有时间来保存ISO的数据。如果ISO数据有一部分没有来得及读取,那到就会出来错误。
你可以试试这种方法。开一个进程专门来读取数据,然后把这个进程的优先级设高一点。
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
zhangjw
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2002-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-23 16:47
takaya兄说的方法我可以试试,但愿能成功。我先做一下。
软件人员的生命力就是创新
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-23 17:01
是用线程时os给你的时间多呢还是你直接用一个死循环读数给的多呢?是否采用线程不是最关键的地方。如果硬件不加缓存,无论如何你都不能保证正确的读写时序。
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-23 17:16
另外我还建议你不要用ezusb控制采样,它只负责传输,那么另加一个mcu控制采样,数据先进入缓存,再由ezusb读出,你所说的8ms问题可完全得到解决
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-23 17:29
加硬件缓存很麻烦呀。
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-23 18:35
呵呵,不要只怕更麻烦
zhangjw
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2002-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-24 03:46
可能sunki兄说得对,我在硬件加点缓存我想用bulk方式可以解决,那吗下一个问题,用bulk方式我怎吗解决host和slave 同步问题,因为应用中发现,如果不同步会有1/2的概率传输是错误的,即host从那个bulk先读的问题,如果不解决也会有问题,这个问题该如何解决?
软件人员的生命力就是创新
plasma
驱动小牛
驱动小牛
  • 注册日期2002-02-19
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-06-24 09:23
USB IN有一个缓存问题,即固件程序写入一个数据,应用程序需读两次,所以固件程序默认时写入0长度数据。
zhangjw
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2002-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-06-24 14:22
plasma兄:
“USB IN有一个缓存问题,即固件程序写入一个数据,应用程序需读两次,所以固件程序默认时写入0长度数据。”
我不太明白,请详细解释。
我想USB是个好东西,这些问题时我对其很泄气,但是我想一定有解决的方法,让我们大家想想。如果解决了这个问题,我会对它的兴趣大增。
我觉得ISO方式不会是因为外设慢的问题,定在驱动内部。
但是我不解,如果避开这种方式,我觉得也不好。
软件人员的生命力就是创新
游客

返回顶部