stm32Cubemx USB虚拟串口

本文介绍了如何在STM32CubeMX中配置USB OTG FS作为虚拟串口,解决串口不足或传输速率低的问题。通过选用微雪电子TM32F407IGT6核心板,探讨了USB的不同速度选项,并强调了配置USB OTG为设备模式和选择48MHz时钟的重要性。在实现过程中,需注意调整堆大小以避免USB设备连接问题,并在usbd_cdc_if.c中定制发送和接收函数。
摘要由CSDN通过智能技术生成

之前工作中,在调试STM32时,经常碰到串口不够使或者传输速率太低的问题,如果想要与上位机、FPGA等更快的传输速率,以太网由于协议栈的问题,太过麻烦,USB就是个很不错的选择。
硬件以微雪电子TM32F407IGT6 核心板为例,该芯片USB有三种,其中OTG指可做从设备、也可以做主设备。

  • USB_FS(全速、12Mbit/s)
  • USB_OTG_FS(全速、12Mbit/s)
  • USB_OTG_HS(高速、480Mbits)

在这里插入图片描述

在这里插入图片描述如上图所示,USB FS的使用只要使用 DM / D- 和 DP / D+ 这两个引脚就行了,而使用USB HS大多数还需要外接PHY芯片(USB3300)。

  • 在STM32CubeMX中第一步选择时钟外外部时钟。在这里插入图片描述首先在STM32CubeMx中配置USB_OTG_FS

  • 第二部选择调试方式,由于要使用FreeRTOS,因此基础时钟改为TIM1;
    在这里插入图片描述

  • 选择时钟,必须为48MHz.
    在这里插入图片描述

  • 选择连接方式,打开USB_OTG_FS的模式为"Device Only"。
    在这里插入图片描述4、选择使用USB做虚拟串口。
    在这里插入图片描述

  • 注意,此处的堆,由于USB协议栈比较大,需改大些,否则当插入USB设备,电脑主机的设备管理器中USB设备会变为“!”
    在这里插入图片描述在这里插入图片描述

  • 在usbd_cdc_if.c中找到发送与接收函数。
    在这里插入图片描述

  • 将CDC_Transmit_FS函数放到线程中发送数据。
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乖巧梦想Fs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值