USB转串口扫盲
Q1、CH340 为什么 叫 U转串 而不叫 串转U 芯片
- 本质相同: “U转串” 和 “串转U” 指的都是 同一个双向转换功能 (USB ⇄ Serial TTL/UART)
- “U转串” (USB to Serial): 描述的是 从主机视角看过去的功能 - 将电脑的 USB 口“扩展”出一个串口
- “串转U” (Serial to USB): 描述的是 从设备(嵌入式端)视角看过去的功能 - 将设备的串口信号“变成”USB 信号发送给电脑
- 市场销售: 在淘宝、京东等平台搜索时,“USB 转 TTL 串口”、“USB 转串口模块”、“U转串模块” 是最常见的关键词,因为商家知道买家一般是想用电脑的 USB口 连 串口 设备,所以CH340被称为“U转串芯片”,符合主流应用场景和市场。
Q2、开发板上有个 串口转usb 的usb口,接在我的 window 主机的 usb 口,为什么需要在 windows 上装驱动才能识别到开发板中的串口,串口转usb芯片不是在开发板上吗?开发版的驱动已经支持了啊
-
核心概念:USB 通信是“主从”架构
-
主机 (Host): Windows 电脑是 USB 通信的主机。它负责控制总线、提供电源、枚举设备、加载驱动、管理数据传输。主机端需要驱动才能理解设备发来的数据。
-
设备 (Device): 开发板是 USB 设备。它遵循 USB 协议,向主机报告自己的身份(通过 USB 描述符),并响应主机的请求。开发板上的 USB 转串口芯片(如 CH340, CP2102, FT232 等)或固件(如 STM32 的 USB CDC)实现了设备端的功能。
-
开发板上的“串口转 USB”做了什么?
- 硬件电平: 将UART上的TTL电平信号转换USB电平
- 协议转换: 将数据打包成符合 USB 协议的数据包
- 描述自身: 发送USB描述符给主机, 包含 厂商 ID (VID) 和 产品 ID (PID),设备类 (Class)、子类 (SubClass)、协议 (Protocol)
-
Windows 电脑端还需要安装驱动?
-
驱动作用:当 Windows 接收到开发板发来的 USB 描述符(包含 VID, PID, Class 等信息)后,实现与这个特定的设备通信以及将接收到的 USB 数据包解释成串行数据流
-
情况一:开发板USB声明自己是标准 CDC/ACM 类 (Class=0x02, SubClass=0x02, Protocol=0x01) Windows 内置了通用的 usbser.sys 驱动来处理标准的 CDC/ACM 设备。此时,Windows都是免驱的,会自动加载USB标准驱动,创建一个虚拟 COM 端口。
-
情况二:开发板USB使用了厂商特定的 VID/PID 或非标准协议:绝大多数 USB 转串口芯片(如 CH340, CP210x - 早期版本, FT232, PL2303)虽然最终目的是实现串口功能,但它们并没有严格使用标准的 CDC/ACM 描述符和协议。当 Windows 看到这个特定的 VID/PID 组合(比如 CH340 的 VID=1A86, PID=7523),它在内置驱动库 (usbser.sys) 里找不到匹配项。结果Windows检测到一个新硬件(VID=1A86, PID=7523),但不知道它是什么,也不知道如何通信。需要这个设备的‘操作手册’(驱动)”,就需要在 Windows 主机上安装由该芯片厂商(如 WCH 沁恒电子 对于 CH340)提供的特定驱动程序。
-
为什么有的开发板“免驱”: 如果开发板的USB严格实现了标准 CDC/ACM 规范并正确声明了 Class/SubClass/Protocol,那么 Windows (以及 Linux/macOS) 内置的通用 CDC/ACM 驱动 (usbser.sys) 就能直接识别和使用它,无需额外安装驱动
-
为什么大部分需要驱动: 因为它们使用了成本更低、更常见、但使用了厂商私有协议 的 USB 转串口芯片(如 CH340, CP210x - 非原生CDC, FTDI, PL2303),因为Windows没有内置这些私有协议的驱动,所以必须在主机上安装芯片厂商提供的特定驱动。
-
Q3、总结与关键点:
-
开发板 (设备): 负责物理信号转换 + 按照某种协议 (标准CDC/ACM 或厂商私有) 通过 USB 发送/接收数据包 + 报告自己的身份 (描述符)。
-
Windows 电脑 (主机): 负责识别设备身份 + 加载对应的驱动 (内置通用驱动(usbser.sys)或厂商特定驱动) + 使用驱动提供的“翻译规则”与设备通信 + 创建和管理虚拟 COM 端口。
-
结论:只要设备端“串口转 USB”使用的协议不是 Windows 内置通用驱动 (usbser.sys) 所支持的标准USB CDC/ACM,就必须在Windows主机端上安装该芯片厂商提供的特定驱动,驱动用于识别设备端的USB硬件(厂商私有协议)并通信。
本文来自博客园,作者:变秃了也就变强了,转载请注明原文链接:https://www.cnblogs.com/lichangyi/p/19031305