STM32与USB3300共同实现USB OTG HS的CDC串口通信速度测试

这篇具有很好参考价值的文章主要介绍了STM32与USB3300共同实现USB OTG HS的CDC串口通信速度测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

  STM32和上位机传统通信方式就是串口,IIC,SPI等。IIC和SPI一般不常用,串口是用的最多的通信方式。然而串口一般用于输出调试信息这种对传输速度没要求的场景,那种大容量数据快速传输的场景,串口显得捉襟见肘。STM32自带USB FS,然而既然都使用USB了,为什么不用USB HS呢?STM32H750VBT6没有内置USB HS PHY,但提供了USB HS的ULPI通信接口,用于连接外置USB PHY。这样就可以使用STM32H750VBT6和外置USB3300搭建起来USB HS的通道。这里不再讲述USB HS的配置过程,只需要在STM32CUBEMX中简单点几下就行,注意时钟配置正确,把internal DMA IP关掉即可。


USB HS通信速度测试

  理论上USB HS通信速度能到480Mbps,但是实际上并没有那么多,我利用STM32H750VBT6测试,USB CDC类虚拟串口的通信速度大约在22MB/s,十分够用。利用Python编写的测速脚本数据结果如下。
usb3300,stm32,嵌入式硬件,单片机


Python测速代码:

import serial
import time
import serial.tools.list_ports

ports_list = list(serial.tools.list_ports.comports())
if len(ports_list) <= 0:
    print("无串口设备。")
else:
    print("可用的串口设备如下:")
    for comport in ports_list:
        print(list(comport)[0], list(comport)[1])

COM_Index = input("想要观察的串口号")
ser = serial.Serial(COM_Index,115200)       #打开虚拟串口
temp = 0
count = 0
start_time = 0
while 1:
    if count == 0:
        start_time = time.time()
    com_input = ser.read(2048)
    if temp != com_input[1]:           #说明是新的数据
        count = count+1              #次数加1
        temp = com_input[1]        #把temp更新到当前的数据,用于判断下一次的新数据
    if count == 100000:             #接收了100000次数据 就是2K*100K = 200M的数据
        end_time = time.time()
        run_time = end_time-start_time
        count = 0
        print("总数据量200M, 总时间为%.2f秒, 数据传输速度为%.2f MB/s" %(run_time,200/run_time))

STM32的下位机USB测速代码:

	memset(UserTxBufferHS,i,sizeof(UserTxBufferHS));
	CDC_Transmit_HS(UserTxBufferHS,sizeof(UserTxBufferHS));              //发送数据

  UserTxBufferHS是usbd_cdc_if.c中自带的,大小为APP_TX_DATA_SIZE,一般就是2048。


关于数据传输:

  不要想着用sscom等串口软件去手动计算USB速度,因为sscom是实时显示串口接收数据的,数据量太大容易导致软件卡死。文章来源地址https://www.toymoban.com/news/detail-730837.html

到了这里,关于STM32与USB3300共同实现USB OTG HS的CDC串口通信速度测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 USB OTG主机模式的实现方法

    为了实现STM32的USB OTG主机模式,我们首先需要了解一些基本概念和原理,然后进行相应的硬件连接和软件编程。 在这篇文章中,我们将介绍如何在STM32微控制器上实现USB OTG主机模式,并提供相应的代码示例。 1. STM32 USB OTG主机模式概述 USB OTG(On-The-Go)是一种USB规范,允许设

    2024年02月22日
    浏览(32)
  • stm32 USB HID+CDC 鼠标键盘串口 组合设备配置解析

    查阅网上的博客与代码,很多都是关于USB的鼠标配置、USB的键盘配置、USB的虚拟串口配置,稍微深入一点的会将鼠标键盘合在一起,但移植起来就会报很多错误,要么是检测不到,要么是警告,这很正常,因为不理解这些数字代表着什么。但只要理解每个数字代表什么意思,

    2024年02月13日
    浏览(29)
  • STM32CubeMX学习笔记(43)——USB接口使用(CDC虚拟串口)

    USB(Universal Serial BUS)通用串行总线 ,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、Microsoft 等多家公司联合提出的。 USB 发展到现在已经有 US

    2024年02月02日
    浏览(33)
  • 【STM32】STM32F4中USB的CDC虚拟串口(VCP)使用方法

    最近在学习STM32的USB功能,主要是想要使用虚拟串口(VCP)功能,来解决串口传输速率较低的问题,达到于上位机高效通信的目的。 使用芯片:STM32F407ZGT6 使用函数:HAL库 使用工具:STM32CubeMX + Keil uVision5 串口工具:VOFA 主要配置内容: 调试模式为Serial; 使用外部时钟 设置为

    2024年02月21日
    浏览(60)
  • 第10课【STM32 USB通讯协议实战】HID键盘+CDC虚拟串口组合设备

    文章中的部分概念可参考第9课【USB协议】USB总线 接口 端点 管道 数据包 枚举 STM32_USB-FS-Device_Lib V4.1.0 USB协议中为了提供对多样设备的支持,定义了许多外部设备子类,常见的包括: 人机交互类设备HID(Human Interface Device) 通信类设备CDC(Communicate Device Class) 大容量存储设备

    2024年02月04日
    浏览(51)
  • stm32 USB复合设备 cubeMX库一键生成 多路CDC串口 HID鼠标键盘 Composite Device

    最近有个需求,需要同时用usb键盘鼠标和虚拟串口等,因为平时没怎么研究过usb协议,所以自己写复合设备一直没有成功,然后正巧在github上看到了一个stm32的一个usb复合设备库,可以快速配置usb组合设备,并且支持超级多路串口 Gihub地址 https://github.com/alambe94/I-CUBE-USBD-Compo

    2024年02月09日
    浏览(51)
  • STM32与Python上位机通过USB虚拟串口通信

    在详细阅读广大网友的教程之后,我对STM32和Python通过USB通信的流程烂熟于心。 尝试用ST公司的NUCLEO-L476RG板子进行简单的回环通信测试,发现还是存在网上无法找到的问题,这个耽搁了几天,期间找到了原因,但没有焊接调试,所以暂时就不以它为例子进行写了。 后采用正点

    2024年02月15日
    浏览(31)
  • STM32实现USB转TTL串口工具

    具有USB接口和UART接口的STM32芯片,如STM32F1, STM32F4等等,都可以实现USB转TTL串口工具的制作。目前具有USB接口的最小资源的芯片是STM32F103C6T6。这里介绍USB转UART的代码设计。 STM32例化的USB VCOM,数据通讯到STM32内部设定的缓存空间,如果不向外部进行UART转发,则VCOM的波特率为名

    2024年02月02日
    浏览(29)
  • STM32F103实现USB虚拟串口

            今天分享一下STM32F103如何实现虚拟串口,目标是让新手也能上手,如果谁没看懂或者照着做功能没有实现可以私信我,只要我看到一定回复。        本次使用的是STM32F103C8T6核心板,按以下步骤新建一个STM32CubeMX工程。        步骤一 :先输入MCU型号搜索芯片,软件

    2024年02月09日
    浏览(36)
  • STM32 USB CDC VPC

    STM32,STM32CubeMX,HAL库,USB,虚拟串口,串口不定长接收 通过使用stm32cubemx,实现USB CDC虚拟串口,并与硬件串口进行数据传输,实现了硬件串口数据的不定长接收,以及USB虚拟串口超过64字节的数据接收,最终实现了一个简单的USB转串口功能。 使用USB的CDC类来虚拟出一个串口与电脑进

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包