你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103C8T6的USB虚拟串口VCP最大速度能达到多少?

[复制链接]
zen2017 提问时间:2017-4-2 23:21 /
本帖最后由 zen2017 于 2017-4-2 23:43 编辑

程序是在CUBE生成的USB虚拟串口VCP基础上修改。

在不丢失数据的情况下,传输采集的数据1M字节,花了大约14秒,算下来每秒钟的传输速度大概是72K字节/秒
想请教一下研究过虚拟串口的XD,这个速度还有提高的余地吗

其他硬件情况:

1.数据采集。使用外部信号作为定时器源,在中断中进行数据采集。采集一个数据,需要进入中断14次。速度大约是0.03ms采集一个字节,但VCP传输的时候,要传输8字节。

2.还有一个5通道的AD转换,使用AD+DMA,0.1s进行一次AD手动采集。

3.同时还有一个SPI接口的128x64的oled实时显示状态,显示内容全部是8x16的ASCII码字符,所以这个屏幕采用的是虚拟屏幕,内部RAM有一个4x16=64字节的缓冲区,对应显示内容。更新这个屏幕是采用全屏幕重刷方式,使用SPI DMA中断传输显示内容的,我测试过,大约2ms更新一次屏幕内容(SPI采用的是4分频对应是36/4=9MHZ),是在DMA+SPI中断内部,实际消耗CPU的资源很有限,应该不到2ms的10%。

已经充分做了优化,包括采集的数据用FIFO方式存储,VCP传输的时候,直接使用FIFO里面缓冲区指针进行发送,不进行数据搬移。按道理应该和双缓冲区的效果一样。

就是VCP发送,采用的是1ms一次的SOF软中断里面判断是否有数据,如果有数据,则配置好对应的数据指针发送。

收藏 评论7 发布时间:2017-4-2 23:21

举报

7个回答
zen2017 回答时间:2017-4-8 21:15:53
vcp和波特率没有关系
zen2017 回答时间:2017-4-3 12:52:40
没人知道吗?
zen2017 回答时间:2017-4-6 08:23:34
好吧。自己动手DIY做了一个实验,直接在stm32里面持续发送数据。

传送不变的数据速率是:729KB/S

如果每次传送的数据用for循环修改成另一个值,则速度急剧下降为:652KB/S ??!!

同时,这个也说明我使用FIFO进行VCP传输数据管理,速度基本达到了所谓的双缓冲区的效果!
anywill 回答时间:2017-4-6 09:57:22
试过256000波特率正常
爱德华迪奥 回答时间:2019-3-17 00:14:20
zen2017 发表于 2017-4-6 08:23
好吧。自己动手DIY做了一个实验,直接在stm32里面持续发送数据。

传送不变的数据速率是:729KB/S

怎么持续收发, 求大神指点
radio2radio 回答时间:2019-3-17 11:00:34
USB全速的最大速率是............感觉你已经接近极限了。
lxffly 回答时间:2019-8-1 18:46:53
全速模式的话,最快14Mbps/s,换算成B/s的话,约为1.7MB/s,我觉得如果不是大量数据传输,应该是够的

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版