驱动作用:当 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没有内置这些私有协议的驱动,所以必须在主机上安装芯片厂商提供的特定驱动。