关于STM32 USB BULK传输的速率

[复制链接]
17629|35
手机看帖
扫描二维码
随时随地手机跟帖
vigia|  楼主 | 2012-5-10 10:19 | 显示全部楼层 |阅读模式
本帖最后由 vigia 于 2012-5-11 10:17 编辑

最近一直看到有人在讨论STM32 USB BULK传输的速率
都说比较慢,只有几百K,今天有空测了一下,发现不慢么,全速设备大数据量传输的时候4Mbps基本可以保证的

我用的是ST官方的VCP代码,稍微改了下,就是收到OUT数据以后立即通过IN回传给PC。测试软件是网上随便下的一个串口调试助手
vigia|  楼主 | 2012-5-10 10:27 | 显示全部楼层
无图无真相
下图是USB分析仪截取的数据

一次发送500字节

tmp1.gif

使用特权

评论回复
vigia|  楼主 | 2012-5-10 10:29 | 显示全部楼层
下面是测算的传输时间和速率
tmp2.gif

使用特权

评论回复
vigia|  楼主 | 2012-5-10 10:33 | 显示全部楼层
本帖最后由 vigia 于 2012-5-11 10:09 编辑

可以看到从第一个包286398开始传输数据,到最后一个包286452,500个字节传完,一共用了0.927毫秒

不算协议开销,纯USB传输速率如上图所算,达到8.217Mbps,算上协议开销,0.927毫秒传输500字节,达到4.31Mbps。

传的数据量越大,协议开销所占的比重就越小,传输速率就能更高一点。

使用特权

评论回复
zhiyonghe| | 2012-5-10 10:48 | 显示全部楼层
用 Virtual_COM_Port 改的程序 一次500字节的传这个速度是能做到的

关键是很多新人都是半桶水,像我甚至连USB协议都不懂就开始胡干了,而且也没有像楼主这样的专业分析工具 ……

想问一下楼主,你用的串口调试助手在这么大的速度下能看见你传输的数据?

我做的实验基本串口调试助手在几十K的时候能显示,速度一提高基本就瘫痪了,没有显示

使用特权

评论回复
vigia|  楼主 | 2012-5-10 10:52 | 显示全部楼层
不能,,,汗

我用到现在最好的是HyperTerminal,从来不丢数,其他串口工具在大数据量传输下,数据丢的很多的,100K的数据能丢2,3百字节。

可惜刚换了WIN7系统,竟然找不到HyperTerminal了,只好网上随便找了一个,用起来也很不稳定啊

使用特权

评论回复
香水城| | 2012-5-10 13:34 | 显示全部楼层
本帖最后由 香水城 于 2012-5-11 17:10 编辑
用 Virtual_COM_Port 改的程序 一次500字节的传这个速度是能做到的

关键是很多新人都是半桶水,像我甚至连USB协议都不懂就开始胡干了,而且也没有像楼主这样的专业分析工具 ……

想问一下楼主,你用的串口调试助手在这么大的速度下能看见你传输的数据?

我做的实验基本串口调试助手在几十K的时候能显示,速度一提高基本就瘫痪了,没有显示
zhiyonghe 发表于 2012-5-10 10:48


看不见,不等于不存在;显示乱了,不等于数据出错;那是因为你的观察手段、观察工具有问题。

这就是“工欲善其事,必先利其器”的道理,想要真正做好产品,首先需要有好的仪器设备作为基础。

使用特权

评论回复
zhiyonghe| | 2012-5-10 14:00 | 显示全部楼层
数据存在这个我懂的……

只是想知道有没有更好的草根工具有助于菜鸟玩:)

使用特权

评论回复
anwar| | 2012-5-10 16:52 | 显示全部楼层
good!

使用特权

评论回复
icecut| | 2012-5-11 00:12 | 显示全部楼层
**啊....
lz的科研精神让我不得不骂人了....

连大B和小b都分不清就胡写....
图是对的.但是你说的是错的...

12Mb/s的usb最多传输多少我还能没数?

你的mps才64,太小了...

图说明:最大传输1MB/S....但是你如果看host给其他ep保留多少带宽?20%....
不要迷信仪器的报表.好好分析协议的设计去吧...

使用特权

评论回复
icecut| | 2012-5-11 00:13 | 显示全部楼层
不算协议开销,纯USB传输速率如上图所算,达到8.217MB/S,算上协议开销,0.927毫秒传输500字节,达到4.31MB/S。

===========================================================
把B改成b,别人说的每秒500kB/s一点都没错

使用特权

评论回复
icecut| | 2012-5-11 00:14 | 显示全部楼层
还tmd精华....
===================
我还是截图.保存证据

使用特权

评论回复
lpf336| | 2012-5-11 06:29 | 显示全部楼层
呵呵

使用特权

评论回复
bd7qwmcu| | 2012-5-11 09:23 | 显示全部楼层
又涨知识了

使用特权

评论回复
芯片代理| | 2012-5-11 09:42 | 显示全部楼层
icecut的专业解释可以加酷

使用特权

评论回复
vigia|  楼主 | 2012-5-11 10:06 | 显示全部楼层
还tmd精华....
===================
我还是截图.保存证据
icecut 发表于 2012-5-11 00:14

呵呵,你说的对,我确实没留意B和b的区别,我的原意是BIT,不是BYTE,打大写的B完全是因为输入法切换大写英文比较方便,没注意到原来BYTE也是B。

道歉道歉,我去改原文。


不过B是字节,b是比特,有出处吗?

使用特权

评论回复
vigia|  楼主 | 2012-5-11 10:15 | 显示全部楼层
本帖最后由 vigia 于 2012-5-11 10:20 编辑

另外,你说64字节的MPS太小了,有误导嫌疑哦,USB协议规定全速设备的BULK传输,每个包的最大传输字节为8,16,32和64, 高速设备的BULK传输每个包的最大传输字节为512。主机可以不支持最大数据包长度大于或小于这些规定的数据包。
协议截图如下:
tm3.gif

使用特权

评论回复
dayplover| | 2012-5-11 10:55 | 显示全部楼层
mark

使用特权

评论回复
icecut| | 2012-5-11 11:10 | 显示全部楼层
64没办法...谁让是全速呢...慢就是慢用stm无关...
关键是FS都慢............都慢................都慢..........

使用特权

评论回复
yaoohui| | 2012-5-15 09:08 | 显示全部楼层
2# vigia
请问你用的什么型号的分析仪?大概要多少钱?

使用特权

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

本版积分规则

19

主题

652

帖子

7

粉丝