串口通信
串口通信是学习单片机中最早接触到的通信,我们在调试过程中经常会利用串口来实现和电脑之间的通讯,在电脑的串口调试助手中显示单片机发送的信息。
然而单片机的串口是不能直接和电脑进行通讯的。串口是一种异步单端信号即TTL电平,利用的是信号线和地线之间的电压差。而USB是一种差分信号线,它利用差分线之间的信号差来表示01信号。因此我们需要利用串口转USB芯片例如CH340芯片,来将串口的TTL电平,转换为USB的差分电平。
并且从协议层角度来说,串口通讯的协议和USB协议是不相同的,串口转USB芯片所作的不仅仅是电平转换更是将串口协议转换成USB协议。
电脑如何识别串口
以CH340为例,它将电平转化为USB电平之后,还通过 ** USB 协议 ** 与电脑进行通信,使电脑能够正确识别该设备并将其当作一个标准的
串口设备(通常称为 虚拟串口 )。当 CH340 芯片通过 USB 连接到电脑时,首先会进行 USB 设备枚举 。当你将设备插入到电脑的
USB 端口时,操作系统会尝试识别并初始化这个 USB 设备。CH340 会向操作系统提供 设备描述符(Device Descriptor)
,其中包含了设备类型、厂商 ID、产品 ID、设备功能等信息。操作系统会读取这些信息来识别该设备。
在设备枚举后,电脑需要加载与 CH340 兼容的 驱动程序 。CH340 的驱动程序包含了操作系统与该芯片通信所需的所有信息和协议,操作 ****
系统根据驱动来理解如何与 CH340 芯片进行交互。
操作系统的 串口管理器 会创建一个 虚拟 COM 端口 ,允许程序与 CH340
之间通过这个端口进行通信。实际上,这个串口并不是硬件上的传统串口,而是通过 USB 转串口转换芯片 和驱动程序的配合,实现了与实际串口的无缝对接。
为什么叫虚拟串口
虚拟串口(Virtual COM Port, VCP) 和 真正的串口(通常指 硬件串口 或 RS232
串口)是两种不同的概念,它们之间的区别主要在于硬件实现和通信方式。
虚拟串口 是一种 软件模拟 的串口接口,它并不是由实际硬件串口接口组成的,而是通过操作系统中的 驱动程序
来模拟出一个串口的接口。虚拟串口允许应用程序通过一个 COM 端口(比如 COM1、COM2 等)来发送和接收数据,但是物理上并没有对应的 串口硬件
存在。···
虚拟串口通常被用来通过 USB 接口 或其他协议,模拟出一个与硬件串口相似的接口,让应用程序能够像操作硬件串口一样与外部设备进行通信。
真正的串口是什么?
真正的串口通常指的是传统的硬件串口(如 RS232 串口),这是一种 物理通信接口 ,通过 物理引脚 (如 DB9 或 DB25
连接器)直接与设备连接,传输串行数据。真正的串口设备通常由计算机或嵌入式系统的硬件控制,工作在 RS232(±12V) 标准或TTL
电平等串行通信标准下。
单片机可以直接通讯嘛?
上述串口和PC之间的通讯需要经过这些流程,那么有没有办法可以让单片机直接和电脑实现这一通讯呢?
大部分单片机都有板载USB,我们可以通过板载USB替代CH340将串口转为USB的功能,直接利用单片机本身向PC发送信息。
下一期我们介绍如何使用单片机自身的USB作为虚拟串口向电脑发送信息。