最近帮好几个朋友救砖路由器、给单片机烧固件,发现一个特别普遍的问题:大家 USB转串口模块是买了,但要么买回来插电脑上没反应,要么“设备管理器”里冒出一个黄色感叹号。群里一问,十有八九会有人说是“驱动没装”,可装了半天还是不行。最后发来一看,芯片型号压根就不对,或者模块买错类型了。
在国产USB转串口芯片里,CH340G是我用得最多、也最推荐新手入手的型号。原因无它:便宜、稳定、Linux/Mac系统内置驱动,Windows下装个官方驱动就完事。这篇文章就围绕这个芯片展开,从“怎么识别真芯片”到“三平台驱动安装”,再到各种常见报错排查,给你一次讲清楚。
1. USB转串口模块为什么会“买错”
1.1 先搞清楚USB转串口到底转的是什么
很多朋友第一步就绕晕了。这里的“串口”其实有两个完全不同的世界:
- TTL电平串口:引脚输出的是0V和3.3V/5V电平,常见于单片机、路由器主板、开发板、ESP32/ESP8266模组。大部分蓝板子、绿板子的“USB转TTL”模块,输出的都是这类信号。
- RS232电平串口:老式工控机、交换机Console口、部分PLC调试口,用的是正负电压(比如-12V~+12V)的RS232信号。
如果你拿一个USB转TTL模块去直接怼交换机Console口,大概率没反应;反过来,拿RS232线去接单片机的RX/TX,轻则通信乱码,重则烧引脚。这就是“买错”最常见的第一种情况:不是芯片型号买错,而是模块类型买错了。
所以下单前先问自己一个问题:我到底要连什么设备?是给单片机烧录,还是调路由器的bootloader,还是连老旧工控机?如果是后两种,看看主板上有没有一颗MAX3232或SP3232电平转换芯片,没有的话说明你需要的是带RS232输出的模块。
1.2 USB转串口芯片有多少种,为什么要选CH340G
市面常见的USB转串口芯片有几大类:
| 芯片型号 | 常见封装 | 特点 | 适用场景 |
|---|---|---|---|
| CH340G/CH340C/CH340N | SOP-16/SOP-8 | 国产,价格低,驱动全平台 | 烧录、串口调试、路由器刷机 |
| CP2102 | QFN-28 | 免晶振方案,稳定性好 | 工业调试、开发板 |
| FT232RL | SSOP-28 | 老牌大厂,兼容性极强 | 研发调试、仿真器串口 |
| PL2303 | SOP-16 | 老芯片,新版驱动有兼容问题 | 老设备、低成本量产 |
| CH341 | SOP-16 | 支持并口/IIC/SPI/串口 | 编程器、烧录座 |
CH340G的优势在于:驱动适配最全面,官方驱动更新频率高,Linux内核自带ch341驱动模块,macOS新版系统直接免驱识别,而且模块价格常常几块钱包邮。对新手来说,踩坑成本极低。
这里多说一句,很多人担心CH340G容易被“山寨”,其实这个芯片本身就是国产高性价比方案,即便买到不同批次或类似型号,只要丝印清晰、驱动能识别,使用上差别不大。重点不是防假,而是别把CH340G和CH341搞混,前者是标准串口芯片,后者多用于并口/IIC/SPI场景,串口功能只是它的一个子集。
2. 拆解芯片:怎么一眼认出CH340G
2.1 看丝印、看封装、看晶振
拿到模块后,翻过来看芯片表面丝印。最常见的CH340G长这样:
- 丝印文字:CH340G,部分批次印成“CH340”,但芯片第一行会带“G”字样。
- 封装:SOP-16,即16个引脚,左右各8脚。
- 晶振:CH340G旁边一定有一颗12MHz晶振,通常是圆柱形的无源晶振,旁边带两个小电容。这个细节特别关键,因为我遇到过“CH340G”芯片外观很正,但晶振虚焊导致电脑无法识别。
所以最靠谱的识别流程是:先看丝印有没有“CH340G”,再看封装是不是16脚,最后找12MHz晶振。三者都对,基本可以确定就是CH340G。
新的CH340C、CH340N、CH340E等型号则把晶振集成到芯片内部,板子上找不到晶振是正常的,不要误以为买到坏的。买模块时商家如果标注“CH340C免晶振版本”,那也是一样的驱动方法,Windows下安装CH340官方驱动即可。
2.2 模块级选型:不只是芯片决定好不好用
芯片选对了,模块本身还得看几处细节。我手里十几块模块,用下来最直观的几个差异:
- 有没有自恢复保险丝和防反接二极管。保护电路齐全的模块,即使你短时间接错VCC和GND也不至于烧芯片。
- 有没有引出RTS/DTR引脚。如果你要烧录ESP32、ESP8266这些带自动下载电路的板子,模块上的RTS和DTR需要和板子配合实现一键下载。没有这两个引脚的模块,每次烧录都得手动进bootloader,非常痛苦。
- 电平跳线。有的模块支持3.3V/5V电平切换,有的固定为3.3V。给ESP系列烧录时最好用3.3V电平,给5V的Arduino系统则选5V。买之前看商品页描述,买到手后找个万用表量一下TXD引脚空载电压最稳妥。
2.3 别以为“能上电”就没问题
这里插一个常见误区:模块插到电脑上,电源灯亮了,不代表串口芯片工作正常。CH340G的数据通信和USB识别是两回事,电源灯亮只能说USB端供电正常。真正的判断标准是电脑端口列表里出现“COMx”或者系统里出现ttyUSB设备节点。拿到新模块后,建议先做一次回环测试:用杜邦线把模块的TXD和RXD短接,然后打开串口调试助手,往串口发数据,看能不能收回来。能收到,说明芯片收发链路完好,再拿去接目标板,排查起来就清爽多了。
3. Windows下驱动安装:两步搞定,但要顺序对
3.1 官方驱动的正确安装顺序
给CH340G装Windows驱动,顺序其实比版本更重要。我在多台Win10/Win11机器上实测,正确流程是:
- 先下载驱动,不要插模块。去芯片原厂官网(南京沁恒WCH的官网)找CH340/CH341的Windows驱动压缩包,解压后得到一个CH341SER.EXE文件。
- 双击运行CH341SER.EXE,先点“安装”。等待提示安装完成。
- 再把USB转串口模块插到电脑USB口。系统会自动完成新设备驱动加载。
- 打开设备管理器,展开“端口(COM和LPT)”,看到“USB-SERIAL CH340 (COMx)”字样,就算成功。
驱动包名里的“CH341SER”容易让新手误以为这是CH341的驱动,其实它同时支持CH340和CH341的串口功能。Windows下几乎不用区分CH340G、CH340C、CH340N、CH341这些变体,装这一个驱动基本通吃。
如果你已经把模块插上电脑才发现没装驱动,也没关系,运行安装程序时它会自动识别当前已连接的USB设备并完成安装。但注意,安装完成后最好拔掉模块重新插一次,让系统在新枚举过程中正确加载驱动。
3.2 Windows下常见安装失败的处理
我遇到过Windows下翻车的几种典型情况,逐个说:
- 设备管理器里显示“未知USB设备”:最常见的原因是USB线只通电不传数据。很多手机充电线的内部数据线是断的,换上确认过能传数据的线再试。
- 显示“USB-SERIAL CH340”但带黄色感叹号:多半是驱动版本太老或者和之前安装的万能驱动冲突。右键设备,选“卸载设备”,勾选“删除此设备的驱动程序软件”,然后重头来一遍官方驱动。
- 提示“CH341SER驱动预安装成功”后设备还是COM不见了:这个提示也常出现。如果预安装后黄色感叹号依旧,手动在设备管理器里更新驱动,选择“浏览我的电脑以查找驱动程序”,刚才解压的驱动目录里有CH341SER.INF文件,指向它就能强制安装。
- 出现代码43:一般是硬件层面问题,优先查晶振是否虚焊、板子供电是否稳定、换个USB口试一试。
另外,不要在设备管理器里使用“自动搜索在线驱动”,更不要装各种民间“USB转串口万能驱动”。CH340G的官方驱动本身很成熟,第三方驱动反而容易把系统里的串口设备驱动搞乱。
3.3 装好以后,还要知道COM口号
写软件、用串口调试工具,都要选对COM号。建议在设备管理器里右键CH340对应端口,进入“端口设置”,把“位/秒”调成你目标设备需要的波特率,比如115200。COM号如果特别大,可以在“高级”设置里改一个靠前的端口号,比如COM3,这样很多老软件会更容易识别。
4. macOS驱动:新系统基本免驱,老系统还是要装一下
4.1 Apple Silicon和macOS 11以上基本不用管
如果你用的是M1、M2、M3芯片的MacBook,系统版本在macOS 11或更高,那么CH340G插上后大概率直接免驱。系统里会出现类似/dev/tty.wchusbserialxxx这样的设备节点。你只需要打开终端验证一下:
ls /dev/tty.wchusbserial*能列出设备,说明驱动已经加载。直接用screen或minicom就能开串口调试:
screen /dev/tty.wchusbserial1420 115200需要注意的是,新版macOS对内核扩展(kext)的权限管得越来越严。如果是老Intel Mac加旧版macOS,安装官方驱动后通常需要到“系统设置 -> 隐私与安全性”里允许系统软件加载,否则驱动不起作用。
4.2 老系统安装与旧驱动清理
在没免驱的旧系统上,还是去WCH官网下载macOS版本的CH340/CH341驱动。安装步骤就是普通的pkg安装包,一路下一步,安装完务必重启一次。
这里重点说说“清理旧驱动”这个坑。我有一台Intel款MacBook Pro,之前装过某个版本的CH340驱动,后来又升级系统,结果全新安装的新版驱动始终不生效,串口节点就是不出来。折腾了半天,最终把系统里残留的旧kext删掉重启,问题才解决。
如果你也遇到驱动“装不上”“不生效”的情况,可以检查这两个路径下是否有旧版WCHUSB驱动:
ls /Library/Extensions/ | grep -i wch ls /System/Library/Extensions/ | grep -i wch如果有残留文件,备份后删除,重启再试。macOS的kext缓存机制偶尔会“记旧忘新”,删干净重启往往比反复重装更有效。
4.3 Mac下常用调试工具
macOS用户装完驱动以后,常用工具主要有几个:screen(系统自带)、minicom(brew安装)、CoolTerm(图形化界面)。对新手来说CoolTerm更直观,打开软件,选择对应的wchusbserial设备,设置波特率,就能看到串口数据。如果打开后没有任何输出,先排查硬件接线,再用ls /dev/tty.wchusbserial*确认设备节点在不在,节点在但没数据,优先检查目标板端的TXD/RXD是否接反。
5. Linux驱动:内核已集成,重点在权限和设备节点
5.1 Ubuntu/Debian下直接识别
Linux系统对CH340G的支持一直很好,原因是内核源码里集成了ch341驱动模块。正常情况下,模块插上电脑,用dmesg就能看到识别信息:
dmesg | tail -20或者用lsusb查看有没有这个设备:
lsusb # Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter看到1a86:7523基本上就稳了。系统同时会创建串口设备节点,一般叫/dev/ttyUSB0,CH343芯片则可能显示为/dev/ttyACM0:
ls /dev/ttyUSB*如果插上后没有节点,手动加载一次模块:
sudo modprobe ch341想确认模块是否已加载:lsmod | grep ch341。新内核一般自动加载,完全不用去官网下载驱动。
5.2 权限问题:dialout组是新手最容易卡的坑
在Ubuntu/Debian系下,普通用户访问串口设备经常提示“Permission denied”。原因是/dev/ttyUSB0归属dialout组,当前用户不在该组里。
解决办法是把用户加入dialout组,然后重新登录:
sudo usermod -a -G dialout $USER这条命令执行后,必须退出当前会话重新登录,组权限才会生效。临时验证也可以直接:
sudo chmod 666 /dev/ttyUSB0但重启后失效,只适合应急。树莓派系统也是同样的思路,不同发行版只是用户组名可能不同,CentOS/Arch下可能是uucp组,查看设备权限用ls -l /dev/ttyUSB0就知道属于哪个组。
5.3 多个设备同时插:用udev规则固定设备名
调试嵌入式设备时,我经常同时插三四块USB转串口模块,这时Linux下的/dev/ttyUSB0编号每次插入顺序都不同,写脚本或程序会非常痛苦。解决办法是写udev规则,按芯片的VID/PID甚至每块模块的序列号,固定生成一个易识别的软链接。
CH340G的VID是1a86,PID是7523。新建规则文件:
sudo nano /etc/udev/rules.d/99-usb-serial.rules内容可以这样写:
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyCH340"保存后重载规则:
sudo udevadm control --reload-rules sudo udevadm trigger再插上模块,/dev/ttyCH340就会出现,开发调试直接指向这个固定路径,不用再去猜ttyUSB几号了。这个技巧对用CH340做量产工具、多路串口采集的场景特别有用。
6. 驱动装不上?按这套思路排查(附周边设备驱动速查)
6.1 从硬件到软件的四板斧排查流程
遇到“驱动装不上”不要急着反复下载安装包,先按下面顺序排查:
- 换线换口。USB线必须是数据线,不是充电线;USB口优先选电脑后置口或直连接口,不要用扩展坞,部分廉价扩展坞会切断USB枚举信号。
- 看供电和指示。模块电源灯亮只能说明通了电,但芯片的供电电压要稳定。CH340G芯片工作电压5V,模块上常带LDO降压,如果电压异常会导致芯片不枚举。有条件就量一下芯片VCC引脚对GND电压。
- 看系统日志。Linux下用
dmesg,Windows下打开设备管理器看设备状态栏提示,有代码43、代码10这类信息,多半已经枚举失败,是硬件问题而非驱动问题。 - 确认VID/PID。Linux下用
lsusb、Windows下用设备管理器详细信息里的硬件ID,看是否存在VID_1A86。如果枚举出来的VID不是1A86,说明模块里的芯片可能不是CH340,而是其他兼容芯片,需要找对应的驱动。
6.2 同类USB设备驱动问题速查
玩嵌入式时,大家遇到的不只是CH340,还经常碰到ST-Link调试器、J-Link仿真器、WCH-Link、周立功CAN盒、FT232等设备的驱动问题。它们的排查思路本质是一样的:
| 设备/芯片 | 典型现象 | 解决方向 |
|---|---|---|
| ST-Link | 插上后设备管理器出现未知设备 | 安装官方STM32 ST-LINK Utility或STM32CubeProgrammer自带驱动,关闭驱动签名强制校验 |
| J-Link | 不能连接,固件版本提示升级失败 | 装官方J-Link驱动包,多版本并存时卸载干净再装新版本 |
| FT232R | Windows下一片黄色感叹号 | 去FTDI官网下载最新VCP驱动,老系统优先,并在设备管理器里强制更新 |
| CP2102 | 插上后无反应 | 装Silicon Labs官方VCP驱动,macOS/Linux新版系统基本免驱 |
| WCH-Link | 无法识别,或只显示串口不显示调试器 | 安装WCH对应调试器驱动,检查固件版本是否过旧 |
| 周立功CAN盒 | 软件打不开设备 | 先装CAN盒配套驱动,再装应用软件,顺序不能反 |
| CH341编程器 | 驱动装好但编程软件提示未连接 | 确认编程器确实是CH341方案,检查芯片型号丝印和USB枚举PID |
这个速查表的重点不是背下每个驱动下载地址,而是养成看系统设备枚举状态的习惯:设备管理器里不出现任何新硬件,大概率是硬件/USB枚举层问题;出现了设备但状态异常,才有可能是驱动问题。这个判断方向清晰了,故障就解决了一半。
6.3 关于“免驱”的理解误区
很多朋友问“不是免驱吗,为什么还要装驱动?”其实“免驱”指的是操作系统已经内置了驱动,不需要你手动安装,但设备插入时系统后台还是会加载对应内核或驱动文件的。CH340G在macOS和Linux下之所以免驱,是因为这两个系统内核里已经集成了ch341驱动;Windows则没有集成,所以要单独装。这不是芯片的问题,是操作系统驱动策略的差异。
如果你在Linux下看到cdc_acm模块被加载,或者Mac下设备名带usbserial,说明系统已经在正常工作了。同理,网络上有人问“CDC ECM需要安装驱动吗”,这里的CDC ECM是USB类网络接口,和CH340的USB转串口是两回事,但“免驱”的原理一致:系统内置对应驱动类,插上识别,没识别就去查枚举和内核模块,方向完全相同。
写在最后:一个小习惯,省掉半个小时的排查
踩坑这么多年,我现在拿到任何USB转串口模块,都先做一件事:回环测试。杜邦线把TXD和RXD短接,电脑上打开串口工具发一串字符,能收到说明模块正常,再去接目标设备。
这个习惯尤其适合刚入门的朋友。很多烧录失败、控制台乱码的问题,最后查出来都是模块本身坏了,或者杜邦线接触不良。先把链路最小化验证到位,再往上联调,你会省下大把时间。CH340G本身是一款皮实耐用的芯片,驱动装过一次后基本不会再出问题,真正需要小心的反而是模块用料、接线顺序这些不起眼的细节。如果你按上面的步骤走到最后还是没解决,不妨发一下设备枚举截图和dmesg日志,问题往往就藏在那些你不在意的输出里。