简介:这套CH340G USB转TTL原理图与PCB设计文件,面向嵌入式开发者和电子爱好者,可直接打板,适合自制USB转串口模块、连接单片机调试下载,以及对接上位机串口通信等场景。资源包共7个文件,包含原理图、PCB文档、预览文件与zip归档,整体约11.23MB,原理图与PCB均为可编辑设计源文件,预览文件便于快速查阅连接关系,zip归档则方便整体存取与移动。目前已有6664人学习下载,实用性与可靠性得到了不少开发者的验证。设计围绕CH340G典型电路展开,覆盖USB接口、TTL电平转换、电源供电与ESD保护等关键单元,PCB布局也兼顾走线规则、电源噪声和电磁兼容性,可减少打样时常见的信号完整性与接地干扰问题。对照原理图与PCB,读者既能直接投产制板,也能通过完整工程文件理解CH340G的设计要点,为二次开发、模块复用和快速原型节省大量时间。
1. 需求背景:这块CH340G打板原理图要解决什么
第一次自己画“CH340G USB转TTL原理图”的同学,通常不是不知道芯片脚位,而是被“还得加哪些外围”卡住:为什么别人的方案里多了个V3电容,为什么晶振要摆在芯片旁边,为什么USB座的两根数据线要成对走线。A同学做单片机下载器,从现成模块改成自绘打板,第一版打样回来插上电脑就是“未知USB设备”。问题不在芯片,在于原理图少了退耦、晶振走线绕远、UD+/UD-两脚前后差了几厘米。这套方案把CH340G打板原理图拆成设计、实现、验收三段:先讲清最小系统要哪些元件,再给出能直接落到EDA里的布局布线规则,最后用回环测试脚本确认板子可用。适合正在做课设、毕设时需要USB转TTL下载或调试功能,又不想照抄现成模块电路的人。
2. 方案设计:CH340G最小系统的电源、晶振与信号链路
2.1 芯片选型:为什么打板首选CH340G而不是内置晶振版本
CH340G是USB转TTL方案里非常常见的一颗芯片。选型时很多人只看“引脚越少越好”,但在打板这个场景里,“好不好焊”往往比“少两个元件”更关键。CH340G是SOIC-16封装,引脚间距大约1.27mm,手工焊接容错率高,焊坏了用烙铁也能拖下来换新。相比之下,内置晶振的CH340C少了两颗晶振电容,但封装更紧凑,价格也略高;CH340N这类小封装虽然省面积,但对焊接温度和锡量控制要求更高,焊偏一脚就容易连锡。
我一般会建议第一次打板的人选CH340G,理由很实际:板子面积多出来的那几平方毫米,换来的是焊接和调试的容错空间。CH340G关键引脚的功能比较固定,原理图里需要重点处理的也就是电源、晶振、USB差分对和串口四组网络。先把这四组网络理清楚,后面画原理图基本不会跑偏。
| 网络 | 方向 | 作用 |
|---|---|---|
| VCC | 输入 | 芯片供电,5V或3.3V,需要退耦电容 |
| V3 | 退耦 | 内部3.3V稳压退耦脚,接0.1uF电容到GND |
| XI / XO | 输入/输出 | 外接12MHz晶振,配合负载电容构成时钟 |
| UD+ / UD- | USB | USB数据线,接USB座的D+/D- |
| TXD / RXD | 输出/输入 | 串口发送与接收,交叉连接目标板 |
| GND | 电源地 | 与USB座、目标板共地 |
2.2 电源设计:V3脚退耦与3.3V目标板的电平匹配
CH340G的VCC可以接5V,也可以接3.3V。很多人第一次画这块板子时,容易把V3脚当成“3.3V输出”拿去给目标板供电,这是最典型的翻车点之一。V3是内部稳压器的退耦脚,它对外提供的是稳定内部逻辑用的3.3V参考,不是设计来带外部负载的。正确做法是:VCC按5V供电时,V3接0.1uF电容到GND;VCC按3.3V供电时,V3与VCC直接相连,同时也要接0.1uF退耦电容。
电源部分还要考虑目标板的电平。CH340G的串口IO电平与芯片供电相关,如果目标单片机是3.3V系统,直接在5V供电下接串口,虽然很多场景下能跑通,但对过压敏感的芯片存在隐患。稳妥做法是把CH340G的VCC也接到3.3V,或者中间加一个电平转换电路。A同学后来把方案改成3.3V统一供电,下载程序再也没出现乱码和偶发烧引脚的问题。
最小系统的电源接入清单并不复杂,按下面这张表接就行:
| 编号 | 元件 | 接入位置 | 说明 |
|---|---|---|---|
| C1 | 10uF 电解电容 | VCC到GND | 电源主滤波,靠近USB座入口 |
| C2 | 0.1uF 陶瓷电容 | VCC到GND | 高频退耦,靠近芯片VCC脚 |
| C3 | 0.1uF 陶瓷电容 | V3到GND | V3退耦,必须靠近V3脚 |
| U1 | CH340G | - | 主控芯片,SOIC-16 |
| Y1 | 12MHz 晶振 | XI到XO | 无源晶振,配合C4/C5 |
| C4/C5 | 20pF 陶瓷电容 | XI、XO分别到GND | 负载电容,按晶振规格调整 |
| R1/R2 | 22Ω 电阻 | UD+/UD-串联 | 限制USB信号边沿,可选但推荐 |
| J1 | Micro-USB座 | USB总线 | D+/D-接R1/R2后连UD+/UD- |
| J2 | 2.54mm排针 | TXD/RXD/GND/VCC | 连接目标板串口 |
2.3 晶振与USB信号链路:12MHz晶振及D+/D-的网络处理
CH340G必须外接12MHz无源晶振,这是它和内置晶振版本最大的差别。晶振电路设计时,负载电容不是随便选的,要按晶振规格书标称的负载电容来配。常见12MHz晶振的负载电容是20pF,也有15pF的规格,直接决定起振是否可靠。如果电容配得偏差太大,可能表现为“上电能识别,但收发偶尔乱码”,看起来像软件问题,实际是时钟不准。
晶振的布局比容值更容易被忽略。XI/XO走线必须短,晶振本体要紧贴芯片放置,两条走线尽量等长对称,走线下方铺地,但不要在晶振区域穿过其他信号线。之前见过一块板子,晶振放在板边,走线绕了半圈,结果通信速率一高就丢数据。USB那一侧的UD+/UD-走线也很关键,全速12Mbps对差分阻抗不算苛刻,但要求两条线从芯片到USB座尽量平行、等长、少过孔。多数打样板的双层板工艺都能满足,关键是别把两根线分开走,中间夹着一堆过孔。
注意:如果USB座用Type-C,还需要在CC1/CC2上各接一个5.1k下拉电阻到GND,让主机识别为USB设备。用Micro-USB座则不需要。
3. 原理图到Gerber:打板交付物的完整实现
3.1 原理图分区与网络标号:一张不返工的画法
画CH340G这部分原理图,我习惯按四个区块组织:USB座区域、CH340G核心区域、串口排针区域、电源区域。分区的目的不是好看,而是方便检查。USB座到CH340G之间只允许UD+/UD-和电源走线,串口排针到CH340G之间只允许TXD/RXD和地线,这样万一打样回来有问题,拿万用表顺着区域一量就能定位。
网络标号名称要统一,不要一处叫USB_DP、另一处叫D+。我一般固定用下面这套命名:USB_DP对应D+,USB_DM对应D-,UART_TX对应CH340G的TXD,UART_RX对应CH340G的RXD。这里有个反直觉的点:CH340G的TXD要接到目标板的RXD,CH340G的RXD要接到目标板的TXD。原理图里如果标号写成UART_TX,就很容易下意识接到目标板的TX,实际是交叉接。A同学第一版就是这里接反,回环测试一直不过。
串口排针的引脚定义建议固定为VCC、GND、TXD、RXD四针,并标清楚方向。很多现成模块把TXD和RXD标反,拿到手还得拿万用表对着芯片量。自己画板时把这个规范好,后续在这个板子上做调试会省很多事。
3.2 PCB布局与布线规则:差分短走线、晶振近放、底层整片铺地
PCB布局顺序不建议上来就摆元件。先把接口和关键器件的位置定死:USB座放在板子边缘,CH340G放在靠USB座一侧,晶振紧贴CH340G的XI/XO脚,串口排针放在对侧边缘。这样USB差分线短,串口线也短,电源路径清晰,整块板不需要过孔绕线。
具体布线规则如下:
- UD+/UD-两条线从芯片引脚出来后,各自串联22Ω电阻,再平行走到USB座。两条线尽量同一层、长度差控制在5mm以内,不要在其中一条线上打孔。
- XI/XO走线控制在10mm以内,晶振本体和负载电容放在芯片同一侧,不要隔着芯片放。
- VCC走线先经过10uF主滤波电容,再走到芯片VCC脚,0.1uF高频退耦电容就近放在VCC脚旁边。
- 底层在布线完成后整体铺地,铺地区域不要出现孤岛铜皮,所有地过孔尽量连成一个完整地平面。
- TXD/RXD排针走线不需要特殊处理,但要避免与USB差分线平行长距离并行走线。
打样参数方面,这个板子是双层板,板厚1.6mm,铜厚1oz,最小线宽10mil,最小间距10mil,最小孔径0.3mm,就能顺畅生产。不要为了“看起来精致”去压最小线宽,CH340G的引脚间距摆在那里,常规参数完全够用。下单时候让板厂出一份预览图,重点看丝印和阻焊是否偏移。
3.3 打板文件检查脚本:用自动化方式核对Gerber完整性
导出Gerber后,我习惯先跑一遍文件检查脚本再下单。这个脚本不检查电气性能,只核对关键光绘文件是否齐全。缺少阻焊层、丝印层或者钻孔文件,板厂那边轻则加收费用,重则直接退回,来回折腾浪费一周时间。
# gerber_check.py # 用法: python gerber_check.py <Gerber文件夹路径> import os import sys required = ['.GTL', '.GBL', '.GTS', '.GBS', '.GTO', '.GBO', '.GKO', '.TXT'] def check_gerber(folder): files = [f.name.lower() for f in os.scandir(folder)] missing = [] for ext in required: if not any(f.endswith(ext) for f in files): missing.append(ext) return missing folder = sys.argv[1] if len(sys.argv) > 1 else 'gerber_output' missing = check_gerber(folder) if missing: print('缺失文件:', ', '.join(missing)) for ext in missing: print(f' - {ext} 对应层未找到,请检查导出设置') else: print('文件齐全,可以下单打样')上面的脚本里,.GTL是顶层铜箔层,.GBL是底层铜箔层,.GTS是顶层阻焊,.GBS是底层阻焊,.GTO和.GBO分别是顶层和底层丝印,.GKO是板框,.TXT是钻孔文件。如果检查发现缺了.TXT,最常见的原因是EDA工具里把钻孔文件单独放在了另一个文件夹,导出时没有一并拷贝。脚本只能负责文件层面,电气连接是否正确,依赖原理图和DRC检查,两者结合用才能放心下单。
4. 打板与接线避坑:五个高频翻车点排查
4.1 现象一:电脑完全识别不到USB设备
插入USB后系统提示“未知USB设备”或“设备描述符请求失败”,设备管理器里看不到COM口。这种通常不是芯片坏了,而是USB枚举环节出了问题。优先排查V3脚的0.1uF电容有没有焊,很多CH340G一旦V3退耦缺失,内部3.3V不稳,USB引擎直接不工作。其次检查12MHz晶振有没有起振,用万用表测晶振两脚对地电压,正常时两脚电压略有差异,完全没电压就是没起振。再不行就查UD+和UD-有没有接反,USB座那边D+接到芯片UD-,必然枚举失败。
解决思路是逐级缩小范围:先量VCC电压,再量V3电压,最后测晶振波形。A同学第一版就是V3电容漏焊,补上后插上电脑立刻识别。
4.2 现象二:识别到了COM口,但回环测试不过或乱码
设备管理器能看到COM口,说明USB枚举没问题,问题出在串口链路。先把TXD和RXD直接短接,在电脑端用串口助手发一组十六进制数据,看能否原样收回。收不到或乱码,按优先级检查三点:TXD/RXD是否接反,目标板或排针侧GND是否共地,波特率是否一致。波特率误差通常来自晶振,负载电容配错会导致实际频率偏移,建议用115200这种常用速率测,对误差最敏感。
4.3 现象三:上电后芯片发烫,电压被拉低
USB口电压被拉到很低,芯片摸上去明显发热,这个现象基本指向短路。最常见的原因是USB座或芯片引脚连锡,尤其是SOIC-16封装焊盘间距不大,手工焊接时锡量稍多就连在一起。先别急着换芯片,断电后用万用表蜂鸣档量VCC和GND之间是否有短路,再逐个检查芯片引脚有没有桥连。如果VCC到GND阻值只有几欧,大概率是连锡或用错了电容,把短路点清理干净再上电。
4.4 现象四:3.3V目标板乱码,甚至偶尔烧引脚
CH340G用5V供电,目标板是3.3V单片机,串口直接相连就可能出现这种情况。虽然不少模块这样用也能跑,但对3.3V器件来说,长期顶着接近5V的电平工作是在赌寿命。解决方式有两种:把CH340G的VCC也改成3.3V供电,这是最干净的方案;或者保留5V供电,在串口线上加电平转换电路。改完之后通信稳定性会明显变好,乱码和偶发损坏都会消失。
4.5 现象五:Gerber文件缺层,打样进度被卡住
下单后板厂客服反馈“缺少阻焊层文件”或“钻孔文件未找到”,这种情况属于导出环节的疏漏。前期用脚本检查能防住大部分,但还要注意:有些EDA工具导出时会自动生成多个文件夹,铜箔层在一个目录,钻孔文件在另一个目录,提交时只打包了其中一个。建立固定习惯,每次导出后把所有文件放到同一个文件夹,跑一遍检查脚本,再打开板厂预览图核对一遍,基本不会再因为这个返工。
5. 验收与答辩:用回环测试把方案讲成交付结果
5.1 焊接后的功能验收:串口回环测试脚本
板子焊好后,不要直接拿去下载程序,先做一轮回环测试。把TXD和RXD用杜邦线短接,再写一个小脚本发数据验证收发通路。下面的脚本用pyserial往串口发一组特定字节,再读回比对,任何一位不一致都说明链路有问题。
# loopback_test.py # 用法: python loopback_test.py COM4 import serial import sys port = sys.argv[1] if len(sys.argv) > 1 else 'COM4' ser = serial.Serial(port, 115200, timeout=1) payload = bytes([0xA5, 0x5A, 0x00, 0xFF]) ser.reset_input_buffer() ser.write(payload) resp = ser.read(len(payload)) if resp == payload: print('PASS: 回环数据一致') else: print('FAIL: 收到 %s' % resp.hex()) ser.close()Linux或macOS下把端口参数改成/dev/ttyUSB0这类实际设备名。如果回环测试通过,说明USB枚举、晶振、串口收发都正常,再测供电电压和波形就能收工。验收项目建议按下面这张表逐项勾选,避免漏测。
| 验收项 | 方法 | 通过标准 |
|---|---|---|
| USB枚举 | 插入电脑查设备管理器 | 出现CH340串口设备 |
| 串口回环 | 短接TXD/RXD运行脚本 | 脚本输出PASS |
| 供电电压 | 万用表量VCC和V3 | VCC符合输入,V3约3.3V |
| 晶振起振 | 示波器或万用表测XI/XO | 两脚存在压差或明显波形 |
5.2 答辩汇报的讲法:一张表说清选型差异
如果这份原理图方案要拿去汇报或答辩,重点不是逐脚讲电路,而是讲清楚“为什么这样选型和设计”。老师或者评审最关心的是你有没有对比过方案,而不是背数据手册。可以用下面这种对比表开头,一句“我对比了CH340G和内置晶振版本,最终选外置晶振版本的原因是焊接容错和成本”就能把话题带起来。
| 对比项 | CH340G | 内置晶振版本 |
|---|---|---|
| 封装 | SOIC-16,间距大,好焊 | 封装更紧凑,焊接要求高 |
| 晶振 | 外置12MHz,需配两颗电容 | 内置,少两个元件 |
| 成本 | 芯片单价相对低 | 芯片单价略高 |
| 适合场景 | 打板入门、手工焊接、教学调试 | 对面积敏感的量产设计 |
汇报时按“需求、选型、实现、验证”四步走,先说自己要做USB转TTL下载器,再说为什么选CH340G,然后展示原理图分区块设计,最后用回环测试结果收尾。这套结构每块板子都能复用,比零散地讲“这里放电容、那里放晶振”要有说服力得多。
从那以后,我每次导出Gerber都会先跑一遍文件检查脚本再下单,板子到手第一件事量VCC对地阻值,然后才敢上电,焊完先做回环再看波形。这套流程帮我避开过不少返工和翻车。希望帮到你。
本文还有配套的精品资源,点击获取