这样的数据通讯需求USB2.0是否能够满足?

[复制链接]
 楼主| tubie 发表于 2008-2-2 09:50 | 显示全部楼层 |阅读模式
一个设备,底层在做数据采集,需要每隔15ms将先前采集到的12k字节的数据块传送给上位PC机。(以上15ms不要求精确,误差几个ms都没有问题。)请问用带USB2.0接口的ARM来做数据传输是否可以实现上述功能?(主要是考虑USB2.0和PC通讯是否能实现上述功能,有什么需要注意的问题),谢谢!<br />&nbsp;<br />
平常人 发表于 2008-2-2 10:03 | 显示全部楼层

USB2.0全速接口刚好,高速接口富裕

800KB/s——使用USB2.0全速接口正好满足需要。
 楼主| tubie 发表于 2008-2-2 10:08 | 显示全部楼层

请问你说的全速模式的英文是什么?

另外,对USB协议不懂,不知道在全速模式下这个东西传输是不是每次都需要建立连接?还是建立连接后就可以随时想传就传了?<br /><br />全速模式的800kB/s是怎么计算出来的?谢谢!
平常人 发表于 2008-2-2 10:12 | 显示全部楼层

Full speed

“需要每隔15ms将先前采集到的12k字节的数据块传送给上位PC机”<br />——每15ms传送12K,则每秒800K,这是你自己的数据率。<br /><br />USB只须在接入时建立连接,以后会一直保持连接状态。
 楼主| tubie 发表于 2008-2-2 10:27 | 显示全部楼层

可能是我没有表达清楚

我的意思是您提到的“800KB/s——使用USB2.0全速接口正好满足需要”,是不是说根据协议USB2.0的全速模式的速度就是800kB/s?
平常人 发表于 2008-2-2 10:29 | 显示全部楼层

USB2.0规定了三种速度,但很多商家为了忽悠人都不提设备的

时钟频率为:<br />——高速&nbsp;480Mbps&nbsp;&nbsp;&nbsp;High&nbsp;speed<br />——全速&nbsp;12Mbps&nbsp;&nbsp;&nbsp;&nbsp;Full&nbsp;speed<br />——低速&nbsp;1.5Mbps&nbsp;&nbsp;&nbsp;Low&nbsp;speed<br /><br />很多商家为了忽悠人,只说他的设备是USB2.0的,让人们误以为是高速设备,其实是<u>全速设备</u>;所以真正的高速设备都会说“USB2.0高速”,只说USB2.0的基本都是<u>全速设备</u>而已。<br /><br />大家一定要小心,多个心眼!!
 楼主| tubie 发表于 2008-2-2 10:46 | 显示全部楼层

还是有问题,关于实际的传输速度

全速模式的12Mbps是瞬时的最大速度吧,在实际的应用中,考虑到数据包的头尾或者其他控制位的需要,留给有效用户数据的速度实际能有多少?<br /><br />另外,12kB的数据能放在一帧(如果有这个概念的话)传到PC吗?每隔15ms的传输有额外的开销需求吗?例如是否需要建立连接等。
nj手术刀 发表于 2008-2-2 12:23 | 显示全部楼层

我认为实际条件下高速能勉强满足要求

记住WIN不是实时系统,不能保证每15ms内都给你发个多个IN令牌让你把数据全送上,全速的USB根本不能完成你的任务
drentsi 发表于 2008-2-2 12:34 | 显示全部楼层

我实验的USB全速可以达到1.1MB/S

理论上每毫秒可传输19个64字节的包.<br />极限是1216KB/S
 楼主| tubie 发表于 2008-2-2 20:58 | 显示全部楼层

为什么数据包只能是64字节而不能再大一些呢?

  
平常人 发表于 2008-2-2 21:28 | 显示全部楼层

10楼的问题显然是因为没有看USB协议

估计8楼没有真正在Windows系统下做过USB传输设备,通常一个全速的U盘可以轻易达到1MB/s的速率。<br /><br />9楼的“极限是1216KB/S”只是一个理论值,实际应用中不可能达到,但你的1.1MB/s是一个可以相信的数值。
 楼主| tubie 发表于 2008-2-2 22:00 | 显示全部楼层

看来我还是需要好好读读USB协议。

  
nj手术刀 发表于 2008-2-3 11:48 | 显示全部楼层

不同意11楼看法,数据采集关注实时性

必须在确定时间段内把数据传出,U盘能传,可是不关心传的实时,比如有100ms没传任何数据,另100ms传100KB数据,平均50KB,但数据采集如果没大的FIFO,没法用的
nj手术刀 发表于 2008-2-3 12:17 | 显示全部楼层

再与11楼说

如果一个USB采集器说能达到1MSPS,假如我是客户,我认为这指标在任何条件下都保证,现在我让它在WIN下工作,并且同时启动一个程序,比如MATLAB,显然WIN将不能保证USB带宽利用,采集数据不连贯,所以我在客户角度上说,你的产品吹牛了,所以我说WIN没法用(指保证)USB全速方式做到15ms&nbsp;&nbsp;12KB
平常人 发表于 2008-2-4 14:11 | 显示全部楼层

同意nj手术刀的观点,但如果引入实时性的概念,USB本身就不

当然如果设备端可以有足够大的缓存空间,则使用USB高速可以解决问题;否则没有办法。<br /><br />USB高速解决不了缓冲的问题,但可以在短时间内清除缓存。<br /><br />缓存的大小取决于USB设备最长不能得到相应的时间;例如,USB设备最长不能得到相应的时间为5秒,则缓存的大小至少为:<br />&nbsp;&nbsp;(5秒&nbsp;x&nbsp;800KB&nbsp;=&nbsp;4000KB)+&nbsp;传输这个4000KB所采集的数据量&nbsp;≈&nbsp;4.4MB
mr.king 发表于 2008-2-4 21:35 | 显示全部楼层

看相关论坛发言

http://www.daxia.com/bibis/moredata.asp?syid=1250684
nj手术刀 发表于 2008-2-5 11:19 | 显示全部楼层

非常反对11楼说的"估计8楼没..

有真正在Windows系统下做过USB传输设备,通常一个全速的U盘可以轻易达到1MB/s的速率&quot;大虾网那个关于USB的贴就是我的,我有USB2.0高速/全速传送的第一手测试数据,可以说本来全速是能传楼主数据的,但楼主要求每15ms都保证传他没说传多少时间,WIN下是没发给他提供保证,所以我说要高速模式,全速不行,当然我可以短时间演示出全速传的效果15ms/12KB,但如果是产品,我不能说我保证800KB/S
平常人 发表于 2008-2-5 12:01 | 显示全部楼层

看样子我估计错了

但你也不必有这么大的反应嘛,估计总是有对有错的,呵呵。。。。。<br /><br />我在15楼说得很清楚了,如果你要强调实时性,USB本身就不适合!
 楼主| tubie 发表于 2008-2-5 23:09 | 显示全部楼层

我可能没有讲清除需求

实际不需要太大的实时性,传输时间没有太严格的限定,不用非要准确地在每个15ms传出数据,可以在(例如)第20ms、第42ms分别传输两次(时间的准确性要求不搞),可以有大概100ms的数据缓存,但不能太大了。<br /><br />目前正在读协议,还没有看到为什么要64字节一个块来传输,希望能找到更大的块,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

428

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部