打印

关于自定义USB设备批量端点传输速率的疑惑

[复制链接]
5100|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pianfeng|  楼主 | 2010-9-15 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠好,
最近小弟在学习自定义USB设备的数据传输,固件程序、驱动程序以及上位机的应用程序都已经写好而且可以正常通信,我用的是nxp的ISP1362 OTG芯片,数据是能够按要求发送并返回了,但是,为什么我的批量输出端点发送速率一直都提不上去呢?

在拜读了alien2006大侠的“如何使STM32进行USB传输时提高传输速度?”帖子后,我也试着把驱动程序中的pipemaxtranfer参数修改了,但对传输速率影响不大哎。

现在做出来,若同时进行输入输出,数据传输速率上限大概也就200Kb/s
若只做输出,数据也就在200Kb/s大一点的样子,不知为何

同时,在固件程序中,我如果不把USB芯片缓冲区中的数据读出来,那么传输速率上限基本上为2000Kb/s,但是,既然是数据传输,我肯定需要把上位机发过来的数据取出去啊!

设备配置了一对中断输入输出端点(端点大小16Bytes)、一对批量输入输出端点(端点大小64Bytes)

现在有几点疑问,想请教各位大侠:
1、对于提高USB传输速率,有哪些需要注意的方面,比如写应用程序时,应该怎样往驱动程序发数据等等
2、为何我单向传输时的速率比双向传输速率并没有大多少,理论上不是要接近2倍的吗?
3、设备驱动程序对速率的影响大不大?

小弟初来乍到,还请各位大侠多多指点迷津,在此拜谢了!

相关帖子

沙发
pianfeng|  楼主 | 2010-9-15 09:24 | 只看该作者
呀,怎么要给20分呐,我自己的分都不足20呢。。。

使用特权

评论回复
板凳
pianfeng|  楼主 | 2010-9-15 09:39 | 只看该作者
另外,还有一个疑问,就是BUS HOUND软件上显示的端点的Max Transfer是不是就是驱动程序上指定的pipemaxtranfer呢?
存在疑惑的原因是BUS HOUND显示的值跟我驱动程序设定的不一致,但是如果驱动程序pipemaxtranfer有改动,BUS HOUND的Max Transfer也会变化,但值不一样

使用特权

评论回复
地板
TEDhou| | 2010-9-16 17:33 | 只看该作者
没看明白你的意思,至于那个端点的最大传输 应该是在firmware里面设置的

使用特权

评论回复
5
pianfeng|  楼主 | 2010-9-17 10:59 | 只看该作者
那个maxtransfersize我已经弄清楚了,是与驱动里边设置的一致的
现在我想请教的是BUS HOUND这个软件所计算出来的USB传输速率准不准确?因为我在应用程序里边自己也用程序算了个速率出来,要比BUS HOUND小不少,所以开始怀疑起这个软件计算速率的准确性。
今天BUS HOUND抓的BULK OUT速率居然达到了1.3MB/s,但我应用软件所计算出来的速率是1Mb/s左右,即使算上数据传输的PID、ADDR、CRC等也不会差这么多吧?
4# TEDhou

使用特权

评论回复
6
lwh1119| | 2011-3-14 12:35 | 只看该作者
请你们说的  pipemaxtranfer 这个参数,在哪里可以设置!没有找到和搞明白!

使用特权

评论回复
7
dqyubsh| | 2011-3-14 20:19 | 只看该作者
我建议看一下nxp自己的例子,用他的测试程序、他的测试环境,能做到多大速率。就像标称是USB2.0的设备,可能仅仅是12M的速率。

一般设备能用到速率上限的70%已经是最好了,比如CY的USB2.0芯片,他自己能测能到42M字节/s。42M×8/480M=70%。这是不含应用层协议、不含其它外设、不与其它芯片接口的情况下测得的最好速率,甚至主机要退出无关的软件。这仅能提供一个参考,没实际意义。

影响因素有很多。我的理解,一般速率做到带宽的20%是完全可能的,比如USB2.0外设,速率达到10M字节/s。

使用特权

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

本版积分规则

0

主题

6

帖子

1

粉丝