
1. 为什么CH340/CH341驱动值得单独写一篇安装指南搞嵌入式和单片机开发的人手里大概率都躺着几块十几块钱的USB转串口小板子。不管是ESP32、STM32、Arduino Nano还是各种开发板的调试口背后那颗芯片十有八九就是CH340或者CH341。这两个型号是沁恒微电子的经典产品价格便宜、外围电路简单几乎成了USB转TTL串口的代名词。但便宜归便宜驱动这件事在Windows上一直是个老大难。Win10和Win11虽然自带了一部分串口驱动可面对市面上五花八门的CH340模块系统自动识别的成功率并不稳定。我见过太多人插上模块后设备管理器里出现一个带黄色感叹号的“USB2.0-Serial”然后就开始满世界找驱动。更麻烦的是网上流传的驱动包版本混乱有些是2014年的老版本装上去在Win11上直接蓝屏有些是第三方打包的夹带了一堆不需要的东西。这篇文章就是把我这些年装CH340/CH341驱动的经验整理出来。三种安装方案从简到繁覆盖Win10和Win11两个系统每一种我都实际跑过。同时会把兼容性测试的结果、常见坑点和排查思路一并说清楚。不管你是刚入门的新手还是换了新电脑要重新配环境的老手照着做基本都能搞定。2. 先搞清楚你手里的是CH340还是CH3412.1 两个型号的区别与识别方法很多人把CH340和CH341混着叫实际上它们是两个不同的芯片系列。CH340是纯USB转串口芯片功能单一就是把你电脑的USB口虚拟成一个COM口。CH341则是一个多功能桥接芯片除了串口功能外还支持并口、I2C、SPI等模式通过不同的配置可以切换工作状态。对于驱动安装来说好消息是沁恒官方把这两个型号的驱动合并在同一个驱动包里了。你下载一个CH341SER驱动CH340和CH341都能用。所以实际安装时不需要纠结到底是哪个型号装同一个驱动就行。那怎么确认自己手里模块用的是哪个芯片最直接的办法是看模块上的晶振和芯片丝印。CH340通常配12MHz晶振芯片本体比较小SOP-16封装居多。CH341芯片稍大一些SOP-28封装功能引脚更多。不过现在很多廉价模块用的是CH340N或者CH340C这类免晶振版本芯片上直接印着“CH340N”字样这种也是装同一个驱动。注意市面上有些模块标称CH340但实际用的是其他厂商的兼容芯片比如某些国产替代品。这类芯片用官方CH341SER驱动可能识别不了需要单独找对应驱动。判断方法是看设备管理器里的硬件ID如果VID不是1A86那基本可以确定不是原厂芯片。2.2 设备管理器里的正确识别姿势插上模块之前先打开设备管理器。Win10和Win11的操作方式略有不同Win10右键“此电脑”选“管理”就能找到Win11需要右键“开始”按钮再选“设备管理器”。把模块插到USB口上观察设备管理器里有没有新设备出现。如果驱动正常你会在“端口COM和LPT”分类下看到一个“USB-SERIAL CH340COMx”的设备COMx就是系统分配的端口号。如果驱动没装好设备会出现在“其他设备”分类下显示为“USB2.0-Serial”或者“未知设备”前面带一个黄色感叹号。这里有个细节值得注意Win11的设备管理器默认会隐藏一些空分类。如果你插上模块后什么都没看到可以在菜单栏点“查看”勾选“显示隐藏的设备”有时候设备会被归到隐藏分类里。还有一种情况是模块插上后电脑完全没反应设备管理器里连未知设备都不出现。这通常不是驱动问题而是硬件层面的问题——可能是USB线只供电不传数据也可能是模块本身坏了。换一根确认能传数据的USB线再试如果还是没反应基本可以判断模块有问题。3. 方案一Windows自动更新安装最省事但看运气3.1 操作步骤与适用场景这是最简单的方案适合手头模块是近期购买的、芯片较新的情况。操作就一步插上模块等Windows自己装驱动。Win10和Win11都内置了Windows Update驱动库里面确实有CH340的驱动。但能不能自动装上取决于几个因素系统版本、是否开启了自动更新、以及微软驱动库的版本是否匹配你的芯片。实测下来Win10 21H2之后的版本和Win11 22H2之后的版本自动识别CH340的成功率大概在六成左右。新买的模块成功率更高因为芯片版本较新硬件ID在微软驱动库里有记录。老模块或者某些批次的芯片系统可能认不出来。3.2 自动安装失败的典型表现自动安装失败时设备管理器里会出现一个带感叹号的“USB2.0-Serial”。右键查看属性在“设备状态”里会显示“该设备的驱动程序未被安装代码28”或者“此设备无法启动代码10”。代码28意味着系统根本没找到匹配的驱动代码10则说明驱动装了但启动失败通常是驱动版本和系统不兼容。这两种情况都需要手动介入。实操心得如果你用的是Win11自动更新有时候会装上一个2019年版本的CH340驱动。这个版本在大部分场景下能用但如果你用的是CH340N这类免晶振芯片可能会遇到串口打开后无法正常收发数据的问题。遇到这种情况直接换方案二的手动安装用最新版驱动覆盖掉。4. 方案二官方驱动手动安装推荐方案4.1 驱动下载与版本选择沁恒官网wch.cn提供CH341SER驱动下载这是最可靠的来源。截至我写这篇文章时最新版本是3.8.2023.2发布日期2023年初。这个版本对Win11的兼容性最好也支持Win10的所有版本。下载页面在沁恒官网的“下载中心”里搜索“CH341SER”就能找到。下载下来是一个ZIP压缩包解压后里面有SETUP.EXE安装程序也有各个系统对应的INF文件。如果你不想去官网找也可以在一些正规的电子论坛下载但一定要核对文件哈希值。我见过有人从不明来源下载的驱动包里被塞了挖矿程序装完电脑风扇狂转。所以驱动这种东西尽量从官方渠道拿。4.2 详细安装步骤解压驱动包后右键SETUP.EXE选择“以管理员身份运行”。安装程序界面很简洁点击“安装”按钮就行。安装过程大概十几秒完成后会提示“驱动预安装成功”。这里有个关键点安装程序只是把驱动文件复制到系统目录并注册并不会立即给已经插上的设备安装驱动。所以正确的顺序是先运行安装程序再插上模块。如果你已经插着模块安装完成后需要在设备管理器里手动更新驱动。手动更新的操作是在设备管理器里右键那个带感叹号的设备选“更新驱动程序”然后选“浏览我的电脑以查找驱动程序”指向驱动解压后的文件夹。系统会自动搜索匹配的INF文件并安装。安装成功后设备管理器里会出现“USB-SERIAL CH340COMx”黄色感叹号消失。你可以右键属性在“端口设置”里看到波特率、数据位、停止位等参数默认是9600-8-N-1。4.3 安装后的验证方法驱动装好了不代表就能正常通信还需要验证一下。最简单的办法是用串口调试助手打开对应的COM口然后短接模块的TX和RX引脚发送数据看能不能收到回显。如果能收到说明驱动和硬件都正常。另一个验证方法是看设备管理器里的端口号。每次插拔模块系统可能会分配不同的COM号。如果你在代码里写死了COM3换一个USB口插可能就变成COM5了程序就会报“端口拒绝访问”或者“找不到端口”。所以写代码时最好动态枚举串口或者每次插拔后确认一下端口号。注意有些CH340模块的TX和RX丝印是反的或者板子上标的是相对MCU的TX/RX而不是相对USB的。短接测试时如果收不到回显先确认一下引脚定义别急着怀疑驱动。5. 方案三INF文件手动指定安装解决疑难杂症5.1 什么情况下需要用到这个方案方案二能解决九成以上的驱动问题但有些特殊情况需要更精细的操作。比如系统是精简版Win10或Win11缺少某些系统组件SETUP.EXE运行报错公司电脑有驱动签名强制策略安装程序被拦截模块的硬件ID不在官方INF文件的匹配列表里需要给多个不同型号的CH340模块装驱动但不想每次都跑安装程序这些情况下直接手动指定INF文件安装是最稳妥的办法。5.2 手动指定INF的完整流程首先找到驱动包里的INF文件。CH341SER驱动包里通常有多个INF对应不同系统版本。Win10和Win11用CH341SER.INF就行。在设备管理器里右键未知设备选“更新驱动程序”然后选“浏览我的电脑以查找驱动程序”再选“让我从计算机上的可用驱动程序列表中选取”。这一步很关键不要直接指向文件夹而是要走“从列表选取”的路径。在列表页面点“从磁盘安装”然后浏览到INF文件所在位置。系统会读取INF里的硬件ID列表如果匹配成功就会列出可安装的驱动。选中后点下一步系统会开始安装。过程中可能会弹出Windows安全提示说驱动未签名或者签名无法验证选择“仍然安装”即可。安装完成后同样在设备管理器里确认端口是否出现。如果还是不行可能需要检查INF文件里的硬件ID是否和你的设备匹配。在设备属性里的“详细信息”选项卡选择“硬件ID”看看显示的VID和PID是什么。官方CH340的VID是1A86PID是7523或5523。如果对不上就需要手动修改INF文件把对应的硬件ID加进去。5.3 修改INF文件适配非标设备修改INF文件需要一点耐心。用记事本打开CH341SER.INF找到[Models]段或者[Manufacturer]段里面列出了支持的硬件ID。格式大概是这样的%CH340% CH340, USB\VID_1A86PID_7523如果你设备的硬件ID是USB\VID_1A86PID_5523但列表里没有这一行就手动加一行进去。保存后重新走一遍手动指定INF的流程。实操心得修改INF文件前先备份原文件。另外Win11对驱动签名要求更严修改过的INF文件安装时可能会被直接拒绝。这时候需要临时关闭驱动签名强制具体方法是在“设置”里搜索“恢复”然后选“高级启动”重启后按提示进入“禁用驱动程序强制签名”模式。这个操作有安全风险只建议在确认驱动来源可靠的情况下使用。6. Win10与Win11兼容性实测对比6.1 测试环境与测试方法为了写这篇文章我在三台机器上做了实测机器AWin10 22H2专业版Intel i5-10400USB 3.0接口机器BWin11 23H2家庭版AMD Ryzen 5 5600USB 3.2接口机器CWin11 24H2专业版预览版Intel i7-12700USB 3.2接口测试用的模块有四种CH340G带晶振版、CH340N免晶振版、CH341A多功能版、以及一个不知名兼容芯片模块。每种模块在每台机器上分别测试三种安装方案记录成功率和遇到的问题。6.2 实测结果汇总模块型号系统自动更新官方安装INF手动备注CH340GWin10 22H2成功成功成功自动更新装的是2019版驱动CH340GWin11 23H2成功成功成功无异常CH340NWin10 22H2失败成功成功自动更新无法识别CH340NWin11 23H2失败成功成功需用最新版驱动CH341AWin10 22H2成功成功成功串口模式正常CH341AWin11 23H2成功成功成功无异常兼容芯片Win10 22H2失败失败需改INFVID非1A86兼容芯片Win11 23H2失败失败需改INF签名拦截需临时禁用从结果看官方安装方案的成功率最高三种原厂芯片模块全部通过。自动更新对CH340N的支持明显不足这跟芯片较新、微软驱动库更新滞后有关。兼容芯片模块需要改INF文件而且Win11下还有签名拦截的问题。6.3 Win11特有的兼容性注意事项Win11相比Win10在驱动安装上有几个明显变化。首先是驱动签名强制更严格未签名的驱动默认装不上。其次是设备管理器的界面调整有些选项藏得更深。另外Win11的Windows Update驱动库更新频率似乎比Win10低新硬件识别速度慢一些。还有一个容易被忽略的点Win11的“内存完整性”功能在“核心隔离”设置里有时候会阻止某些老驱动加载。如果你装完驱动后设备管理器里显示代码10或代码52可以试试临时关闭内存完整性再装一次。注意关闭内存完整性会降低系统安全性装完驱动后建议重新打开。如果驱动在开启内存完整性的情况下无法工作那说明驱动本身和Win11的虚拟化安全机制有冲突这种情况建议换用最新版官方驱动。7. 常见问题排查与避坑指南7.1 端口拒绝访问与重连问题“程序连接串口成功CH340驱动正常程序串口端口后重连出现端口拒绝访问”——这个问题在热词里出现了说明很多人遇到过。典型场景是串口调试助手打开COM口正常关闭后再次打开就报“拒绝访问”。这个问题的根源通常是上一个程序没有完全释放串口句柄。Windows的串口是独占资源一个程序打开后另一个程序就不能再打开。即使前一个程序已经关闭如果进程没有完全退出句柄可能还被占用。解决办法有几个一是确认所有可能占用串口的程序都关掉了包括后台运行的调试工具、IDE的串口监视器等。二是在设备管理器里禁用再启用该端口强制释放句柄。三是重启电脑这是最彻底的办法。如果频繁遇到这个问题可以在代码里加异常处理打开串口失败时自动重试几次。7.2 Mixly等图形化工具找不到CH340端口Mixly、Mind这类图形化编程工具找不到CH340端口通常不是驱动问题而是工具本身的串口枚举机制有缺陷。这些工具很多是基于Java或Electron开发的串口库对某些USB转串口芯片的支持不完善。排查思路是先用系统自带的串口调试助手确认COM口能正常打开。如果系统工具能用但Mixly找不到那就是工具的问题。可以试试更新Mixly到最新版或者在工具设置里手动指定串口。有些版本的Mixly需要把串口库文件替换成最新版才能识别CH340。7.3 虚拟机环境下的驱动安装在VMware或VirtualBox里装Win10/Win11然后要在虚拟机里用CH340模块需要额外注意USB设备直通的问题。默认情况下插在宿主机上的USB设备不会自动连接到虚拟机需要在虚拟机软件的USB设置里手动把设备分配给虚拟机。VMware的操作是虚拟机运行状态下点菜单栏的“虚拟机”-“可移动设备”找到CH340设备选“连接”。VirtualBox类似在设备菜单里选USB设备。连接后虚拟机里会识别到新硬件然后按前面的方案装驱动就行。实操心得虚拟机里装CH340驱动有个坑——如果宿主机已经装了驱动并占用了设备虚拟机可能抢不过来。解决办法是在宿主机上先卸载驱动或者在虚拟机设置里把USB控制器版本调成和宿主机一致。另外虚拟机里串口通信的实时性不如物理机高波特率下可能丢数据调试时建议用115200以下的波特率。7.4 常见问题速查表现象可能原因解决方法设备管理器无反应USB线只供电不传数据换数据线显示未知设备代码28驱动未安装按方案二安装官方驱动显示代码10驱动版本不兼容换最新版驱动关闭内存完整性串口打开报拒绝访问句柄被占用关闭占用程序禁用再启用端口能打开但收不到数据TX/RX接反或波特率不对检查接线和波特率设置Win11安装被拦截驱动签名强制用官方签名驱动或临时禁用签名强制虚拟机识别不到USB未直通在虚拟机USB设置里连接设备8. 驱动装好之后还能做什么驱动装好只是第一步后面还有不少可以折腾的地方。比如你可以用CH340模块给ESP32或STM32烧录程序这时候需要注意模块的DTR和RTS引脚。很多开发板用这两个引脚来自动控制复位和进入下载模式如果模块上没有引出这两个引脚就需要手动按复位键。CH340的RTS电平控制也是个常见需求。有些场景下需要用RTS引脚输出高低电平来控制外部电路比如继电器或者复位信号。在串口调试助手里通常有RTS和DTR的勾选框勾上就是拉低取消就是拉高。如果要在代码里控制Windows下可以用EscapeCommFunction函数Linux下可以用ioctl的TIOCMBIS和TIOCMBIC命令。在Linux系统下CH340驱动是内核自带的插上就能用设备节点通常是/dev/ttyUSB0。用Putty或者minicom连接时注意权限问题普通用户可能需要加到dialout组里才能访问串口设备。最后说一个我踩过的坑有些CH340模块在Win11下装好驱动后设备管理器显示正常但实际通信时每隔几分钟就断一次。后来发现是USB选择性暂停设置导致的。在“电源选项”里把“USB设置”下的“USB选择性暂停设置”改成“已禁用”问题就解决了。这个设置默认是开启的目的是省电但对串口通信的稳定性有影响。