4.虚拟串口

文章讲述了作者发现STM32F103C8T6开发板可以通过利用其USB外设的复用功能实现虚拟串口,从而无需外接USB转串口模块进行调试的过程。此外,还探讨了直接使用MCU作为USBCDC/ACM设备的虚拟串口通信原理和优势。
摘要由CSDN通过智能技术生成

目录

前言

解析 


补充一下虚拟串口的概念,前言记录来自我对USB没有认识的时候

前言

之前买过一个stm32f103c8t6的最小核心板,10块钱出头,就是非常经典的那款,非常耐用,直到现在我还有在用着,但是这款板子有一个问题就是没有串口,准确来说就是没直接的USB转串口的电路,可能是成本的问题 所以它并不能用PC直接调试 所以我也没过多的去探究-商家甚至发了引脚的复用图给我-所以我连原理图都没看-而且在我开发查阅资料的时候也看到有人提过没有串口 所以我就一直默认这个板子是没有直接调试的方法的-我后来调试都是外接了一个串口转USB模块 。

所以我一直觉得 stm32f103c8t6的最小系统板无法直接和PC调试(至少在我查找资料的时候没有看到有提及过) 需要外接模块之类的(比如我外接一个USB转多串口模块  等同于上面的做法) 不像我们好的开发板一样 插上数据线 写好串口驱动就可以直接调试了  所以我一直想的是毕竟是便宜货 还要什么自行车 哈哈哈!

直到我遇到了下面的事才改变了我的看法。

在完成 GD32F103C8T6(M3的内核 基本于stm32f103c8t6差不多 连电路特性也是) 的最小系统板的PCB设计后 我对其中 电源部分电路产生了疑惑 (电路是参考现有的)

 这是常规“有串口“开发板的电路图

 这是一个老式的电源接口 和之前 ST的最小系统板的电源接口是一样的 不同于现在常用的typec 电压转换没什么问题 问题点就在于这个D+ D-差分对信号输入线是直接连接IO口的 不像我们工程中用的开发板是电源电路中的信号线在经过CH34x(USB转串口芯片)电路在到IO口,因为这样就可以直接在写完串口的驱动后使用PC(电脑上位机)的串口助手进行调试,

 所以我非常好奇这么做的理由 这个信号线到IO肯定是有用的 结果我一查引脚复用 发现刚好是USB外设的复用 所以就引出来虚拟串口这个概念了 。

解析 

所以我们常规使用USB转串口芯片(CH340),使用串口助手上位机和MCU建立通信的本质是,USB转串口芯片中自带了USB设备固件驱动,当插上电源之后,PC识别到设备,开始枚举,枚举过程我用逻辑分析仪观察到,设备描述符中的类为0xFF特定的厂商类,然后一系列我不认识的请求?为什么会这样,因为我们在用串口的时候是不是都下载过CH340的驱动?当主机获取的到设备的设备描述符后,会从已经下载的驱动中为设备加载,这个加载的依据就是驱动中包含设备的实例路径(VID PID),一但和设备描述符中的对上,那么主机对于这个设备的操作(包含枚举)将由加载的驱动管理,所以它的枚举中有大量的特定请求,最后再设备枚举为串口。

所以你马上就可以在设备管理器找到有串口了,然后串口助手上位机发送数据是先发送到芯片,芯片再通过串口发送数据到MCU的串口,这样通信就建立了,所以这个的本质对于MCU来说是串口之间的通信

(这样做的话在MCU开发中就可以快速建立通信调试手段,不用去写USB驱动和固件)

但是, 如果我们直接绕开USB转串口芯片,直接连接到USB外设,把MCU写成一个CDC(USB下的串行通信设备类) ACM(CDC下的子类协议)类设备(前两章中对设备类有过详细解释),这样的话电脑也可以识别到串口端口,可以进行通信,但是本质上是属于USB通信,所以称为虚拟串口,这样的方式实现的串口可以配置更高的波特率(取决于USB的通信速度)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值