1. 为什么一块几块钱的芯片能让这么多人卡在第一步
如果你手头有一块 Arduino、ESP32 开发板、STM32 最小系统板,或者某个工控设备、扫码枪、老式串口模块,插上电脑之后设备管理器里蹦出来一个带黄色感叹号的“USB2.0-Serial”或者干脆什么都不显示,那大概率就是 CH340 或 CH341 这颗芯片在跟你闹脾气。这颗由沁恒微电子出品的 USB 转串口芯片,凭借极低的成本和够用的性能,几乎统治了国内中低端开发板和串口设备市场。但它的驱动安装,却成了无数人从入门到放弃的第一道坎。
我这些年帮人远程处理过不下几十次“串口识别不了”的问题,发现一个规律:问题很少出在芯片本身,绝大多数是驱动版本、系统签名策略、安装方式三者之间的匹配问题。Win10 和 Win11 在这件事上的表现还不一样,Win11 对驱动签名的要求更严格,而网上流传的很多老驱动包还是 2014 年甚至更早的版本,装上去要么报错,要么装完了端口能识别但一收发数据就断。
这篇内容我打算把 CH340/CH341 在 Win10 和 Win11 上的驱动安装彻底讲透,给出三种经过实测的安装方案,并且把每种方案的适用场景、踩坑点和验证方法都说清楚。不管你是刚买第一块开发板的新手,还是被某个老设备驱动折磨过的老手,应该都能从这里找到能直接用的操作路径。关键词就围绕 CH340、CH341、USB 转串口驱动、Win10、Win11 这几个核心点展开,不扯远的。
2. 先搞清楚你手里的到底是 CH340 还是 CH341
很多人把这两个型号混着叫,实际上它们有区别,驱动虽然经常通用,但搞清楚型号能帮你少走弯路。
2.1 型号差异与常见封装
CH340 是一个系列,包含 CH340G、CH340C、CH340E、CH340B、CH340N 等多个尾缀,最常见的是 CH340G(SOP-16 封装)和 CH340C(内置晶振,外围更简单)。CH341 则是另一个系列,常见的有 CH341A、CH341T、CH341S,其中 CH341A 最出名,因为它不仅能做 USB 转串口,还能做 USB 转并口、I2C、SPI,很多便宜的编程器(比如刷 BIOS 的土豪金编程器)用的就是它。
从驱动角度看,沁恒官方把 CH340 和 CH341 的驱动合并在一起发布,所以你会看到驱动包名字叫 CH341SER 或者 CH34XSER,里面同时支持这两个系列。这一点很重要:你不需要为 CH340 和 CH341 分别找驱动,一个包搞定。
| 型号 | 常见封装 | 典型用途 | 是否内置晶振 |
|---|---|---|---|
| CH340G | SOP-16 | Arduino Nano、老版开发板 | 否,需外接12M晶振 |
| CH340C | SOP-16 | 新版开发板、串口模块 | 是 |
| CH340N | SOP-8 | 小型串口模块 | 是 |
| CH341A | SOP-28 | 编程器、并口转换 | 否 |
| CH341T | SSOP-20 | 串口转换 | 否 |
2.2 怎么确认自己设备里的芯片型号
最直接的办法是看设备管理器里的硬件 ID。插上设备,右键“此电脑”进“管理”,打开“设备管理器”,找到那个带感叹号或者显示为“USB2.0-Serial”的设备,右键属性,切到“详细信息”选项卡,在“属性”下拉里选“硬件 ID”,你会看到类似这样的内容:
USB\VID_1A86&PID_7523&REV_0264 USB\VID_1A86&PID_7523VID_1A86 就是沁恒的厂商 ID,PID_7523 对应 CH340,PID_5523 对应 CH341。记住这个 PID,后面判断驱动是否装对的时候用得上。
提示:有些山寨设备会篡改 VID/PID,如果你看到 VID 不是 1A86,那可能是用了别的芯片或者被改了,驱动方案要另说。
2.3 驱动装不上时先排除硬件问题
在折腾驱动之前,先做两个基本检查,能省掉大量无用功。第一,换一根 USB 线。我遇到过至少五次“驱动死活装不上”,最后发现是线的问题——有些充电线只有电源线没有数据线,插上去设备能亮灯但电脑根本不认。第二,换一个 USB 口,优先插主板后置的 USB 口,前置面板或者扩展坞的供电和信号质量有时候不靠谱。
如果换线换口之后设备管理器里连“未知设备”都不出现,那可能是设备本身供电或者芯片损坏,跟驱动无关了。
3. 方案一:官方驱动手动安装,最稳但步骤最多
这是我最推荐的方案,尤其是 Win11 用户。官方驱动签名完整,兼容性最好,缺点是步骤比“双击下一步”要多几步。
3.1 驱动包的获取与版本选择
沁恒官网(wch.cn)的下载页面提供最新版驱动,目前稳定版本是 CH341SER.EXE(版本号 3.8 及以上)。网上很多“CH340驱动下载 百度云”的链接给的是 2014 年的 3.4 版本,那个版本在 Win11 上会因为签名问题装不上,或者装上了也不稳定。认准 3.8 或更高版本。
下载的时候注意区分:官网提供 EXE 安装版和 ZIP 压缩版。EXE 版双击就能装,ZIP 版里面是 INF、SYS、CAT 文件,适合手动指定安装。两种我都用过,EXE 版在 Win10 上基本一路下一步就行,Win11 上有时候会被 SmartScreen 拦一下。
3.2 Win10 下的标准安装流程
Win10 的流程相对简单:
- 拔掉 CH340 设备(重要,先别插)
- 双击 CH341SER.EXE,如果弹出用户账户控制就点“是”
- 点击“安装”按钮,等待进度条走完
- 看到“驱动安装成功”提示后,点确定
- 重新插上设备,打开设备管理器
正常情况下,你会在“端口(COM 和 LPT)”下面看到“USB-SERIAL CH340 (COMx)”,COM 号是系统分配的,记下来后面要用。
如果装完之后设备管理器里还是感叹号,右键那个设备选“更新驱动程序”,然后选“浏览我的电脑以查找驱动程序”,手动指向驱动安装目录(通常在C:\Program Files (x86)\WCH\CH341SER或者你解压 ZIP 的目录),让系统自己匹配 INF 文件。
3.3 Win11 下的签名拦截与绕过
Win11 对驱动签名的要求比 Win10 严格得多。官方 3.8 版本的驱动是有正规签名的,正常情况能装上。但如果你用的是老版本驱动,或者系统开了“内存完整性”之类的安全功能,可能会遇到“Windows 无法验证此驱动程序软件的发布者”的报错。
遇到这种情况,不要急着去关内存完整性(那个影响面太大),先确认你用的是最新版官方驱动。如果确认是最新版还是报签名错误,可以临时禁用驱动签名强制:
- 按住 Shift 键,同时点击开始菜单里的“重启”
- 电脑重启后会进入蓝色菜单,选“疑难解答”->“高级选项”->“启动设置”->“重启”
- 重启后按数字键 7 或 F7,选择“禁用驱动程序强制签名”
- 进入系统后重新安装驱动
这个设置只对本次开机有效,重启后恢复。装完驱动验证没问题了,正常重启即可。
注意:禁用驱动签名强制是临时手段,不要长期开着。装完确认能用之后,正常重启让签名强制恢复。
3.4 安装后的验证方法
驱动装没装对,不能只看设备管理器有没有感叹号。我习惯用三步验证:
第一步,设备管理器里看端口号,确认是“USB-SERIAL CH340”而不是“USB2.0-Serial”或者别的名字。
第二步,用串口调试助手(比如 SSCOM、XCOM、或者 Arduino IDE 自带的串口监视器)打开对应 COM 口,能打开不报错。
第三步,做一次回环测试。把 CH340 模块的 TX 和 RX 用杜邦线短接,然后串口助手发数据,如果发出去的内容原样收回来,说明收发都正常。这一步能排除“端口能打开但数据不通”的隐性故障。
4. 方案二:让系统自动匹配,适合不想折腾的场景
不是所有人都愿意手动装驱动。如果你用的是 Win10 较新版本或者 Win11,系统自带的驱动库有时候能自动识别 CH340 并装上可用驱动。
4.1 自动匹配的触发条件
自动匹配能不能成功,取决于两个因素:系统版本和联网状态。Win10 1809 之后的版本,Windows Update 的驱动库里已经包含了 CH340 的通用驱动。Win11 更是如此。但前提是电脑能联网,且没有关闭 Windows Update 的驱动更新功能。
触发方式很简单:插上设备,等几分钟,系统会在后台通过 Windows Update 拉取驱动。你可以在设备管理器里右键那个未知设备,选“更新驱动程序”->“自动搜索驱动程序”,手动触发一次。
4.2 自动装的驱动有什么坑
自动匹配的驱动能用,但有两个隐患。第一,版本可能偏旧,某些需要高波特率(比如 2Mbps 以上)或者特殊流控的场景可能不稳定。第二,自动装的驱动有时候会把 CH340 识别成“USB-SERIAL CH340”但 COM 口号分配得很奇怪,或者每次插拔 COM 号都变。
我实测下来,自动匹配的驱动在普通 115200 波特率以下的场景完全够用,但如果你要做高速通信或者需要固定 COM 号,还是建议用方案一手动装官方最新版。
4.3 关闭了自动更新怎么办
有些朋友为了系统稳定,把 Windows Update 的驱动更新关了(这个在“win11关闭自动更新”相关搜索里很常见)。这种情况下自动匹配就不会触发。解决办法是临时打开驱动更新,或者直接走方案一。
具体操作:右键“此电脑”->“属性”->“高级系统设置”->“硬件”选项卡->“设备安装设置”,确认“是否要自动下载制造商的应用和自定义图标”选的是“是”。Win11 里这个选项的位置在“设置”->“系统”->“关于”->“高级系统设置”里能找到。
5. 方案三:手动指定 INF 文件,解决顽固识别问题
有些情况下,前两个方案都不管用:设备管理器里显示的是“未知设备”,自动搜索找不到驱动,官方 EXE 装完了也没反应。这时候需要手动指定 INF 文件。
5.1 什么情况下需要手动指定
典型场景包括:设备被识别成其他类型的设备(比如 HID 或者 USB 复合设备),系统里已经装了冲突的旧版驱动,或者你用的是精简版系统、LTSC 版本,驱动库被裁剪过。
还有一种情况是 CH340 被别的驱动“抢占”了。比如你之前装过某个串口设备的驱动,它的 INF 里也声明了 VID_1A86,系统就不知道该用哪个。这时候需要手动指定,强制用 CH340 的 INF。
5.2 手动指定 INF 的完整步骤
- 从官网下载 ZIP 版驱动,解压到一个路径简单的目录,比如
D:\ch340drv,路径里不要有中文和空格 - 设备管理器里右键问题设备,选“更新驱动程序”
- 选“浏览我的电脑以查找驱动程序”
- 选“让我从计算机上的可用驱动程序列表中选取”
- 如果列表里有“USB-SERIAL CH340”,直接选它;如果没有,点“从磁盘安装”
- 浏览到
D:\ch340drv,选中CH341SER.INF,确定 - 系统会列出匹配的型号,选 CH340 对应的那项,下一步安装
安装过程中如果弹出“不推荐安装此驱动程序”的警告,选“仍然安装”。这个警告通常是因为驱动没有通过 WHQL 认证,不代表驱动有问题。
5.3 装完还是感叹号怎么办
如果手动指定 INF 之后设备管理器里依然是感叹号,右键设备看“属性”->“常规”选项卡里的“设备状态”,会给出错误代码。常见的有:
| 错误代码 | 含义 | 处理方向 |
|---|---|---|
| 代码 10 | 设备无法启动 | 驱动冲突或硬件故障 |
| 代码 28 | 未安装驱动 | INF 没匹配上,检查硬件 ID |
| 代码 43 | 设备被报告故障 | 换线换口,可能是供电问题 |
| 代码 52 | 签名验证失败 | 用最新版驱动或临时禁用签名强制 |
代码 10 和 43 很多时候是硬件或者线材问题,不要死磕驱动。代码 28 说明 INF 里的硬件 ID 和你设备的对不上,需要检查 VID/PID。
6. 那些让人抓狂的兼容性问题和真实排查记录
驱动装上了不代表万事大吉。下面这几个问题是我在实际使用中反复遇到的,每一个都值得单独说。
6.1 端口能打开但一收发就断
这个问题的典型表现是:串口助手能打开 COM 口,但一发数据就报错,或者发出去没反应,设备管理器里端口突然消失又出现。原因通常是驱动版本和芯片固件不匹配,或者 USB 供电不足。
我遇到过一次特别典型的:一块 CH340G 的模块,用官方 3.8 驱动,115200 波特率下正常,但一上 921600 就断。换了一根带屏蔽的短 USB 线就好了。高速波特率对线材质量很敏感,这不是驱动能解决的。
还有一种情况是“程序连接串口成功,CH340 驱动正常,程序串口端口后,重连出现端口拒绝访问”。这是典型的端口没被正确释放。上一个程序关闭时没有调用 CloseHandle,端口被占用着,新程序就打不开。解决办法是在程序里确保异常退出时也释放串口句柄,或者用串口调试助手先打开再关闭一次,强制释放。
6.2 Mixly 和 Arduino IDE 找不到端口
“Mixly 没有 CH340 端口”这个问题在创客教育圈特别常见。Mixly 基于 Arduino IDE 的底层,端口列表来自系统。如果 Mixly 里看不到端口,但设备管理器里有 COM 口,通常是 Mixly 自带的串口库版本太老,枚举端口的方式和 Win11 不兼容。
解决办法有两个:一是升级 Mixly 到最新版,二是先在 Arduino IDE 里确认端口能识别,然后关掉 Arduino IDE 再开 Mixly。有时候 Arduino IDE 会占用端口,导致 Mixly 看不到。
6.3 虚拟机里的 CH340 识别问题
在 VMware 或 VirtualBox 里跑 Win10/Win11 虚拟机,想把 CH340 设备直通给虚拟机用,需要在虚拟机设置里把 USB 控制器打开,并且把设备从宿主机“断开连接”再“连接到虚拟机”。VMware 里是在“虚拟机”->“可移动设备”里找到 CH340,选“连接”。
这里有个坑:如果宿主机上已经装了 CH340 驱动并且占用了设备,虚拟机可能抢不过来。需要先在宿主机设备管理器里把设备禁用,再在虚拟机里连接。另外,虚拟机里的驱动要重新装一遍,不能共用宿主机的。
6.4 Ubuntu 和 Linux 下的情况
虽然这篇主要讲 Win10/Win11,但很多人是双系统或者用 Linux 开发。Ubuntu 下 CH340 是内核自带的 ch341 驱动,插上就能用,不需要额外装。用ls /dev/ttyUSB*能看到设备节点。如果要用 PuTTY 连接,装个 putty 然后选/dev/ttyUSB0就行。
Linux 下唯一需要注意的是权限问题。普通用户默认没有串口设备的读写权限,需要把自己加到 dialout 组:sudo usermod -aG dialout $USER,然后重新登录。或者临时用sudo chmod 666 /dev/ttyUSB0,但这个重启就失效了。
6.5 关于 RTS 电平控制
“CH340 如何置 RTS 电平”这个搜索词说明有人在做需要硬件流控或者复位控制的项目。CH340 支持 RTS/DTR 输出,在串口助手里通常有勾选框可以手动置位。如果是程序控制,在 Windows 下用EscapeCommFunctionAPI,传入SETRTS或CLRRTS。Linux 下用ioctl的TIOCMSET。
这个功能常见于用 DTR/RTS 给 ESP32 或者 Arduino 做自动复位。如果发现复位不正常,先确认驱动支持这些控制线,老版本驱动有时候对 RTS 的支持有问题。
7. 驱动装好之后,怎么让串口用起来更省心
驱动只是第一步,日常使用中还有一些设置能让串口通信更稳定。
7.1 固定 COM 口号
默认情况下,每次插拔设备系统可能分配不同的 COM 号,这对需要固定端口号的程序很不友好。可以在设备管理器里右键 CH340 设备->“属性”->“端口设置”->“高级”,在“COM 端口号”下拉里指定一个固定的号,比如 COM10。这样只要插的是同一个 USB 口,COM 号就不变。
注意:换 USB 口之后,系统会认为是新设备,需要重新设置。所以尽量固定用一个 USB 口。
7.2 调整延迟和缓冲区
同一个“高级”设置页面里,有个“延迟时间”选项,默认 16 毫秒。如果你做的是实时性要求高的通信,可以调到 1 毫秒,能降低延迟。但调太低可能导致大数据量时丢包,需要根据实际情况权衡。
还有接收和发送缓冲区大小,默认值一般够用。如果做高速大数据量传输,可以适当调大。
7.3 排查驱动是否被系统更新覆盖
Windows Update 有时候会“好心”地把你的官方驱动替换成它驱动库里的版本。如果某天突然发现串口不好用了,先检查驱动版本是不是变了。在设备管理器里右键设备->“属性”->“驱动程序”选项卡,看“驱动程序版本”。如果被换了,重新按方案一装一遍官方版。
可以在“驱动程序”选项卡里点“回退驱动程序”试试,但更彻底的办法是重新安装。
8. 关于驱动安装这件事,我踩过的坑和总结的经验
折腾 CH340 驱动这么多年,有几个经验是文档里不会写但特别有用的。
第一,永远先怀疑线材和 USB 口,再怀疑驱动。我统计过自己处理过的问题,大概三成是线的问题,两成是 USB 口供电问题,剩下五成才是驱动。先做最简单的排除,能省大量时间。
第二,驱动版本不是越新越好,但太老肯定不行。3.8 版本是目前兼容性和稳定性平衡得最好的。有些特殊设备可能需要特定版本,但绝大多数场景用最新官方版就对了。
第三,Win11 的驱动签名问题不要用关闭内存完整性来解决。内存完整性是 Win11 的重要安全功能,关了影响面太大。用最新版官方驱动,或者临时禁用签名强制装完再恢复,是更稳妥的做法。
第四,装完驱动一定要做回环测试。设备管理器里没感叹号不代表通信正常。TX-RX 短接回环测试是验证驱动和硬件都正常的最快方法。
第五,虚拟机里用串口,宿主机和虚拟机只能有一个占用设备。这个坑我踩过好几次,每次都是忘了在宿主机断开连接。
最后说一个细节:如果你用的是 CH341A 做编程器,除了串口驱动,可能还需要装编程器软件自带的驱动,两者不冲突但要注意安装顺序。先装串口驱动,再装编程器软件,一般不会出问题。
串口这东西,看起来简单,但真要用得顺手,驱动、线材、设置、程序每一环都得对。希望这篇内容能帮你把 CH340/CH341 这一环彻底搞定,把时间花在真正要做的事情上。