阅读:1676回复:6
USB传输速率问题???
不知道大家在开发完usb设备后实际的数据传输率可以到多大??
看了前几天游人抱怨用D12大概都只能到50k,有的大侠用arm做到了1M,速度相差甚大,不知道问题出现在那里?? 传输方式上,如果选用中断方式,系统以1ms时间间隔轮询,以D12的主端点为例,一笔事务传64Byte,那这样速度就限制在64KB/s .传输方式造成了速率瓶颈,不知道我这样理解是否正确?? 在硬件上用51+D12,在软件上有什么好的办法将数据传输率提高呢? 望各位论坛大佬、顶级会员不舍赐教!! |
|
沙发#
发布于:2004-07-19 20:32
在PC端加大每次读写的缓冲区 应该可以提高速度的,另外固件程序也要很好的配合才行。
|
|
|
板凳#
发布于:2004-07-20 16:08
阁下说的在PC侧,加大每次读写的缓冲区,是在驱动代码中设置的吗?
还是在应用程序的ReadFile()函数的参数中设置的。 另外,你说的固件要很好的配合,具体有什么要注意的???? |
|
地板#
发布于:2004-07-20 16:46
你说的64KBYTES/S不对,你可以查USB1.1协议,它的极限是1216KBYTES/S,因为一个TRANSACTION里最大可以有19个64bytes的frames数据,APP中加大buffer可能提高速度,提高FIRMWARE很重要。
|
|
|
地下室#
发布于:2004-07-20 18:36
我的应用程序是用DeviceIOcontrl函数先发送VENDOR_REQUEST命令到驱动程序,即发送64(只能为这个???)字节的setup包,然后用DeviceIOcontrl来发送bulk_in命令传输。每次我设置bulk的传输数据为4096,但是结果还是传输了64?请问怎么加大每次读写的缓冲区???
|
|
5楼#
发布于:2004-07-21 09:37
Interrup endpoint is worse than bulk endpoint for usb data throughput. If you want to get 1MB/s data throughput, please use bulk endpoint instead.
Another point is, increase MaximumTransferSize to 256*1024, or 512*1024, or higher value when driver configures usb interface. [编辑 - 7/21/04 by windrv] |
|
6楼#
发布于:2004-07-21 14:53
"increase MaximumTransferSize to 256*1024, or 512*1024" in
the application?? pc发一次in请求,usb接口芯片就传64Byte,产生一次中断。如果是中断传输,pc以1ms时间轮询,那最大速率就是64Byte/s,看样子要提高速率,只有减少pc的轮询时间间隔,用Bulk方式了?? |
|