串口通信是学习单片机中最早接触到的通信,我们在调试过程中经常会利用串口来实现和电脑之间的通讯,在电脑的串口调试助手中显示单片机发送的信息。

然而单片机的串口是不能直接和电脑进行通讯的。串口是一种异步单端信号即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作为虚拟串口向电脑发送信息。


嘉立创PCB

还没有评论,抢个沙发!