打印
[STM32F1]

全速USB开发如何提高传输速度?

[复制链接]
2065|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gongche|  楼主 | 2018-12-4 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我现在做的一个项目是使用1路全速USB传输实现3路USART(115200bps)、2路can(500kbps)与上位机的通讯。现在使用的协议是hid协议,传输速度可以达到64kB/s,USB协议速度有点慢,实现了3个USART(115200bps)与2路can(50kbps)与上位机的通讯,与我们的项目目标差距很大。这是工控板项目,需要保证数据稳定性,我想请教下,怎么配置USB才能满足项目需求;
沙发
stly| | 2018-12-4 15:59 | 只看该作者
115200X3/10=34560B
50kX2/8=12500B
加起来不到60KBytes/s的数据量,全速HID最快是64Kbyted
来得及

使用特权

评论回复
板凳
llljh| | 2018-12-4 16:03 | 只看该作者
BULK发长包。。。   标准的USB转串口工程就能满足你。

使用特权

评论回复
地板
dingy| | 2018-12-4 16:06 | 只看该作者
楼上没算双向,不过所有串口双向同时全速运行是极限情况不会出现,先可以按楼上毛估。

使用特权

评论回复
5
huanghuac| | 2018-12-4 16:09 | 只看该作者
采用BUCK缓冲上传模式,HID模式本来就慢的

使用特权

评论回复
6
pengf| | 2018-12-4 16:14 | 只看该作者

说得对,这样算的话算上双向的话就不够了
我又仔细想了想
全速USB的HID单端点带宽理论上限是64K
考虑收发会分别用一个端点,带宽也是够的

使用特权

评论回复
7
gongche|  楼主 | 2018-12-4 16:17 | 只看该作者
3路usart,2路can(50kbps)可以用hid协议实现,但是项目需求是支持3路usart,2路can(500kbps),单ep发送达不到

使用特权

评论回复
8
renyaq| | 2018-12-4 16:20 | 只看该作者
我也发现了,,,IN和OUT不同EP, 理论都可以按1MS&64BYTE并行,ST32的端点多,每个uart接口可以独占一个端点,不用做多路打包拆包。这样理论64K对每路都一样。  多接口HID复合设备,上下都简单方便。

使用特权

评论回复
9
supernan| | 2018-12-4 16:23 | 只看该作者
HID速度足够了,做成BULK得不偿失,又要装驱动,如果做单端点又要拆包打包,如果独占端点又跟HID一样搞。

使用特权

评论回复
10
gongche|  楼主 | 2018-12-4 16:26 | 只看该作者

是使用USB CDC类的虚拟串口协议吗,对USB转串口不了解
计算了下3个usart,2路can单向数据传输
115200X3/10=34560B
500kX2/8=125000B
加起来大约160KB/s。
我想问一下全速USB虚拟串口可以模拟多高的串口速率呢?

使用特权

评论回复
11
xxrs| | 2018-12-4 16:31 | 只看该作者
看后面回帖,,,还是HID清爽方便。

使用特权

评论回复
12
gongche|  楼主 | 2018-12-4 16:34 | 只看该作者
看到了。做了HID2个接口和3个接口实验,当设计为2个接口同时发送数据的时候,每个接口的发送速率为32KB/s,修改为3个接口同时发送数据的时候,每个接口的发送速率为21KB/s。从现象上看,速率是被接口平均分了

使用特权

评论回复
13
houcs| | 2018-12-4 16:37 | 只看该作者
额,好久没看过USB,细节搞不清了,可能HID是整个设备带宽64K? 这个可以再测试下。

使用特权

评论回复
14
liuzaiy| | 2018-12-4 16:40 | 只看该作者
单端点上面算了速度也够,打包拆包很麻烦。

使用特权

评论回复
15
yinxiangh| | 2018-12-4 16:43 | 只看该作者
你试试两个接口都定为2MS,5MS还被分么,

使用特权

评论回复
16
pangb| | 2018-12-4 16:47 | 只看该作者

全速USB总带宽900K byte/s左右
最快全双工串口可以到450K

使用特权

评论回复
17
gongche|  楼主 | 2018-12-4 16:51 | 只看该作者
2个接口轮询周期设置为2ms,接口1速率30KB/s,接口2速率为11KB/s,好像接口1读了3次数据,接口2才会读1次数据。多接口为什么会平分速率呢

使用特权

评论回复
18
chenjunt| | 2018-12-4 16:54 | 只看该作者

hid st的cubemx提供了一个定制版, 就是比普通hid多了bulk接口.你可以看看.
我记得是不用多加驱动的.

使用特权

评论回复
19
ousj| | 2018-12-4 16:57 | 只看该作者

纯粹hid是用于鼠标键盘这种,设计速度本来就慢.

使用特权

评论回复
20
zyf部长| | 2018-12-4 17:00 | 只看该作者
虚拟串口也可以,驱动嵌入式还算比较好.

使用特权

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

本版积分规则

768

主题

9410

帖子

2

粉丝