zengmg
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2001回复:13

usb速度

楼主#
更多 发布于:2003-12-31 16:04
USB终于可以通讯了,但速度实在太慢 用BULK传输时 实时通讯太慢,谁能告知 一些 提速的意见或经验,小弟万分感谢
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-31 16:22
我用Bulk最快可以做到900KB/s,你的数据从哪里来?如果来自单片机那可能就是因为你的单片机不能提供足够的数据。
好好学习,天天向上,做一个乖宝宝。
ksnet
驱动牛犊
驱动牛犊
  • 注册日期2002-12-24
  • 最后登录2007-07-10
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-31 17:05
你的是900k byte /s or 900k bit /s ?
zengmg
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-31 17:29
我用dsp的,我只做下位机的驱动,速度应该没什么问题。我没做上位机程序,所有现在很郁闷,不知道是我的问题还是上位机的问题。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-01 13:09
用bulk已经是最快的传输方式了,如果你的速度很慢
那么有两种可能:
1,你的设备方的mcu速度太慢,或者数据产生的速度太慢
2,你用的不是bulk!
zengmg
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-01 13:42
jinghuiren

 发表于: 2004/1/1 - 13:09
用bulk已经是最快的传输方式了,如果你的速度很慢
那么有两种可能:
1,你的设备方的mcu速度太慢,或者数据产生的速度太慢
2,你用的不是bulk!

 
**********************************

谢谢你的回答,首先我在bushound上面的确是看到了64个字节一个数据包的传输,应该是BULK传输方式。 其次 我的设备方用的是DSP 240 速度应该没问题,产生速据的速度也改是在200us以内的。但是我的一个速据包传输出去 在BUSHOUND上却看到用了9ms, 我现在认为有可能是IN信号来的太慢了,导致 设备准备好了数据但没发出去。因为上位机的程序不是我编的,所有现在搞的我好苦恼,不知道是什么原因,你们遇到过这种情况吗

[编辑 -  1/1/04 by  zengmg]
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-01 14:21
呵呵,这样看速度是不太合适的,好一点的方法是要写上层软件的人写一个测试程序,不要一次只接收64字节,可以改的大一些,比如10k,这样软件损耗少一些,速度会相应提高。还有确认你用的不是int方式而是bulk,bulk和int的唯一区别就是int是每隔一定的时间请求一次数据,其它的和bulk一样。
zengmg
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-02 14:01
我的USB是用来实时采样的,每次(约500us)需要40个字节的数据,所有我对于一个IN信号就发送64个字节的包出去了。 你说的“不要一次只接收64字节,可以改的大一些,比如10k” 是指上位机的吧,我感觉是上位机的IN信号来得太慢了,导致整个传输变慢(我认为的,实在不懂上位机的,发誓下次一定要自己写,唉)。:D还有我用usbcheck看了我的描述表返回,它显示也是BULK传输方式,我想应该没错吧。  

[编辑 -  1/2/04 by  zengmg]
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-02 16:01
你的是900k byte /s or 900k bit /s ?


是900K Bytes/s

使用DMA方式,CPLD产生数据。
好好学习,天天向上,做一个乖宝宝。
zhongdao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-01-02 16:40
请教huoxy:
驱动程序怎么使用DMA方式?期待着你的回答,谢谢!
zengmg
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-01-04 09:22
顶一下
wt01yn
驱动牛犊
驱动牛犊
  • 注册日期2002-03-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-01-04 11:11
呵呵,我也用CPLD做了一个DMA控制器,速度一下子达到900K,包括协议的开销。

D12的DMA方式不是指驱动程序里面的,而是硬件如何工作。就是利用芯片提供的DMA引脚,控制读写。
zengmg
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-01-04 12:06
对于bulk方式呢,大家有什么好意见吗,
wt01yn
驱动牛犊
驱动牛犊
  • 注册日期2002-03-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-01-04 13:10
bulk是协议方面,DMA是硬件方面,这两者并不矛盾。

如果你的MCU是51系列,又想达到很高的速度,DMA搭配bulk是个很好的选择。
如果MCU是DSP等高速芯片,就可以直接按字节读取了。
游客

返回顶部