完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序是在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软中断里面判断是否有数据,如果有数据,则配置好对应的数据指针发送。 |
|
相关推荐
1个回答
|
|
STM32F103C8T6的USB虚拟串口VCP最大速度可以达到12 Mbps(或1.5 MB/秒),但实际的传输速度往往会受到许多因素的影响,例如系统负载、USB芯片的性能和设置、USB总线带宽等。在你描述的情况下,传输速度大约为72 KB/秒,远低于最大速度。这可能是由于中断频率和数据采集速度较低引起的。
要提高传输速度,你可以考虑以下几点: 1.增加数据采集速度:优化中断处理程序,尽可能减少进入中断次数,例如将多次采集的数据在中断处理程序中缓存,并一次性传输较大块的数据。 2.优化USB传输设置:根据你的应用需求和硬件情况,检查和调整USB虚拟串口VCP的相关设置,例如设置更大的数据包大小、使用更高的传输速率等。 3.优化系统负载:确保系统的其他任务和外设(例如AD转换和OLED显示)的操作不会对USB传输造成较大的干扰。 4.考虑使用其他高速接口:如果需要更高的传输速度,可以考虑使用其他高速接口,如USB全速(12 Mbps)以上的USB接口、以太网接口或串行的外设接口(如UART、SPI)。 需要注意的是,具体的优化策略和效果可能还需要根据你的应用需求和实际硬件环境进行调试和优化。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1784 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1088 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
729 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
734浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
559浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 22:10 , Processed in 0.618605 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号