刚开始接触PCB设计那阵子,我电脑里存得最多的就是各种“XX原理图”,从STM32F103C8T6最小系统到WS2812B灯带控制,从TB6612电机驱动到CP2102串口转换,几乎每做一个模块都要先下载别人画好的图纸来抄。后来自己从头画了两块板子、前后改了四版原理图,才真正明白一件事:原理图在整个PCB流程里的分量,远不止“把电路连起来”那么简单。这篇是我自己的PCB学习记录里关于原理图的部分,既讲讲怎么画、怎么读,也想把那些手册里不会写、但实际特别影响出板效率的坑一并记下来,给准备入坑硬件的朋友做个参考。
1. 原理图到底在PCB流程里扮演什么角色
1.1 原理图是设计意图的“第一版落地”
先纠正一个观念:原理图不是给PCB Layout看的“连线图”,它是整个硬件设计里第一份真正意义上的技术文档。一个完整的硬件开发流程通常是这样的:需求分析、系统框图、芯片选型、原理图设计、PCB Layout、打样、焊接调试、改版。原理图刚好卡在“你想做什么”和“板子怎么做出来”中间,是唯一能把电信号、电源、接口、封装这些信息同时完整表达出来的环节。
我见过很多新手,包括当时的我自己,拿到一个芯片的datasheet就开始乱画,画着画着发现引脚怎么都不够用,电源也不知道从哪里进。问题出在根上:没有先把需求翻译成“电的性能约束”。比如你做一块STM32最小系统板,需求其实是“能让芯片跑起来、能被下载程序、能引出基本IO”。翻译成电路就是三件事:供电、时钟、复位和下载。原理图画的就是这三件事的具体实现,而不是漫无目的地连线。
原理图的信息密度比很多人想象的高。它不只是线和符号,还包括:元件位号,每个元件在板子上的唯一身份,后面做PCB、做BOM都靠它;封装信息,包括贴片还是直插、引脚间距、焊盘尺寸;网络标号,一个标号就代表一根电气连接,同名的网络在PCB阶段是连通的;电源树,整块板子的电源从哪里来、经过哪些转换、分给哪些模块;以及注释和版本信息,因为原理图同时也是图纸,要能被别人看懂、能追溯修改记录。
这里有个非常容易犯的错误:位号或网络标号命名混乱。我刚开始画板子的时候,电容全部叫C1、C2、C3,没有分区也没有功能含义,结果PCB Layout阶段想去板子上找某个反馈电容,对着图纸找了半天。后来规范成“C_3V3_1”这种带电源域前缀的命名方式,效率高了很多。命名这件事,看起来不影响电气性能,但直接影响你排查问题的速度,越早养成习惯越好。
1.2 原理图和PCB是“翻译”关系,不是“画图”关系
很多人觉得原理图画完,PCB就是照着连一遍。大错特错。原理图管的是逻辑连接,PCB管的是物理实现。同样一个网络标号NET1,在原理图上只是两根引脚画了一条线,但在PCB上,这两个引脚之间可能隔着几十个元件,要考虑走线路径、过孔、阻抗、干扰。原理图设计得合理与否,会直接决定后面Layout阶段是轻松还是痛苦。
所以原理图设计时就要提前“喂”给PCB足够的信息。这也是为什么现在的主流工具里,原理图和PCB是联动的关系:你在原理图里放一个电阻,选了0402封装,定义了网络NET1,PCB端打开时就会自动出现这个元件和这个网络。联动的基础就是库和网表,这也是为什么库的管理这么重要,我在后面会专门展开。
还有一件事我得提醒:原理图的整洁程度会直接决定你后面要不要加班。一张好的原理图,信号流从左到右、电源从上到下(或按模块分块),别人包括一个月后的你自己一眼就能看明白。一张乱的原理图,线绕来绕去、元件东一个西一个,PCB环节光是核对连接关系就能耗掉半天。记住这句话:原理图是画给人看的,PCB是画给机器看的,人看不懂,机器画得再快也没用。
2. 工具选型与画图前的准备工作
2.1 工具怎么选:嘉立创EDA、AD、Cadence怎么挑
先列一个直观的对比表,方便你对号入座:
| 工具 | 上手难度 | 库资源 | 成本 | 适合场景 |
|---|---|---|---|---|
| 嘉立创EDA(立创EDA) | 低,中文界面 | 立创商城库很全 | 免费 | 学习、快速打样、中小项目 |
| Altium Designer(AD) | 中 | 插件和第三方库多 | 商业授权较贵 | 大多数中小公司、个人进阶 |
| Cadence OrCAD/Allegro | 高 | 需自行建库或找资源 | 商业授权昂贵 | 大型企业、高速数字/复杂板卡 |
我的建议是:如果你是纯入门,直接选嘉立创EDA。理由是它的元件库跟立创商城打通,很多常用芯片搜一下就有带封装的符号,能省掉大量建库时间。等画过一两块完整板子、熟悉了设计思路,再决定要不要换AD或Cadence。工具只是载体,原理图设计的核心思路在哪个工具里都一样,没必要一上来就在工具上纠结很久。
不过有一点要记住:不管是哪个工具,“库”始终是最关键的资产。嘉立创EDA的好处是省了建库,但它的库质量参差不齐。我之前用过一个蓝牙模块的符号,引脚顺序跟实际封装完全对不上,导出到PCB之后才发现,白白改了一版。所以即便是用现成的库,画完原理图之后也一定要做封装核对,这个习惯能救你很多次。
2.2 栅格设置:原理图里被忽略的“对齐之美”
热搜词里有“AD原理图设置栅格”,这个确实很关键,但很多教程都是一句带过。原理图的栅格(Snap Grid)决定你放置元件和画导线的吸附精度。栅格设得不合理,会出现两种问题:一是画出来的导线歪歪扭扭,看起来像小学生涂鸦;二是导线和引脚明明挨着,但实际没有连上,ERC(电气规则检查)时还查不出来,因为它是“视觉上相连”而不是“电气上相连”。
AD里设置栅格的位置在右下角或者快捷键G,可以分别设置捕获栅格、可视栅格和电气栅格。原理图一般建议把Snap Grid设为10mil或100mil,因为多数元件引脚间距是2.54mm(100mil)的整数倍关系,用100mil的倍率比较合适。嘉立创EDA里则是直接在顶部工具栏设置,建议用0.1mm或0.25mm的倍数。核心原则就一句话:让所有引脚落在栅格点上,导线就能自动吸附,图纸也会整齐很多。
这个细节值得展开说一下:我见过不少人画原理图,导线到一个引脚附近就停了,以为连上了,结果ERC报错“Pin not connected”,或者在PCB端发现某个网络缺了一根线。这种问题十有八九是栅格和吸附没设置好。花两分钟把栅格设置正确,能给你省下后面几小时的排查时间。千万别小看这个基础设置,它是所有连线工作的地基。
2.3 符号库与封装库:管脚很多的器件怎么办
原理图符号(Schematic Symbol)和PCB封装(Footprint)是两套东西,前者是“逻辑表示”,后者是“物理形状”。一个芯片在原理图里画成一个矩形,标注引脚号和名称;在PCB里则是一块铜箔和丝印的形状。两者通过引脚编号一一对应。这一点如果不理解,后面会出现大量“封装导不进来”“引脚飞线全乱”的问题。
遇到管脚很多的器件(比如STM32F103C8T6有48脚,一颗FPGA可能几百个脚),画原理图时会遇到一个很现实的问题:如果在一个符号里放完所有引脚,图纸会巨大无比,信号流向也乱。通用的做法是“分块符号”,也叫多单元器件,把芯片拆成几个功能块,比如电源块、时钟块、通信接口块、GPIO块,每个块放一个子图形。
以Cadence为例,建一个多部分器件时,在Library里设置Parts per Package,比如把48脚的芯片分成3个Part,每个Part只画一部分引脚,放置时按Part选择。AD里也有类似功能(Multi-Part Symbol)。这个技巧算是原理图进阶路上的一道坎,但理解之后,画复杂系统的效率会非常直观地提升。我自己的记录里专门写了这么一句:管脚多的芯片,永远不要试图在一个图形里画完所有引脚,那是给自己找罪受。
3. 原理图绘制实操:以STM32F103C8T6最小系统为例
3.1 最小系统的构成拆解
STM32F103C8T6是我画得最多的一块板,也是适合用来讲原理图学习流程的经典芯片。所谓最小系统,就是让芯片“活过来”所需的最少电路。拆开来看一共五块:主控芯片、电源、时钟、复位、下载调试和BOOT配置。
主控芯片就是STM32F103C8T6本身,48脚LQFP封装。电源部分需要一个3.3V稳压源,常用AMS1117-3.3或ME6211这类LDO,输入5V输出3.3V,输入输出各放一个10uF或100uF的电容做储能,再放一个0.1uF做高频去耦。时钟部分需要一颗8MHz晶振和两颗20pF左右的负载电容,接到OSC_IN和OSC_OUT。复位电路就是一个10k电阻上拉到3.3V,再接一个0.1uF电容到地,按钮可加可不加。下载调试我用SWD方式,只需要SWDIO和SWCLK两根线,配上NRST,串口下载那套可以省。BOOT0引脚通过10k电阻下拉到地,芯片默认从Flash启动。
这五块看起来简单,但每一块的接法背后都有讲究。比如晶振的负载电容不是随便选的,8MHz晶振的负载电容通常在10pF到30pF之间,具体要看晶振datasheet给的CL值,选错可能导致起振困难或频率偏差。这种细节,抄别人原理图的人是永远注意不到的,只有自己完整画过一遍才能体会到。
3.2 电源和去耦:最容易“抄错”的部分
去耦电容大概是原理图里最不起眼、但又最影响稳定性的元件。为什么每个电源引脚旁边都要放一个0.1uF(100nF)电容?因为芯片在翻转信号时会产生瞬态电流,这个电流如果直接从电源走线取,会造成电源轨的电压跌落和噪声。0.1uF的电容靠近电源引脚放置,相当于一个“本地小水池”,瞬态电流先从这里面取,避免了远处电源走线的电感效应。
虽然去耦电容在原理图上只是一个符号,但它有个隐含的物理要求:必须尽量靠近对应引脚放置。你可以在原理图里把电容放在芯片旁边,标注好对应关系,真正摆放时在PCB里挪到芯片引脚附近。有些芯片datasheet会明确要求“每个电源引脚放置0.1uF去耦电容”,按这个做就是对的,不要自作主张删减。
电源部分还有一个“抄作业”时最常踩的坑:把稳压芯片的输入输出电容搞反或者漏掉。以AMS1117为例,datasheet上明确要求输入输出端都要有至少10uF的电容,如果只放了一个小陶瓷电容,负载突变时输出电压可能出现明显纹波,严重时单片机会反复复位。我之前画的一版板子就因为这个原因,一接电机就重启,排查了两天才发现是LDO输出电容容量不够。这个教训让我现在画任何电源部分,都会先把datasheet里的Typical Application Circuit完整抄下来,再根据实际需求微调。
3.3 下载调试、启动配置和复位
最小系统里下载电路是最能体现“工程思维”的部分。SWD只需要4根线:VCC、GND、SWDIO、SWCLK。SWDIO和SWCLK各加一个10k上拉电阻会提高下载稳定性,尤其在杜邦线连接、线缆较长的时候。STM32的SWD引脚和一部分GPIO是复用的,如果你原理图里把这些GPIO也引出来做别的功能,就要考虑调试时是否会有冲突,必要时加跳线隔离。
BOOT0和BOOT1决定芯片从哪里启动。STM32F103的BOOT1引脚在很多封装里没有引出(默认拉低),实际常用的是BOOT0:拉低就是从Flash启动,拉高就是进入串口下载模式或系统存储器。最小系统板一般把BOOT0通过10k电阻下拉,再留一个焊盘或跳线可选,方便以后需要串口下载时切换。这里我习惯把BOOT0标成“Boot0_Select”,并在原理图注释里写清楚“默认低,下载失败时拉高试试”,下次回看图纸不用再翻手册。
复位电路我一般做成RC复位:10k电阻上拉到VCC,0.1uF电容到地,复位引脚得到的是上电瞬间的低电平脉冲,然后被充到高电平。这个RC时间常数大概是1ms(10k乘以0.1uF),足够保证芯片可靠复位。如果加了复位按键,按键并联在电容两端,按下时把复位引脚直接拉到地。这种基础电路的数值,在实际项目中足够用,也容易计算和排查。
3.4 ERC检查与导出:从原理图到PCB前的最后一道门
画完原理图,不要急着生成PCB。先做三件事:编译/ERC检查、逐网络核对、整理图面。ERC检查会帮你找出悬空引脚、未连接标号、输出短路等问题。但ERC只是工具,它只能发现“电气规则”层面的错误,发现不了“设计意图”层面的错误。比如你把一个LED的正负极接反了,ERC不会报错,因为电气上是合法的。所以第二件事“逐网络核对”更重要:对照datasheet里的推荐电路,逐个网络看过去,确认没有接错。
整理图面这件事很多人不在乎,但我觉得它是原理图环节最值钱的工作。给每一页图纸加个标题栏,标注设计者、版本、日期、修改记录;把电源符号统一,3.3V就用一个VCC_3V3符号,不要同一条网络一会儿叫VCC一会儿叫3V3;把注释写在相关模块旁边。一份整洁的原理图,在PCB调试往回查问题时,救命程度不亚于示波器。
导出也有讲究。AD里用Smart PDF导出带书签的PDF,Cadence里用PDF打印功能。如果只是给同事快速review,直接导出PDF就够了。如果自己归档,最好同时导出原理图库和网表,方便复用。我通常还会把版本号写进PDF文件名,比如“R1.0_20250301”,这样同一份图纸的多版修改一目了然,不会再出现“这个文件到底是哪版的”这种尴尬。
4. 读图能力:看懂别人原理图的四个层次
4.1 第一层:认器件,查datasheet
现在网上什么原理图都搜得到,DHT11温湿度模块、TB6612电机驱动、反激开关电源……但你下载一个别人画的原理图,首先要做的不是看线,而是把所有用到的芯片都查一遍datasheet,确认每一颗芯片是什么功能、引脚怎么定义、有没有典型应用电路。这一步不做好,后面全是空中楼阁。
这个阶段有个很常见的错误:网上的原理图可能是旧版本芯片,或者是抄板抄错的。比如某些国产兼容芯片和原厂芯片引脚定义不完全一样,你照着一个老图纸用了兼容芯片,结果上电就冒烟。查datasheet时一定要核对器件型号的完整后缀,比如STM32F103C8T6和STM32F103CBT6管脚兼容但Flash不同,别买错了料。原理图可以原样套用,但型号后缀必须跟实际买到的芯片对得上。
4.2 第二层:追信号,读数据流向
看着一张原理图,试着把信号流“讲一遍”:传感器输出什么电平或协议,经过什么转换或调理,最终送进主控的哪个外设。比如一张DHT11模块的原理图,从DHT11的数据脚出来,一般接一个4.7k上拉电阻到VCC,再连到单片机的某个GPIO。这个上拉电阻不是随便加的,DHT11是开漏输出,必须靠外部上拉才能输出高电平。你读图时如果能讲出这层道理,说明你不是在看线,而是在看逻辑。
信号流还可以帮你判断原理图是否完整。一个通讯接口,有发送就有接收,有数据就有地参考。照着这样的思路逐条网络追,经常能发现“这个模块的GND去哪里了”这种隐藏问题。有一次我看一张4-20mA采集板图纸,发现信号调理运放的输出端少了一个串联电阻,照图打样后调试发现后级ADC输入过压,就是追信号流时没追到这个断点。
4.3 第三层:看电源和地,画电源树
一块复杂的板子,电源可能不止一路:5V进,3.3V给MCU,1.8V给DDR或传感器,还有基准电压。读图时把每一路电源从哪里来、经过什么LDO或DCDC、给哪些芯片供电,一张图画清楚,就叫电源树。电源树画完,整块板的功耗估算、热设计、电源完整性心里就有底了。
地也要分开看:模拟地和数字地。像4-20mA电流环、ADC采集这类电路,模拟地如果和数字地混在一起,采样值会有毛刺。原理图里的星型接地、单点接地都是为了这个。我见过一个很典型的错误:两块芯片的GND引脚在原理图里连成同一个网络,但PCB布局时中间隔了一段很长的导线,结果EMC测试时辐射超标。读图时一定要留意电源和地的参考路径,这直接决定板子的成败。
4.4 第四层:还原设计意图,敢做取舍
最高级的读图能力,是能还原出原作者“为什么这么画”。为什么这颗电阻放在这里?为什么这个引脚直接接地而不是接上拉?为什么用LDO而不是DCDC?有的答案是成本,有的是空间,有的是噪声考虑。看懂之后,你才能判断:这个图纸我能不能直接用、能不能改、改哪里。
网上那些“原厂方案全套资料”,包括原理图、PCB、寄存器列表、BOM,之所以值钱,就是因为原厂参考设计都经过严格测试,连接方式和器件选型都有实验依据。你基于原厂方案改自己的板子,只要理解了每一处的用途,成功率会高很多。反过来说,如果只是照抄,一旦改了一个器件的参数,就可能整套失效。比如把LDO的输入电容从10uF改小到0.1uF,在某些负载突变场景下就会出问题,而这时你根本不知道问题出在哪里,因为你不理解原设计。
5. 常见问题与排查技巧实录
5.1 ERC报错和网络问题速查
我把自己遇到过的原理图问题整理了一张速查表,每次犯迷糊时先对着查一遍:
| 现象 | 大概率原因 | 处理方法 |
|---|---|---|
| ERC报“Unconnected Pin” | 引脚没连上或网格吸附没开 | 检查导线端点是否有节点,重新连线 |
| 网络看起来连了,PCB端缺线 | 导线画到引脚旁边但没真正吸附 | 开启电气栅格/磁吸,放大确认节点 |
| 位号重复 | 复制元件时没重新编号 | 使用工具的“重新标注”功能 |
| 同名网络报错 | VCC和VDD用了不同名称,多个电源符号混用 | 统一命名规则,检查电源符号网络名 |
| 封装导入后管脚飞线乱 | 原理图符号引脚编号和封装焊盘编号不一致 | 核对符号引脚号与Footprint焊盘号一一对应 |
这里最阴间的其实是最后一条。有时候画完ERC全绿,但PCB一导入,好多器件引脚悬空,这种大概率是原理图里用了不匹配的封装库。因为ERC只查逻辑连接,不查封装映射是否合理。
5.2 AD里PCB器件不能选中:你不是第一个遇到的
热搜词里“ad中pcb上器件不能选中”出现次数很多,我猜是每个AD新手都会碰到一次。这个问题的原因通常是三类:第一,器件被锁定(Locked),点击时只选中了丝印或走线;第二,打开了过滤面板Filter,筛选条件限制了可选对象;第三,板子处于某些特殊模式,比如翻转到底层或某种误触发的选择状态。
快速排查路径:先看右下角Panels里的Filter,如果设了“只选走线”,那当然选不中元件;再把器件属性里的Locked勾掉。还有一个万能操作:按Shift加点击,或者用Ctrl加H(选择连接)来反向定位。别慌,这类问题大多不是文件损坏,而是交互设置的问题,重启软件很多时候也能恢复默认状态。
5.3 封装管脚不匹配:原理图符号和PCB封装的“翻译”问题
有一个相当隐蔽的坑:原理图符号引脚编号与PCB封装焊盘编号不一致。举个我踩过的例子:一个三极管,SOT-23封装在工具库里有两种定义,一种1-2-3分别是B-C-E,另一种是B-E-C。原理图里我用的符号是B-C-E,但自动匹配到的封装是B-E-C,结果焊盘编号对不上,导网表时出现好几个悬空网络。表面看原理图没错、封装也没错,但两者接不上,最后上电才知道苦。
解决办法:每次画原理图放置元件时,就选好对应的封装,不要依赖工具自动匹配。放完后做一个“封装-符号引脚对照检查”,尤其注意二极管、三极管、稳压管这种多引脚且极性敏感的家伙。我的习惯是在原理图里直接显示封装名称,核对时快速扫一眼就知道有没有问题,而不是等导出网表后才发现。
5.4 放置元件时顺手填好封装和值:小习惯救大命
在设计复杂原理图时,我习惯每放一个元件就顺手把位号、封装、值填完整。有人觉得这是后面的事,最后再统一填。但实际经验是:越到最后越容易漏,而且漏了很难查出来。我有一版板子就因为一个电阻漏填了阻值,默认变成0欧姆,PCB生产回来那个位置焊了个0欧电阻,导致一个模块的供电直接被拉死。这种低级错误,完全可以用“放置时就填好”的习惯避免。
另外还有一个小技巧:在原理图每页右下角放图框和版本号,修改记录写在第一页的注释里。板子一旦改版,回看图纸时,你能清楚地知道V1.0和V1.1之间到底改了什么。如果是自己一个人用,可能无所谓;但只要涉及协作或者打样归档,这个习惯能帮你省下大把时间。别问我怎么知道的,问就是曾经对着两版几乎一样的图纸找差异找了半个下午。
5.5 电源符号和GND符号:最容易被忽略的“网络身份”
原理图里VCC、VDD、GND、AGND这些符号,看起来只是画法不同,实际上每一个都代表一个独立的网络名。很多新手会在同一张图里既用VCC符号又用3.3V标号,结果这两个网络其实是断开的,芯片压根没有供电。这就是为什么规范命名电源网络特别重要。
我自己的做法是:整块板子的电源轨在原理图首页画一棵电源树,然后用统一的符号和命名贯穿全图,比如3.3V就叫VCC_3V3,5V就叫VCC_5V,模拟电源叫AVCC_3V3,模拟地叫AGND。所有电源符号的隐藏网络名都提前设置好,放置时只需要选对符号,不用每次手改网络名。这个习惯帮我避免了很多低级错误,尤其在大原理图里,效果非常明显。
画到现在,其实我最想说的是:原理图这个环节,真正考验人的不是画图技术,而是对电路的理解和对细节的耐心。我自己第一块板子画原理图只花了一个晚上,改版却花了三周,大部分时间都耗在那些当时觉得“差不多就行”的细节上——去耦电容的位置、网络命名的规范、封装管脚的核对。现在我的习惯是:画完原理图先放一天,第二天当陌生人重新读一遍图,再进PCB环节。用这个笨办法,后面几块板子几乎都是一版通过。原理图这种东西,慢就是快,你要是也有那种“明明连对了却不放心”的直觉,别怀疑,回去检查,大概率真有错。