打印

usb传输速度慢,只有33,34KB/S

[复制链接]
3800|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxl6534|  楼主 | 2011-12-30 11:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用stm32做的下位机,实现和上位机的USB通信,但是发现速度只有33KB/S左右,并且下位机不做其他的操作在发送完成中断里设置端口valid。上位机应用程序也不停发送in令牌,这样速度也很慢,求教可能是啥问题呢,谢谢
沙发
yu0405jie| | 2011-12-30 13:36 | 只看该作者
这个是不是和每次发送的数量有关啊?你每次发送1024个数据试试呢?

使用特权

评论回复
板凳
zxl6534|  楼主 | 2011-12-30 13:42 | 只看该作者
但是stm32提供的usb缓存区只有512kb,而且st提供的例程都是64kb一个包发送的,速度问题应该不是出在这个地方

使用特权

评论回复
地板
香水城| | 2012-1-3 15:59 | 只看该作者
“在发送完成中断里设置端口valid”  你这个发送完成中断是什么?

使用特权

评论回复
5
zxl6534|  楼主 | 2012-1-5 14:28 | 只看该作者
就是USB端口的发送完成中断,在中断里直接置端口为VALID,将下位机等待时间减到最小

使用特权

评论回复
6
香水城| | 2012-1-5 14:46 | 只看该作者
上位机控制着数据传输的频次,如果上位机不发送Token,速度肯定上不去。

使用特权

评论回复
7
zxl6534|  楼主 | 2012-1-5 15:12 | 只看该作者
我用DEBUGVIEW这个软件检测发现我In Taken发送的频率1秒最多只有200多个,慢的时候每秒只有40、50个。我的环境是USB2.0,这样的发送频率导致下位机一个NAK都没有了,传输速度超级慢,只有34KB/S左右,在驱动里我也没有延时函数啊,什么频率会这么慢呢

使用特权

评论回复
8
香水城| | 2012-1-5 15:15 | 只看该作者
1)上位机的软件控制Token的发送的频率
2)如果是Interrupt端点,下位机描述符中给出了要求的In Token频率;除此之外,下位机不能左右Taken的频率

使用特权

评论回复
9
zxl6534|  楼主 | 2012-1-5 15:20 | 只看该作者
上位机是另一个工程师写的,现在怎么也找不出In Taken 频率慢的原因,传10多MB数据要等十几分钟,真是纠结啊

使用特权

评论回复
10
香水城| | 2012-1-5 15:46 | 只看该作者
上位机是另一个工程师写的,现在怎么也找不出In Taken 频率慢的原因,传10多MB数据要等十几分钟,真是纠结啊
zxl6534 发表于 2012-1-5 15:20


解铃还需系铃人,这个问题一定要找这个写上位机软件的人!

使用特权

评论回复
11
xsgy123| | 2012-1-5 22:12 | 只看该作者
找编软件的工程师问问

使用特权

评论回复
12
lxyppc| | 2012-1-6 10:07 | 只看该作者
10多MB的数据最好用Bulk来传
如果软件上没有瓶颈,用Bulk方式传输,STM32可以达到USB Full Speed的理论最大速度

使用特权

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

本版积分规则

1

主题

26

帖子

0

粉丝