阅读:2093回复:9
usb的传输速率问题
请教各位行家,我做的DSP+9603 与PC机的通信(BULK传输方式),一测,MY GOD ,读写速才31KB/s 左右,我知道用1.1标准要到达1M几乎是不可能的,但这跑得为勉也太慢了一点吧。还不如用并串口。还谈什么 usb的优势--- 出了什么问题??我只接了一个usb设备,不应该存在总线忙的问题DSP那边的固件程序中的读写也没太多的冗余啊
|
|
最新喜欢:![]() |
沙发#
发布于:2002-08-05 20:46
这几位老兄所言即时
|
|
板凳#
发布于:2002-08-02 13:35
well done
|
|
地板#
发布于:2002-08-02 11:28
是这样的,因为我要进行大批量数据传送,而一个buffer是装不了的,我在应用程序中用了个循环,这些数据同时又要进行一些格式转换后,再写到指定文件中去(这种做法使应用程序很不优化,可以考虑其它方法解决,如采用线程的方法,另设计一个线程来进行数据处理及对文件的读写,这样才不至于影响传输速度)。
我前面说到的buffer都指的是驱动程序和应用程序中的buffer,这当然是在驱动程序和应用程序同时都要设置的,而wMaxPacketSize是在usb设备配置描述符中设置的,写在固件里。 现在我的wMaxPacketSize为64bytes 驱动及应用程序中的buffer为16K,速度可达200K左右 [编辑 - 8/2/02 by icnet] |
|
地下室#
发布于:2002-08-02 08:39
引用:当然,MCU的频率也不要太低了,还有总线太忙也会影响usb的bulk传输。还有应用程序的收发效率也会有些影响,如一边收,一边对数据进行转换,再写入别一文件中,这些很费时的
我想问问那你是咋样做的了。你一边收,一边对数据进行转换,再写入别一文件中 你是做在那里了?固件还是应用程序? 还有就是你说的BUFFER 的大小不受wMaxPacketSize所限制 请问你是咋样设置的了? |
|
5楼#
发布于:2002-08-01 13:42
我改了驱动程序中的接发buffer 现为4096bytes,现在速度有了很大的提高。有些想法,望对同路人有些参考,有纰漏,也请指正,大家一起提高。
这些天,本人发现影响bulk方式传输的速度的因素有: 1。固件程序的收发效率(含一些处理,如一边运算处理一边收发) 2。我采用的usbn9604采用bulk传输时,一次wMaxPacketSize为64bytes,要想更快,要采用DMA,不过这辋硬件电路会需一点改动。 所以尽量在一次rx1,tx1中用完64bytes。 3。驱动程序中的buffer可以适量地加大,这样应用程序中调一次readfile(),writefile()就可以收发更多的数,可以尽量避免频繁调度下层驱动(刚开始我的buffer只有64bytes,所以很慢,这个buffer的设定不受控制芯片的wMaxPacketSize所限制 4。当然,MCU的频率也不要太低了,还有总线太忙也会影响usb的bulk传输。还有应用程序的收发效率也会有些影响,如一边收,一边 对数据进行转换,再写入别一文件中,这些很费时的 |
|
6楼#
发布于:2002-08-01 10:29
先感谢huoxy
不过ReadFile()中的读buffer取得再大,一次只能接收64bytes啊 因为我采用的国半的usbn9604好像在bulk传输方式下一次wMaxPacketSize 为64bytes.可能要采用DMA方式才行。 |
|
7楼#
发布于:2002-08-01 09:17
1、应用程序的“读”缓冲区应该大一些,也就是说每次ReadFile不要少于1K字节,否则,频繁调用驱动会占用太多的时间。
2、如果对速度要求较高,可以尝试硬件DMA。 我的系统如下: MCU:MSP430,4M PDISUSBD12:BULK模式,没有使用硬件DMA。 PC机:C500,128M,Winxp, 可以达到160k/s. |
|
|
8楼#
发布于:2002-07-31 18:45
应与你DSP的速度和其读写操作的算法有关
|
|
|
9楼#
发布于:2002-07-31 11:26
跟应用程序也有关系,如果主机读操作的效率很低也会慢.
|
|