aqdy001
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2005-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2711回复:19

cy7c68013数据丢失问题

楼主#
更多 发布于:2004-11-21 18:33
我作了一个数据采集系统,用的是CY的通用驱动程序。在主机应用程序里,我将每次读取的数据设置成32k,采出来的数据发现每块内(32k)的数据是完整的,可是块与块之间的数据发生了丢失的情况。这到底是什么原因了,请老大们体体意见!!!!

最新喜欢:

farorleefarorl...
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-21 20:54
你使用什么方式? iso方式也丢?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
king_dragon
驱动牛犊
驱动牛犊
  • 注册日期2004-03-17
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望44点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-22 10:54
我的项目中也有此问题,应该是同步IO的问题。
请问你采集的是实时数据吗?
aqdy001
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2005-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-22 13:41
我采的是实时数据,用的是bulk方式。楼上的能不能说详细点同步IO是怎么回事!!
shen_51000
驱动牛犊
驱动牛犊
  • 注册日期2004-10-12
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-22 19:25
bulk包可以这么大吗?
蓝蓝的天空上有一朵白云……
shen_51000
驱动牛犊
驱动牛犊
  • 注册日期2004-10-12
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-22 19:27
还有你是用的

手动还是AUTOIN
蓝蓝的天空上有一朵白云……
aqdy001
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2005-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-23 15:32
bulk包当然没有这么大,32k是主机每此读取的数据量,我用的是手动
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-23 16:49
bulk包当然没有这么大,32k是主机每此读取的数据量,我用的是手动

可能是单片机没反应过来,或者FIFO满。
好好学习,天天向上,做一个乖宝宝。
shen_51000
驱动牛犊
驱动牛犊
  • 注册日期2004-10-12
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-24 08:02
cy的缓存有这么大吗,你取32k,如果端口缓存只有4k或更少,你让他怎么反应呢?不知有理否
蓝蓝的天空上有一朵白云……
shen_51000
驱动牛犊
驱动牛犊
  • 注册日期2004-10-12
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-11-24 09:02
哦 你时手动的  应该分块了。
我用的autoin  后块把前块给覆盖掉了 取不出来。
蓝蓝的天空上有一朵白云……
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-11-24 12:06
因为你设备端写数据的速率太快了,应该至少大于1MB/s,你可以尝试把速率降到1MB/s以下,这样用就不会丢失数据了,或者将双缓冲改成四缓冲,这样也许能好一点。

根本原因:主机每次发送一个URB需要0.2ms左右的时间,也就是说两个URB之间会有一个0.1ms以上的时间间隙,如果在这个时间内设备端把端点(通常是双缓冲,也就是1024字节)填满了,那么接下下来的数据就会丢失了。当你设备方的传输速率大于1MB/s时,在这个间隙内两个端点都会被填满!

解决办法:
1,降低设备端写数据的速率,也就是降低实时性
2,改驱动,把驱动改成异步IO模式的,通常是用ReadFile/WriteFile来读写数据,这样就不会有丢失数据的现象了。

怎么样?我说明白了吗?
aqdy001
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2005-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-11-24 12:37
多谢jinghuiren。我的采样率只有40k,没有你说的那么快。我觉的根本原因就象你说的那样,但不知道怎么把驱动改成异步io模式。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-11-24 14:29
因为你设备端写数据的速率太快了,应该至少大于1MB/s,你可以尝试把速率降到1MB/s以下,这样用就不会丢失数据了,或者将双缓冲改成四缓冲,这样也许能好一点。

根本原因:主机每次发送一个URB需要0.2ms左右的时间,也就是说两个URB之间会有一个0.1ms以上的时间间隙,如果在这个时间内设备端把端点(通常是双缓冲,也就是1024字节)填满了,那么接下下来的数据就会丢失了。当你设备方的传输速率大于1MB/s时,在这个间隙内两个端点都会被填满!

解决办法:
1,降低设备端写数据的速率,也就是降低实时性
2,改驱动,把驱动改成异步IO模式的,通常是用ReadFile/WriteFile来读写数据,这样就不会有丢失数据的现象了。

怎么样?我说明白了吗?


老大,1MB/s太夸张了吧??
据说cy7c68013可以到20多M字节,最近做的一个数字电视的驱动项目也有10M字节/S的bulk传输不丢数据,肯定是你的驱动有问题。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
aqdy001
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2005-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-11-24 14:45
我用的是CY的通用驱动程序哑,难道这也有问题。
shen_51000
驱动牛犊
驱动牛犊
  • 注册日期2004-10-12
  • 最后登录2006-05-14
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-11-24 14:50
10M/s ,不用外加RAM能实现吗?
蓝蓝的天空上有一朵白云……
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-11-24 14:57
我用的是CY的通用驱动程序哑,难道这也有问题。

YES
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-11-24 15:08
10M/s ,不用外加RAM能实现吗?

fimeware不是我做的,我只做了驱动,所以不知道他们加了内存没有,不过他告诉我有最大4k的buffer,但以前他使用时在两个包之间有丢数据,使用我的驱动后就OK了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
aqdy001
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2005-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-11-24 16:33
AllenZh能提点建议吗
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-11-28 22:55
我没有直接使用通用驱动
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-11-30 09:35
那应该不会出现你说的问题,我当初做的时候1M的实时传输都不会出现问题的,是不是你用得是1.1模式?如果是2.0是不会出现的
告诉你一个简单的方法,降低你的采样率,这样就知道是不是主机方接受速度不够造成的数据丢失了
游客

返回顶部