打印
[开发工具]

STM32MCU虚拟串口的问题

[复制链接]
15432|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
地瓜patch|  楼主 | 2025-2-24 22:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用STM32Discovery开发板时,该开发板usb作为从机与作为USB主机的计算机进行通信。在pc上该开发板usb往往被虚拟为穿口,这个虚拟串口的过程是在下位机实现还是上位机实限?还是各实现一部分?
我知道在pc端需要安装有驱动?
那么驱动是由谁开发的?下位机做了哪些工作?


高手能否给出下位机的示例代码?


如若不许你为串口,该usb如何使用?


使用特权

评论回复
沙发
香水城| | 2025-2-25 09:57 | 只看该作者
本帖最后由 香水城 于 2025-3-2 13:21 编辑

STM32开发板被识别为虚拟串口是STM32开发板,即下位机硬件接口及自身固件程序决定的。

下位机的驱动代码,STM32的例程里大多有基于CDC设备类的驱动例程,可以参考借鉴。

至于上位机的驱动程序,目前都是集成好了的,一般不用额外写驱动的。

使用特权

评论回复
板凳
sfd123| | 2025-2-25 10:31 | 只看该作者
从机还好一点,主机有点困难!

使用特权

评论回复
地板
地瓜patch|  楼主 | 2025-2-25 11:12 | 只看该作者
香水城 发表于 2025-2-25 09:57
STM32开发板被识别为虚拟串口应该是STM32开发板,即下位机自身固件程序决定的。

下位机的驱动代码,STM32 ...

谢谢版主,CDC对应的文件在程序里看到过。从pc端设备管理器中看到都是虚拟成st对应设备,若是想更改为自定义名称的设备,请问需要改哪个文件?

使用特权

评论回复
5
香水城| | 2025-2-25 14:10 | 只看该作者
在STM32 usb相关例程里,一般在usbd_desc.c文件中,你可以看到以下宏定义:


#define USBD_VID                      0x0483
#define USBD_PID                      0x5740
#define USBD_LANGID_STRING            0x409
#define USBD_MANUFACTURER_STRING      "STMicroelectronics"
#define USBD_PRODUCT_HS_STRING        "STM32 Virtual ComPort in HS Mode"
#define USBD_PRODUCT_FS_STRING        "STM32 Virtual ComPort in FS Mode"
#define USBD_CONFIGURATION_HS_STRING  "VCP Config"
#define USBD_INTERFACE_HS_STRING      "VCP Interface"
#define USBD_CONFIGURATION_FS_STRING  "VCP Config"
#define USBD_INTERFACE_FS_STRING      "VCP Interface"

VID(Vendor ID)和PID(Product ID)最终会影响Windows对设备的识别。如果你使用的是未经USB-IF分配的VID,Windows可能无法正确识别设备,或者可能会将其识别为未知设备。

对于自定义设备,你可以尝试提供一个自定义的驱动程序。

使用特权

评论回复
6
地瓜patch|  楼主 | 2025-2-25 16:09 | 只看该作者
香水城 发表于 2025-2-25 14:10
在STM32 usb相关例程里,一般在usbd_desc.c文件中,你可以看到以下宏定义:

找到这个文件了,感谢版主,我改配置试一下,看看现象

使用特权

评论回复
7
三生万物| | 2025-3-23 01:28 | 只看该作者
在使用STM32 Discovery开发板通过USB与计算机通信时,虚拟串口的实现涉及下位机(STM32)和上位机(PC)的协作

使用特权

评论回复
8
暖了夏天蓝了海| | 2025-3-23 02:23 | 只看该作者
STM32需要实现USB CDC协议,将自己模拟成一个串口设备。通过USB协议与PC通信,发送和接收数据

使用特权

评论回复
9
夜阑风雨| | 2025-3-23 03:46 | 只看该作者
一般来说,C端需要安装驱动程序,将STM32USB设备识别为虚拟串口。驱动程序通常由STMicroelectronics提供

使用特权

评论回复
10
远山寻你| | 2025-3-23 04:33 | 只看该作者
驱动程序通常由STMicroelectronics开发,并随STM32CubeMXSTM32CubeIDE提供。用户也可以使用Windows自带的CDC驱动(如usbser.sys

使用特权

评论回复
11
江河千里| | 2025-3-23 05:11 | 只看该作者
其实驱动的作用就是将STM32USB设备识别为虚拟串口(如COM3)。提供串口通信的API,供上位机应用程序使用

使用特权

评论回复
12
别乱了阵脚| | 2025-3-23 06:21 | 只看该作者
下位机需要实现USB CDC协议配置USB外设,实现CDC类设备的功能。处理USB通信的底层细节(如端点配置、数据传输)

使用特权

评论回复
13
冰春彩落下| | 2025-3-23 07:51 | 只看该作者
虚拟串口通过USB CDC协议实现,需要下位机和上位机协作

使用特权

评论回复
14
一秒落纱| | 2025-3-23 08:33 | 只看该作者
驱动一般通常由Windows自带的CDC驱动

使用特权

评论回复
15
光辉梦境| | 2025-3-23 09:34 | 只看该作者
如果不虚拟为串口,可以使用HIDMSC或自定义USB

使用特权

评论回复
16
淡漠安然| | 2025-3-23 10:12 | 只看该作者
通过STM32CubeMXHAL库,可以快速实现USB通信功能。如果需要更复杂的USB应用,可以参考ST官方提供的USB示例代码和文档

使用特权

评论回复
17
qinlu123| | 2025-3-26 11:04 | 只看该作者
今天刚学习了虚拟串口,我的理解是PC将串口助手的数据和串口设置通过USB迅速地发给单片机,如果单片机不通过串口转发数据那么串口设置信息就没用,否则的话就按照串口设置将数据转发出去。同样单片机将串口接收的数据存起来攒够一包通过USB再发给PC

使用特权

评论回复
18
qinlu123| | 2025-3-26 11:30 | 只看该作者
香水城 发表于 2025-2-25 09:57
STM32开发板被识别为虚拟串口是STM32开发板,即下位机硬件接口及自身固件程序决定的。

下位机的驱动代码, ...

版主,我看CubeMX生成的代码只能虚拟一个串口,要想虚拟多个串口只能自己修改驱动吗

使用特权

评论回复
19
peterLaw| | 2025-3-26 17:17 | 只看该作者
虚拟串口应该如何设置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1418

主题

13594

帖子

27

粉丝