打印

CY7C68013A USB2.0读数问题求教

[复制链接]
933|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanglong_study|  楼主 | 2016-9-5 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
哪位大虾指教一下,在在上位机(PC)未知下位机有多少个数据的情况下,如何一次将下位机数据读取出来?
    本人在做一个采集系统,用USB芯片CY7C68013A,看到国外有类似产品,上位机约30ms读一次数,能一次将下位机在这30ms内积累的数据都读上来(在一个IN事务内完成),多的时候有1万多个数,这1万多个数可能是10001个,也可能是12273个,不是数据缓冲的整数倍,速度很快,瞬间速率大概66MB/s,不知道怎么实现的,有没有大虾知道,指点一下,谢谢了。
    另外,本人对VC++相对熟悉一些,想用VC++来实现上位机读数程序,底层USB芯片前端是FPGA,FPGA仿真过,30ms内准备大量数据没有问题。

相关帖子

沙发
zhanglong_study|  楼主 | 2016-9-6 12:04 | 只看该作者
nethopper 发表于 2016-9-5 17:56
66M位/s吧,66M字节/s的话都超过USB2.0的速度了。数据长度不是缓冲字节数的整数倍的话,下位机可用PKTEND强 ...

你好,先谢谢你的热心回复。另外还有一些疑问,麻烦指教一下。你说的PKTEND强制传送是针对一个FIFO的还是针对一次IN事务的?如果是针对一个FIFO的话(FIFO不满时强制传送),本人做的是数据采集系统,希望系统的采集频率由下位机硬件保证,要求数据传输通路没有阻塞,实现实时采集的效果,而上位机取数据的频率是固定的,每30ms取一次(不希望占用太多上位机系统资源),想法是下位机有一个大的缓冲,上位机没有取数的30ms间隙是下位机也一直在采集,只是没有上传,上位机取数时是一次将这30ms间隙所积累的数据读上去,由于上位机定时并不精确(下位机在以稳定的频率采集),导致每次实际读的数个数有差异,也就是说,上位机在读数时,由于本身的定时不精确,导致下位机的大缓存里的数据时多时少,上位机在每一次读数时是不知道下位机攒了多少个数的,你说的上位机接收数据时,指定要接受的字节数有点困难,不知道我的理解有没有误。如果我的理解没有错误,那么有没有别的方法,能让我从上位机的角度看,每次读数时,下位机有多少个数读多少个数,一次读上来?

使用特权

评论回复
板凳
nethopper| | 2016-9-6 22:37 | 只看该作者
30ms的间隔内要采集多少个数据点,上下位机都应该预先知道,这样才好握手。这种采集只保证每次采集的数据段内的数据是连续的,不保证各次采集的数据段之间是连续的。

使用特权

评论回复
地板
zhanglong_study|  楼主 | 2016-9-7 11:28 | 只看该作者
nethopper 发表于 2016-9-6 22:37
30ms的间隔内要采集多少个数据点,上下位机都应该预先知道,这样才好握手。这种采集只保证每次采集的数据段 ...

你好,这个问题我的理解,如果在数据传输过程中,保证数据不溢出,由于那么上位机就能将这些采集到的数据拼接起来,从而保证数据在整个采集有效期内都是连续的。现在的问题是,怎么保证数据不会溢出?

使用特权

评论回复
5
nethopper| | 2016-9-7 20:52 | 只看该作者
zhanglong_study 发表于 2016-9-7 11:28
你好,这个问题我的理解,如果在数据传输过程中,保证数据不溢出,由于那么上位机就能将这些采集到的数据 ...

比如说每30ms, 下位机采集到10000个字节,存放于缓冲区内(当然下位机要有这样打的一个缓冲空间),上位机每30ms,获取这10000个字节,就不多不少正好了。不清楚你说的溢出时指什么。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝