打印

STM32使用虚拟串口通过USB向PC发送数据,怎样提高速度

[复制链接]
6160|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
令狐老爷们|  楼主 | 2013-11-1 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,我最近在研究STM32 F107 的USB 虚拟串口程序。用的是官方的例程,然后自己稍微修改了一点。我的目的是通过USB向上位机PC发送数据,要求数据传输速度至少是400K字节/秒(网上有很多人回复说USB虚拟串口传输速度可以达到600K字节/秒)。但是我看例程里面,主机每隔1ms就会查询端点的中断,也就是说,我满打满算,每秒能够传输1000次,每次最多传输64KB(这是由端点缓冲区决定的)。即最终我的程序最大传输速度只有64KB/S,这是远远达不到我的要求的。不知道网上别人说的600KB/S的传输速度是怎么来的?不知道诸位大神谁有弄过usb虚拟串口,目前我最大的问题就不知道能否满足我要求的传输速度,USB虚拟串口到底可不可行。跪求诸位大神指教,谢谢!
沙发
zzwj5120| | 2013-11-1 15:49 | 只看该作者
我也觉得超过64KKB可能性比较小,那些声称很大的人的测试,都是哗众取宠,没见有完整源码。

使用特权

评论回复
板凳
玄德| | 2013-11-1 16:38 | 只看该作者
印象里,1ms查询一次是HID方式,虚拟串口也是这样吗?

如果也是,是否可以把时间缩短?

期待。

使用特权

评论回复
地板
s_f_tan| | 2013-11-4 09:16 | 只看该作者
全速bulk传输时,理论上1帧最多传输19个64B的包,但是受总线调度影响,达不到这么高的负载率,640KBs的速率应该还是可以达到的

使用特权

评论回复
5
s_f_tan| | 2013-11-4 09:17 | 只看该作者
有的东西先要规范先看一遍,确定理论上可不可行再动手

使用特权

评论回复
6
ty51| | 2013-11-7 08:47 | 只看该作者
bulk方式下可以达到600k,我的产品已经使用2年了,一直稳定。如果用32f207,有时能够达到1M.但是操作系统要在系统空闲的时候才可以达到1M.很多时候操作系统不允许。不过降到600K的速度,操作系统能够保证的。

使用特权

评论回复
7
ty51| | 2013-11-7 08:52 | 只看该作者
主机每隔1ms就会查询端点的中断...
适当处理后,间隔可以降到100uS一下。

使用特权

评论回复
8
mcuatmel| | 2014-4-10 09:39 | 只看该作者
请问楼上,怎么处理可以提升速度?100us怎么改?

使用特权

评论回复
9
yang4469| | 2014-6-18 14:47 | 只看该作者
USB2.0理论上有12M,但是会有协议消耗,一般700-800k木有问题
采用bulk传输,每包64字节
官网的虚拟串口有一个FrameCount 的计数,去掉就能提高速度,不然if (FrameCount++ == CDC_IN_FRAME_INTERVAL)影响速度

使用特权

评论回复
10
libingqing| | 2015-12-25 19:03 | 只看该作者
这个帖子还有从么,可以讨论么,现在在做这个,感觉速度真的不会很快呢

使用特权

评论回复
11
huangqi412| | 2015-12-25 22:34 | 只看该作者
libingqing 发表于 2015-12-25 19:03
这个帖子还有从么,可以讨论么,现在在做这个,感觉速度真的不会很快呢

上面已经讨论很清楚了

使用特权

评论回复
12
yiyigirl2014| | 2015-12-25 23:15 | 只看该作者
提高速率的方法就是提高波特率,前提是时钟要精确才行。

使用特权

评论回复
13
libingqing| | 2015-12-27 15:17 | 只看该作者
跟波特率没有多大的关系吧,在串口调试助手中波特率不一致也没有什么关系、但是RS232不行,如果波特率不一致,就会发乱码

使用特权

评论回复
14
BurgessKzg| | 2017-8-3 10:21 | 只看该作者
还有人在跟这个帖子吗?我最近刚好做的也是STM332F107VCT6的虚拟串口,抑制完之后,出现一些问题,陆续决解之后本以为可以用了,但是现在又遇到一个丢包的问题。刚开始还遇到一个问题,就是发送的缓存是2048,当我一次也发送2048的时候,总是不成功,小于2048(2040)就基本上每次都能传送了,但是又遇到刚才说的,丢包的字节,比如说,我每次都传2040,但是传10来次的中,总有一两包对丢许多字节,这个丢包没有什么规律,不知道大家遇到过没有。波特率我设置的范围:1200-921600都测试过,基本上没啥问题。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝