硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3898|回复: 11
收起左侧

[有问必答] STM32F407 UART 和 CDC 虚拟USB 传输速度比较

[复制链接]

16

主题

43

回帖

91

积分

初级会员

积分
91
发表于 2024-5-13 18:01:25 | 显示全部楼层 |阅读模式
最近做一个STM32F407采集设备,需要向PC端上位机一次传输大量数据的案子,一次需要传输2048字节,为了提高传输速率,将串口波特率调到1,843,200,为了继续提高传输速率想到了以下两种
1、继续提高波特率(风险有点高,担心会崩溃)
2、想用USB CDC 虚拟USB ,全速USB 12Mbit
请问这两种的速率上限比较是USB 全速12Mbit >串口最高10Mbit(串口1),这样理解对吗?实际使用速度各能达到多少呢?
还别的提高速率的方案吗?








回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-5-14 09:00:41 | 显示全部楼层
参考我这两个,使用串口CDC BULK模式,但别用串口波特率方式修改了,影响性能。

3、USB应用实战视频教程第3期:手把手玩转USB BULK方式下位机和QT6.4上位机开发上篇(2022-10-24)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=116108

4、USB应用实战视频教程第4期:手把手玩转基于QT6.4的USB BULK上位机和下位机开发下篇(2022-11-07)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=116396
回复

使用道具 举报

4

主题

107

回帖

119

积分

初级会员

积分
119
发表于 2024-5-14 10:14:37 | 显示全部楼层
串口  很难找到速度这么高的USB转TTL的串口,USB  CDC 我这边测试大约500KByte/s的速率,还是很稳定
回复

使用道具 举报

5

主题

269

回帖

284

积分

高级会员

积分
284
发表于 2024-5-14 11:18:53 | 显示全部楼层
如果PC是台式机或者工控机的话,可以弄一个pcie转ttl的专用芯片,几十M的波特率都行,不过硬件成本会高些
直接用usb cdc的话就没啥硬件成本,就是软件复杂度相对来说更高
回复

使用道具 举报

16

主题

43

回帖

91

积分

初级会员

积分
91
 楼主| 发表于 2024-5-14 17:22:21 | 显示全部楼层
eric2013 发表于 2024-5-14 09:00
参考我这两个,使用串口CDC BULK模式,但别用串口波特率方式修改了,影响性能。

3、USB应用实战视频教程 ...

感谢
回复

使用道具 举报

16

主题

43

回帖

91

积分

初级会员

积分
91
 楼主| 发表于 2024-5-15 09:44:41 | 显示全部楼层
eric2013 发表于 2024-5-14 09:00
参考我这两个,使用串口CDC BULK模式,但别用串口波特率方式修改了,影响性能。

3、USB应用实战视频教程 ...

谢谢回答
回复

使用道具 举报

16

主题

43

回帖

91

积分

初级会员

积分
91
 楼主| 发表于 2024-5-15 09:44:54 | 显示全部楼层
heluo1985 发表于 2024-5-14 10:14
串口  很难找到速度这么高的USB转TTL的串口,USB  CDC 我这边测试大约500KByte/s的速率,还是很稳定

谢谢回答
回复

使用道具 举报

16

主题

43

回帖

91

积分

初级会员

积分
91
 楼主| 发表于 2024-5-15 09:47:21 | 显示全部楼层
DX3906 发表于 2024-5-14 11:18
如果PC是台式机或者工控机的话,可以弄一个pcie转ttl的专用芯片,几十M的波特率都行,不过硬件成本会高些
...

我目前就是用了一个高速版的USB 转ttl芯片 但是觉得风险太高,提高到1843200了
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-7-24 22:10:42 来自手机 | 显示全部楼层
FT232H,10Mbps实际测试是没问题的。普通版本的FT232 最高3Mbps。
回复

使用道具 举报

0

主题

49

回帖

49

积分

初级会员

积分
49
发表于 2025-7-25 14:38:59 | 显示全部楼层
全速USB 12Mbps,实际传输文件是 5、6Mbps 的速度
串口10Mbps 的话,抛除启始和停止位的开销(8N1 格式),实际传输速度是 80% 也就是 8Mbps
所以说,10Mbps 的串口是比 12Mbps 的全速USB快一些的

可以考虑使用带高速usb 的mcu芯片,譬如 at32f405, 4x4mm 的小封装

很方便用来做高速串口转接器,且有可配置 polynomial 的硬件 crc(另一家带高速 usb 的 risc v 的就没有)。

测速:
6787550 字节的文件,拆分成 27043 个包,每个包协议开销占 3 字节 cdbus 头 + 2 字节 crc 结尾 + 2 字节文件传输头,每个包含有 251 字节有效文件数据。

电脑 c 语言测试传输以上数据给 at32(通过 CDC 虚拟串口):
纯 usb 传输是:1530 ms 左右,无论是否进行 crc 检验,数据不转发至 spi 和 485

通过 spi 和 485 传输到总线:
2607 ms @ 2Mbps & 30Mbps 仲裁模式
1683 ms @ 2Mbps & 50Mbps 仲裁模式
1645 ms @ 50Mbps BS 单速率模式


之前 stm32 测试 USB FS 传输时间则为 10752 ms

可以纯 usb cdc 通讯,直接在 at32 跑用户代码,也可以当作一个单独的高速usb转高速串口使用,串口速率最高 50 Mbps

项目源码:
https://github.com/dukelec/cdbus_bridge

回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-7-29 10:55:18 | 显示全部楼层
dukelec 发表于 2025-7-25 14:38
全速USB 12Mbps,实际传输文件是 5、6Mbps 的速度
串口10Mbps 的话,抛除启始和停止位的开销(8N1 格式) ...

看起来不错,里面那个配置工具是定制的还是行业通用工具
回复

使用道具 举报

0

主题

49

回帖

49

积分

初级会员

积分
49
发表于 2025-7-29 13:38:59 | 显示全部楼层
alexzhang 发表于 2025-7-29 10:55
看起来不错,里面那个配置工具是定制的还是行业通用工具

自己写的开源跨平台的工具(CDBUS GUI),也是比较通用的工具,我各种 mcu 项目都可以用它配置,只需要 mcu 使用这个简洁的串口协议就行:

「CDNET 协议简介及示范」
https://github.com/dukelec/cdnet/wiki/CDNET-%E5%8D%8F%E8%AE%AE%E7%AE%80%E4%BB%8B%E5%8F%8A%E7%A4%BA%E8%8C%83
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-11 20:56 , Processed in 0.042947 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表