从零搭建CH340 USB转串口电路:实战全解析(工程师手记)
你有没有遇到过这样的场景?
手里的STM32最小系统板、ESP8266模块或者自制的嵌入式小板子,明明程序写好了,却没法下载、看不到打印日志——因为电脑没有串口。
别急,这其实是每个嵌入式开发者都会踩的第一个“坑”:如何让只有USB接口的PC,和基于UART通信的MCU对话?
答案就是:加一个USB转串口芯片。
而在这条路上,CH340几乎是绕不开的名字。它便宜、好用、资料多,是国产芯片在接口领域成功突围的代表作之一。今天我就带你从原理到焊接,一步步实现完整的USB转TTL串口设计,不跳步,不省略,连晶振怎么放都给你讲清楚。
为什么是CH340?它到底解决了什么问题?
我们先回到最原始的问题:MCU之间喜欢用UART通信,因为它简单、占用资源少,两根线(TX/RX)就能传数据。但现代PC早就淘汰了DB9那种老式串口,现在全是USB。
那能不能直接把MCU接到USB口上?
不行。因为USB不是简单的“两根数据线”,它有一套复杂的协议栈——设备枚举、配置描述符、端点管理……这些都不是普通MCU能轻松处理的。
于是就有了“桥接芯片”的概念:我来替你搞定USB协议,你只管收发串口数据就行。
CH340正是这样一个角色。它的本质是一个集成USB设备控制器 + UART逻辑引擎的单芯片解决方案。当你把CH340插进电脑时,操作系统会识别出一个“虚拟COM端口”(VCP),就像以前的老串口一样。然后你用串口助手发个字节,这个数据就会通过USB传给CH340,再由它以TTL电平的形式送给你的MCU。
一句话总结:CH340 = USB ↔ UART 的翻译官。
CH340是怎么工作的?拆开看看内部结构
很多人以为CH340只是个“信号转换器”,其实它内部相当复杂。我们可以把它拆成几个核心模块来看:
1. USB设备控制器(支持全速12Mbps)
- 符合USB 2.0规范;
- 支持CDC类(Communication Device Class),这是实现虚拟串口的关键;
- 插入电脑后会被识别为标准串行设备,无需自定义驱动(除非厂商改VID/PID);
2. PLL锁相环与时钟系统
- 外部接一个12MHz晶振(CH340G),内部通过PLL倍频生成所需时钟;
- 精确的时钟保障USB通信稳定,也用于生成各种波特率(如115200、921600等);
⚠️ 注意:虽然标称最高波特率可达3Mbps,但在实际应用中建议不超过2Mbps,否则容易丢包。
3. UART引擎
- 自动处理起始位、停止位、奇偶校验;
- 支持常见波特率设置,无需手动计算分频系数;
- 提供TXD、RXD、RTS、DTR等标准串口信号线(部分型号支持完整握手);
4. 电平适配与电源管理
- VCC可接5V或3.3V,输出也为对应TTL电平;
- 内置上电复位电路,减少外围元件;
- U3V3引脚可输出3.3V/50mA,可用于给小负载供电(比如外接传感器偏置);
也就是说,你不需要额外做电平转换,只要确保CH340的供电电压和目标MCU的IO电压一致即可。
对比一下:CH340 vs FT232 vs CP2102 值得选吗?
| 特性 | CH340 | FT232RL (FTDI) | CP2102N (Silicon Labs) |
|---|---|---|---|
| 单价(批量) | <¥5 | ~¥20 | ~¥15 |
| 驱动是否免费 | 是 | 官方提供,但有授权限制 | 是 |
| 是否需外接晶振 | CH340G需,CH340C免 | 否 | 否 |
| 抗干扰能力 | 一般 | 强 | 中等 |
| 国产化程度 | ✅ 完全国产 | ❌ 英国品牌 | ❌ 美国品牌 |
| 典型应用场景 | 教学板、量产产品 | 工业设备、高可靠性场合 | 消费电子、智能家居 |
结论很明确:如果你做的是学习板、原型验证、低成本量产项目,CH340完全够用且极具性价比。尤其是在当前强调供应链安全的大背景下,选择CH340这类国产方案也越来越成为主流趋势。
动手实践:画一块能用的CH340电路板
接下来我们进入硬核环节——硬件设计细节。我会告诉你每颗元件的作用,以及为什么必须这么接。
推荐型号:CH340G 还是 CH340C?
- CH340G:需要外接12MHz晶振和两个22pF负载电容,适合对成本极度敏感的设计;
- CH340C:内置晶振,封装更小(SSOP-20),布线更简洁,推荐新手优先选用;
📌 实战建议:首次设计建议用CH340G,调试方便;成熟产品可用CH340C节省空间。
最简外围电路清单(以CH340G为例)
| 元件 | 参数 | 数量 | 作用说明 |
|---|---|---|---|
| CH340G | SSOP-20 | 1 | 核心转换芯片 |
| 晶体 | 12MHz ±50ppm | 1 | 主时钟源 |
| 贴片电容 | 22pF | 2 | 匹配偶晶体起振 |
| 退耦电容 | 0.1μF | 2 | 滤除VCC噪声(靠近VCC和U3V3) |
| TVS二极管 | SMAJ5.0A | 2 | D+、D-防静电保护 |
| 自恢复保险丝 | 500mA | 1(可选) | USB过流保护 |
🔔 特别提醒:若使用CH340C,则不需要晶振和22pF电容!
关键引脚连接说明(必看!)
| CH340引脚 | 接法 | 注意事项 |
|---|---|---|
| VCC | 接5V或3.3V | 必须与MCU工作电压匹配 |
| GND | 所有地共接 | 严禁浮空 |
| TXD | → MCU的RX | 发送数据给MCU |
| RXD | ← MCU的TX | 接收MCU发来的数据 |
| D+ / D- | → USB插座 | 差分走线尽量等长、远离干扰源 |
| RTS | 可悬空或接MCU复位 | 用于自动下载功能 |
| U3V3 | 输出3.3V | 若已有外部稳压源,请勿启用,防止倒灌 |
⚠️ 设计雷区预警:
- D+/D-走线不对称→ 导致USB枚举失败;
- 晶振没靠近芯片→ 起振困难,通信不稳定;
- U3V3带载过大→ 芯片发热甚至损坏;
- 未做ESD防护→ 插拔时易击穿D+/D-引脚;
💡 小技巧:在PCB布局时,将CH340放在靠近USB接口的位置,缩短D+/D-走线长度,降低高频干扰风险。
Windows下驱动安装全过程(含避坑指南)
很多初学者卡在第一步:插上去电脑不认!
别慌,这是因为Windows不认识CH340的PID/VID组合,需要手动装驱动。
正确操作流程如下:
去官网下载正版驱动
- 地址: http://www.wch.cn
- 下载文件名为CH341SER.EXE的驱动安装包(尽管叫CH341,但兼容CH340系列)运行安装程序
- 右键以管理员身份运行;
- 安装过程中可能会弹窗提示“未签名驱动”,特别是在Win10/Win11上;关闭驱动强制签名(临时方法)
- 设置 → 更新与安全 → 恢复 → 高级启动 → 立即重启;
- 进入“疑难解答”→“启动设置”→按F7选择“禁用驱动程序强制签名”;
- 重启后再次插入CH340模块,系统将允许加载驱动;检查设备管理器
- 打开“设备管理器” → 查看“端口(COM与LPT)”;
- 成功识别后会出现类似:“USB Serial Port (COM4)”;
- 记下分配的COM号,后续调试要用。
✅ 验证成功标志:能看到COM口,且无黄色感叹号!
💡 进阶技巧:可通过修改注册表固定COM端口号,避免每次插拔变来变去影响串口工具配置。
实测通信:用PuTTY验证双向收发
现在硬件有了,驱动也装了,该测试了。
准备工作:
- 上位机软件:推荐使用XCOM或SSCOM(中文界面友好)、PuTTY(跨平台);
- 下位机程序:让STM32或ESP32周期性发送
"Hello from MCU!\r\n";
测试步骤:
- 将CH340模块插入PC USB口;
- 打开串口助手,选择对应的COM口(如COM4);
- 设置参数:波特率115200、数据位8、停止位1、无校验、无流控;
- 点击“打开串口”;
- 观察是否收到MCU发来的信息;
- 在发送框输入任意字符并发送,查看MCU是否有响应(如LED闪烁、回传数据);
如果两边都能通,恭喜你!整个USB转串口链路已经打通!
高阶玩法:一键下载电路怎么做?
你知道为什么开发板一点击“下载”,就能自动复位并进入ISP模式吗?秘密就藏在RTS信号控制里。
利用CH340的RTS引脚,可以构建一套“自动下载电路”,省去手动按复位+BOOT按键的麻烦。
经典应用(适用于STM32系列)
CH340(RTS) ──┬──→ BOOT0 (上拉电阻) └──→ 10kΩ ──→ Reset (NRST) │ 100nF │ GND工作逻辑详解:
- 初始状态:RTS高电平 → Reset脚通过RC延时保持低电平复位;
- 下载开始前:RTS拉低 → Reset立即拉低(复位MCU);
- 同时BOOT0被拉高 → MCU从系统存储器启动(即Bootloader);
- 上位机开始发送固件;
- 下载完成后:RTS恢复高电平 → Reset经RC充电后释放 → MCU跳转至用户Flash运行新程序;
这套机制被广泛应用于各类最小系统板中,极大提升开发效率。
🧪 实践建议:RC时间常数建议取约10ms(10kΩ + 100nF),确保复位充分。
Linux和macOS也能用吗?当然!
Linux平台:基本免驱!
大多数主流发行版(Ubuntu、Debian、CentOS等)内核早已内置ch341驱动模块:
# 检查驱动是否加载 lsmod | grep ch341 # 查看设备节点 dmesg | grep tty # 输出示例:usb 1-1: ch341-uart converter now attached to ttyUSB0插入即识别为/dev/ttyUSB0,权限允许下可直接使用minicom、screen等工具通信:
screen /dev/ttyUSB0 115200非常适合自动化测试、树莓派项目、CI/CD环境。
macOS:有点小麻烦
从macOS 10.12开始,苹果加强了驱动签名要求,导致官方CH340驱动无法加载。
解决办法有两个:
1. 使用社区维护的开源驱动: https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver
2. 或者干脆换用CP2102模块,原生支持macOS,体验更好;
💬 个人建议:Mac用户优先考虑CP2102,除非预算非常紧张。
实际应用场景盘点:不只是用来烧程序
你以为CH340只能当个“下载器”?太小看它了。以下是几个典型用途:
场景一:传感器数据实时上传
连接DHT11、BH1750等传感器到MCU,通过CH340将温湿度、光照强度等数据上传至上位机Python脚本,绘制成曲线图,打造低成本物联网前端。
场景二:工业HMI通信
在PLC或触摸屏控制系统中,CH340作为Modbus RTU主站/从站的USB接入点,实现与工控主机的数据交互。
场景三:远程调试与日志抓取
现场设备出现问题?接个CH340模块,把运行日志实时传回PC分析,比靠LED闪几下高效多了。
场景四:自制USB转RS485/RS232模块
在CH340后面加上MAX3485或MAX232芯片,就能做出专用工业通信转换器,成本不到成品模块的一半。
最后几句掏心窝的话
作为一个做过无数块开发板的老工程师,我想说:掌握CH340的应用,是你迈向独立设计的第一步。
它看似不起眼,却是连接数字世界两端的“隐形桥梁”。你写的每一行代码,看到的每一个log,背后可能都有CH340在默默工作。
更重要的是,通过研究CH340,你会理解:
- USB设备是如何被枚举的?
- CDC类驱动是怎么工作的?
- 波特率是怎么生成的?
- 电平匹配为何如此关键?
这些问题的答案,构成了嵌入式系统底层知识体系的重要拼图。
未来随着RISC-V生态崛起、国产MCU全面开花,像CH340这样自主可控的接口芯片,只会越来越重要。也许有一天,你会亲手设计一款“CH340 Pro”,支持Type-C、PD快充、双通道UART……
技术之路,始于足下。而今天这一块小小的转接板,或许就是你梦想的起点。
如果你正在做自己的电路板,欢迎在评论区贴出你的CH340原理图,我们一起 review!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考