
上周帮学弟检查他画的STM32最小系统板打开工程文件一看电源引脚上就挂了个100nF电容晶振旁边负载电容没接BOOT0悬空SWD四个口的丝印还标反了。这种问题我见得太多了不是画板子本身有多难而是教程太散——东看一篇西看一段最后该注意的全漏掉。所以这篇我干脆用嘉立创EDA专业版从零开始把STM32F103C8T6最小系统的原理图和PCB完整走一遍该装的元件、该避的坑、该调的参数全给你写出来不说废话照着做就行。这篇博客不做任何基础知识的铺垫直接瞄准一个目标用嘉立创EDA专业版画出一块能正常烧录、能跑点灯、能接外设的STM32最小系统板。适合刚学完单片机想做自己第一块板子的朋友也适合做课设、毕设需要快速出板子的人。整个流程从新建工程开始到原理图绘制、PCB布局布线、DRC检查、下单打样全流程覆盖用的都是嘉立创EDA专业版自带的免费元件库不用你去别的地方找封装、找模型。1. 动手前想清楚的事最小系统到底要画哪些部分很多人一上来就打开软件找STM32芯片拖到画布上开始连线画到一半发现引脚不够用、封装对不上、板子做出来焊完没法下载程序。问题出在一开始没把最小系统“由哪些模块组成”想清楚。STM32最小系统说白了就是让一颗STM32芯片“能通电、能复位、能有时钟、能下载程序”的最低硬件条件。1.1 为什么选STM32F103C8T6我习惯用STM32F103C8T6给新手打样原因很实际这颗料是LQFP48封装手工焊接难度不大热风枪或者拖焊都能搞定64KB Flash跑点灯、跑串口、跑一些简单传感器驱动足够了最关键的是价格便宜散片几块钱一片打样焊坏了不心疼。F103系列属于Cortex-M3内核72MHz主频资料铺天盖地你现在踩的坑十年前就有人踩过并且写出来了。选择这颗芯片还有一个隐藏优势嘉立创EDA的元件库里STM32F103C8T6的标准封装是现成的不需要自己画封装甚至连原理图符号里的引脚编号都帮你排好了只用连线就行。这对第一次画板子的人来说省掉了最容易出错的“建库”环节。1.2 最小系统五大模块拆解STM32F103C8T6的最小系统我按模块拆成五块每一块都有明确的职责供电模块芯片需要3.3V电源。主电源VDD有多个引脚接3.3V每个VDD引脚旁边放一个100nF去耦电容模拟电源VDDA接3.3V通常经过磁珠或0欧电阻隔离再加一个1uF和一个10nF电容滤波VSSA接地VBAT如果不打算用电池供电直接接3.3V。时钟模块主时钟HSE用8MHz无源晶振晶振两端各接一个15~22pF负载电容到地给MCU提供准确的系统时钟来源。如果用到RTC实时时钟还需要一个32.768kHz的LSE晶振不做RTC可以省略。复位模块NRST引脚接10k电阻上拉到3.3V再接0.1uF电容到地形成上电复位电路。如果想手动复位在NRST和GND之间跨接一个轻触按键即可。启动配置模块BOOT0和BOOT1引脚通过10k电阻下拉到地。全部拉低就是正常的Flash启动模式这是最常用的配置芯片上电后从内部Flash执行程序。下载调试模块用SWD接口只需要引4根线3.3V、SWDIOPA13、SWCLKPA14、GND。不占用串口下载速度快稳定性比串口ISP好太多。这五个模块画完一块最小系统的原理图就基本成型了。不要贪多先别加蜂鸣器、显示屏、传感器接口等核心板跑通了再扩展否则排查问题时会让你怀疑人生。2. 原理图绘制全程从新建工程到连线完成五块模块想清楚之后打开嘉立创EDA专业版跟着我一步步来。专业版的界面比标准版更像主流EDA工具左边是工程文件树中间是画布右边是属性面板顶部菜单和快捷键布局都还算合理。第一次用不用背快捷键鼠标点菜单完全够用就是慢一点。2.1 新建工程与基础设置打开嘉立创EDA专业版后在主界面点“新建工程”输入工程名称。我习惯用这种命名格式STM32F103C8T6_MinimumSystem这样不管是保存在云端还是在本地过几个月再回来看也知道这个工程是干嘛的。新建完成之后会默认打开一张原理图纸建议先改一下图纸大小。画STM32最小系统这种几十个元件的小板子A4或者A3尺寸就够太小的图排不开太大的图导出PDF或者截图分享时看不清。在属性面板里把图纸尺寸设置为A4网格间距保持默认的0.1inch就行嘉立创EDA的元件脚距都是基于英制单位的别改成公制网格后面放元件的时候容易对不齐引脚。2.2 元件放置从库里拖出关键器件在原理图编辑器里按快捷键P或者点右侧面板的“元件库”搜索下面这些元件依次放置到画布上主控芯片搜索STM32F103C8T6。嘉立创EDA的元件库里有多个版本注意选择带原理图符号和PCB封装的完整条目描述里一般会标注LQFP48。放置到画布后稍微调整一下方向让VDD、VSS引脚分布在两侧方便后续连线。稳压芯片搜索AMS1117-3.3。这是最常用的3.3V稳压芯片SOT-223封装输入5V输出3.3V最大输出电流1A带一片F103绰绰有余。如果希望压降更低、功耗更小可以换RT9013这类LDO但AMS1117最便宜、最容易焊新手首选。无源晶振搜索8MHz注意选49S封装的贴片晶振或者DIP直插晶振。贴片晶振体积小适合做小板直插晶振好焊好换适合实验板。我建议新手先用贴片的练习一下贴片焊接手感。电容电阻电阻搜索10k和1k电容搜索0.1uF、1uF、10uF、22pF。注意电容要区分贴片和直插我全部用的0603封装体积不大不小手工焊起来比0402舒服又不占太多板面积。按键和排针搜索轻触按键选4脚贴片那种搜索排针选2.54mm间距直插排针根据你需要引出的引脚数选2P、3P、4P这些规格。放置完所有元件后你会发现画布上乱七八糟这很正常。接下来按模块区域把它们大致摆开左侧放电源电路中间放主控芯片右侧放晶振和复位下面放SWD接口和排针就像收拾桌面一样区域分好了连线才顺手。2.3 电源电路的具体搭法电源是整个板子的地基地基建不好后面全白搭。我用AMS1117-3.3做电源模块具体连接方式如下输入侧5V接排针或者USB的5V输入在AMS1117的Vin引脚旁边放一个10uF钽电容或电解电容再加一个100nF陶瓷电容。这两个电容的作用是滤除输入电源中的低频纹波和高频噪声10uF负责“稳住大局”100nF负责“查漏补缺”。输出侧3.3VAMS1117的Vout引脚输出3.3V同样放一个10uF电容和一个100nF电容。输出电容不能省AMS1117这种LDO对输出电容有一定要求至少需要一个10uF电容来保证环路稳定不然输出电压可能出现高频振荡用示波器测量时会看到纹波超大。电源指示灯从3.3V输出串联一个1k电阻和LED到地LED亮说明3.3V有了。这一步不画也行但我强烈建议加上板子通电后看灯有没有亮能快速判断电源是否正常省得每次都要拿万用表去量。接下来是芯片侧的电源引脚处理。STM32F103C8T6有3个VDD引脚和3个VSS引脚每个VDD引脚旁边都必须放一个100nF去耦电容电容另一端接GND而且这个电容在PCB布局时必须紧贴着对应引脚放距离越短越好这是后面PCB布线时最容易忽略的细节但在原理图阶段就要先把电容画进去。VDDA和VSSA是模拟电源引脚如果只是做数字电路可以把VDDA通过一个10欧电阻或者磁珠接到3.3V再放一个1uF和一个10nF电容滤波。VSSA直接接GND。VBAT引脚如果不接外部电池直接把它连到3.3V即可。2.4 晶振电路与时钟配置很多人画晶振电路只画一个晶振两个引脚直接接到MCU的OSC_IN和OSC_OUT结果芯片不工作或者系统时钟不准。无源晶振的等效模型里本身就带电容但实际应用中必须在晶振两端各接一个负载电容到地和晶振内部的等效电容共同决定振荡频率。STM32F103的HSE电路我一般用8MHz晶振配两个20pF电容。做原理图时每个负载电容的一端接晶振引脚另一端接GND不要接VCC。有些参考设计会在晶振两端并联一个1M欧姆反馈电阻帮助晶振快速起振但STM32内部已经集成了反馈电阻所以这个外置电阻不是必需的不加也能正常起振。晶振下方在PCB布线时不能有信号线穿过原理图阶段虽然没有这个约束但我会在原理图注释里写上“晶振周围保持干净、远离电感类元件”提醒自己画PCB时注意。如果做产品还要考虑晶振下面铺地但做实验板这一步可以省略。2.5 复位、BOOT与SWD接口连接复位电路NRST引脚接10k电阻上拉到3.3V再接一个100nF电容到地。如果想加手动复位按键就再放一个轻触开关并联在NRST和GND之间。按键按下时NRST被拉低芯片复位松开后NRST被10k电阻拉回高电平芯片重新运行。这个电路的原理很简单就是RC充放电延时保证上电瞬间NRST能保持一段时间的低电平等电源稳定后再释放。BOOT配置BOOT0和BOOT1各通过10k电阻下拉到GND。有些教程会把BOOT0接一个跳线帽方便切换串口下载模式但既然用了SWD下载器BOOT0直接下拉就行。如果你后面想用串口ISP下载程序再把BOOT0的电阻改成跳线结构原理图阶段先保持最简配置。SWD接口在原理图上放一个4P或5P排针按顺序定义引脚3.3V、SWDIO、SWCLK、GND。SWDIO对应PA13SWCLK对应PA14直接连接即可。如果下载器支持还可以再接一个NRST引脚用于下载前复位但ST-Link的SWD模式一般不用接NRST也能正常下载所以默认4根线足够了。我这里多说一句SWDIO和SWCLK这两根线别接反板子做出来不能下载的常见原因就是这两个脚反了原理图阶段就要仔细核对。2.6 原理图检查清单所有连线画完后先别急着转PCB花两分钟过一遍这个检查清单3.3V网络是否连接到了所有的VDD引脚、VDDA、VBATGND是否连接到了所有VSS、VSSA每个VDD引脚旁边是否有100nF去耦电容NRST是否被上拉到3.3V是否有复位电容BOOT0和BOOT1是否拉低有没有悬空晶振两个引脚是否都通过电容接到了GNDSWD接口的SWDIO、SWCLK是否接到了PA13、PA14检查完这些在嘉立创EDA专业版里运行一下设计规则检查ERC快捷键一般在“设计”菜单下。系统会提示有没有未连接的引脚、有没有网络名冲突、有没有输出悬空的提示。这些东西不完全是错误但建议逐个看一遍做到心里有数。3. PCB布局布线能把板子做出来才是真本事原理图画完只是第一步板子能不能正常工作七成取决于PCB布局布线。经常有人问为什么我原理图照着画板子做出来还是不行大概率就是布局太随意。这块STM32最小系统板的PCB设计我按下面的顺序一步步说。3.1 板框与层叠设计在嘉立创EDA专业版里把原理图转成PCB之后第一步先把板框画出来。我建议画成20mm×50mm的长条形状长度方向左边放电源、中间放芯片、右边放调试接口和排针这样既方便布局也不浪费打样面积。板框在“板框”工具层里画用矩形工具画好后设置尺寸为20mm×50mm。层叠方面不用纠结直接用两层板顶层放元件和信号走线底层走线和铺铜。嘉立创打样默认是两层板价格便宜性能完全够STM32这种工作频率不高的芯片。如果以后画高速板再去研究四层板这里不展开。3.2 布局的核心逻辑模块化分区局布局这件事最核心的原则就四个字模块化分区。把原理图里的元件按功能区域分块然后在PCB上按“电源区-主控区-接口区”的顺序摆开。首先把STM32F103C8T6放在板子居中偏左的位置芯片方向统一1脚在左上角。放芯片时把引脚间距网格设置成0.5mm这样后面放去耦电容时对齐方便。LQFP48封装引脚比较密手工焊接时需要留出足够的焊盘空间芯片周围不要放太高大的元件。然后处理去耦电容每个VDD引脚对应的100nF电容必须放在该引脚外侧尽可能近的位置电容到引脚的距离不要超过2~3mm。如果你把电容放在芯片另一侧或者隔了其他走线那这个电容的高频滤波效果会大打折扣等效于没放。去耦电容的地端通过过孔直接打到背面铺铜上不要绕路。晶振放在芯片OSC_IN和OSC_OUT引脚同侧紧贴芯片放置。8MHz晶振下面是禁区不要在晶振正下方走任何信号线。负载电容紧挨晶振引脚放置。这样可以最小化振荡回路的环路面积减少杂散电容对频率的影响。电源区放在板子左侧AMS1117的输入输出电容按“输入电容靠近Vin、输出电容靠近Vout”的原则布局电感类的元件如果以后扩展电源电路要远离晶振放置。按键和排针放在板子边缘。复位按键放在右上角方便手指按压SWD排针放在板子左侧边缘或右侧边缘都可以但尽量靠近芯片的PA13、PA14引脚避免走线太长外部引脚的排针按功能分组排布比如电源类排针放在一起IO类排针放在一起后面接外部传感器时会方便很多。布局完成后不要急着布线先把板子翻转方向、放远一点观察一下整体结构是否合理确认每个区域之间没有明显的交叉再进入布线环节。3.3 布线的先后顺序和走线宽度布线顺序很重要我习惯的优先级是先GND、再电源、最后信号线。这个顺序背后的逻辑是电源和地线网络最粗、最关键先把它们规划好信号线见缝插针就简单了。在嘉立创EDA专业版里布线前先在“设计规则”里设置线宽规则。我给这块板子用的线宽如下网络类型建议线宽说明3.3V电源0.5mm以上稳压器到芯片主干线尽量用0.8mm或1mmGND0.5mm以上能铺铜的地方直接铺铜不依赖走线晶振信号0.254mm尽量短两侧用电地包围普通信号0.254mm如果空间紧张可以降到0.2mm但不建议3.3V电源线是板子的命脉从AMS1117输出到芯片VDD引脚主干线我用1mm宽度走然后在每个去耦电容处分叉形成星型拓扑。什么叫星型拓扑就是电源线像星星的光芒一样从主节点分别引出到各个负载点避免负载之间的电源串扰。很多老工程师常说的“星型供电”和“星型接地”就是从这里来的。信号线用0.254mm也就是10mil这个宽度是大多数板厂都能轻松做出来的标准值。走线尽量走45度斜角不要走90度直角直角处会产生阻抗突变和信号反射高频时影响明显虽然F103这种72MHz的芯片不是特别敏感但养成好习惯没坏处。SWDIO和SWCLK这两根线尽量一样长或者至少保证CLK线不比其他信号线长太多。虽然SWD协议本身对时序要求不高但更短的线长意味着更少的抗干扰问题。VDD和GND相关的走线一定不要用细线凑合宁可绕一点也要保证宽度。3.4 星型接地与铺铜的取舍接地是整个PCB设计里最容易被新手搞错的地方而且出错之后特别难排查。嘉立创EDA社区里经常有人问“如何布线星型接地”很多人以为是要把每个模块的地线都单独拉回电源输入端形成一个像星星一样的地线拓扑。这个概念本身没错但要分场景使用。对于STM32最小系统这种纯数字、低功耗、工作频率较低的板子大面积铺地是更合理的选择。操作方法是先在顶层和底层所有空余区域铺上GND网络的铜皮然后在芯片底部、晶振下方、去耦电容周围打上过孔让顶层和底层的GND铜皮充分连接。这样做的好处是地回路面积最小抗干扰能力比拉几条细地线强很多倍。这就是常说的大面积接地也叫灌铜接地。那什么时候用星型接地一般出现在模拟和数字混合电路里。比如板上同时有模拟传感器和数字MCU模拟地和数字地如果大面积铺铜混在一起模拟部分的噪声会通过地平面耦合到数字部分严重影响ADC采样精度。这时候就需要把模拟地和数字地分开布局最后在电源输入端附近通过一个单点连接通常用0欧电阻或磁珠汇合这个单点就是“星型”的中心。STM32最小系统本身没有高精度模拟信号处理我建议直接用大面积铺铜先把GND网络做好这个经验对新手最友好。铺完之后在嘉立创EDA专业版里执行“铺铜”然后重新覆铜一次确保铺铜区域覆盖了板子所有空白部分。铺铜间距设置成0.3mm以上太近容易出现蚀刻不干净的问题。晶振附近铺铜要特别注意不要形成跨在晶体两端之间的地环路可以在晶振下方铺一块完整的GND铜皮这两个引脚之间的线路尽量短。3.5 泪滴、丝印与DRC检查布线完成、铺铜结束后还要做三件事加泪滴、整理丝印、跑DRC。泪滴的作用是在焊盘和走线连接处做一个过渡形状增加连接处的面积和强度防止机械钻孔或热应力导致连接点断裂。嘉立创EDA专业版里直接在“工具”菜单下选“泪滴”全部焊盘选上一键生成就行。这是一个看似不起眼但很有用的操作我所有的板子都会加。丝印整理经常被忽略但是对焊板子的人影响很大。把顶层丝印里每个元件的位号R1、C1、U1这种移动到元件旁边不重叠的位置方向统一朝一个方向字号调小一点但不低于0.8mm。对于排针这种接口我习惯在丝印层加上注释比如标一个“5V”、“GND”、“3.3V”这样焊接的时候不用对着原理图一个个查引脚能明显减少接错线的概率。最后运行设计规则检查DRC检查项里重点关注“最小间距”、“最小线宽”、“未连接网络”、“丝印到焊盘间距”这几项。系统报错不用慌双击错误信息会跳转到对应的位置逐条确认是真实问题还是误报。比如“丝印压焊盘”这种错误如果丝印确实压在排针焊盘上会挡住焊接需要调整但如果是丝印标签靠近焊盘但没有实际重叠可以忽略。3.6 导出文件与查看3D预览PCB检查没问题后先看一遍3D预览。嘉立创EDA专业版自带了3D预览功能可以从工具栏里打开能看到板子的三维效果、元件摆放高度、排针方向等。有条件的还可以导出STEP文件放到机械设计软件里做结构验证检查排针和外壳是否干涉。这个功能特别适合第一次画板的人能帮你发现二维视角下完全看不出来的问题。确认无误后在“制造”菜单里选“导出Gerber”。嘉立创EDA会自动生成板厂需要的所有光绘文件包括线路层、丝印层、阻焊层、钻孔文件。导出时选“Gerber RS-274X”格式钻孔选“Excellon”和嘉立创打样要求一致。这里多说一句导出后不要直接改文件内容直接用压缩包上传到下单页面即可。4. 常见问题与排查实录画板子这件事看一百遍教程不如自己亲手踩一次坑。我把平时最常见的几个问题列出来按现象、原因、解决办法的方式写你遇到类似情况可以直接翻这一节。4.1 元件库找不到或者封装对不上嘉立创EDA的元件库虽然很全但偶尔会搜不到某个冷门元件或者搜出来的是原理图符号没有PCB封装。这种情况不用慌两种办法解决一是换一个等效型号搜索比如搜不到STM32F103C8T6就搜STM32F103库里通常有多个变种二是用嘉立创EDA的“封装管理器”给已有符号指定一个标准封装LQFP48这种标准封装在库里一定能找到只是需要手动关联一下。封装不对这个问题很隐蔽如果画完原理图转PCB时提示某个元件没有封装说明你放置的元件只有原理图符号。返回原理图选中该元件在属性面板里的“封装”栏手动填写或搜索正确的封装。LQFP48对应的标准封装名称一般是LQFP48_7x7或类似格式搜索时注意引脚间距和大小是否匹配。0603电容电阻的封装名称是C0603、R0603注意别选成英制的0603还是公制的0603嘉立创EDA里一般都用公制命名。4.2 DRC报错哪些必须改哪些可以忽略DRC报错分两类。一类是“错误”Error比如未连接网络、两个焊盘短路、线距小于最小间距这种必须改不改板厂做出来就是废板。另一类是“警告”Warning比如丝印压在焊盘上、元件重叠导致的间距变小这类通常需要查看具体位置确认不影响功能后可以忽略。我最常遇到的警告是电源线宽度提示因为3.3V网络用了1mm线宽但过孔的内径只有0.3mmDRC会提示过孔处的电流承载能力不足。这种问题实际影响不大因为普通过孔镀铜厚度足够承受几百毫安的电流F103本身功耗也就几十毫安所以可以直接忽略。但如果你的板子要驱动电机或者大功率负载就要特别注意过孔数量和尺寸必要时多个过孔并联分担电流。4.3 板子焊好不能下载程序的排查顺序这是最常见的“幽灵问题”板子看起来没问题但ST-Link就是连不上芯片。按照下面这个顺序排查百分之九十的情况能解决先量电源用万用表量AMS1117输出引脚对地电压正常情况下是3.3V。如果量出来是0V检查5V是否输入、AMS1117是否焊反、是否有短路。如果量出来电压很低把LED和芯片断开再量排除负载短路。再查复位量NRST引脚电压应该接近3.3V。如果为低电平说明复位电路有问题可能是10k上拉电阻没焊好、100nF电容短路或者复位按键一直处于按下状态。查BOOT0量BOOT0引脚电压必须接近0V。如果BOOT0被拉高芯片会进入串口下载模式或者SRAM启动模式SWD虽然能连接但程序运行状态不对。BOOT0下拉电阻虚焊是新手常犯的错误。最后查SWD接线看下载器连接排针的顺序3.3V、SWDIO、SWCLK、GND四根线一一对应特别是SWDIO和SWCLK有没有接反。排针丝印标反的情况我见过很多次焊接之前先对照原理图确认每根线对应的引脚号。如果这些都查完还是连不上把晶振两个引脚的对地电容去掉试试有极少数情况是晶振停振导致整个芯片不工作。去掉后只要能连接再逐步排查晶振电路的问题。4.4 打样下单时的选项怎么选嘉立创EDA导出Gerber后直接在嘉立创官网下单页面选择文件上传系统会自动解析出板子的尺寸、层数、数量。打样时几个选项PCB层数选2层板子尺寸会自动识别为你的板框大小默认是205mm×205mm以内都按一个价格。板材选FR-4板厚1.6mm就行和批量生产兼容。表面工艺选“喷锡”便宜实用对一般电路完全够用。有铅和无铅选无铅环保且兼容性更好。阻焊颜色默认绿色最便宜想好看可以选黑色或白色但不建议为了拍照好看影响实际使用绿色板子的检修可见性最好。收到板子之后先别急着焊接用万用表测一下3.3V电源轨对GND的阻抗正常应该是几百欧姆以上。如果是接近0欧姆说明板子厂家加工有问题或者电源有设计短路先联系板厂处理不要直接上电。5. 一些与单板调试相关的实操经验这块最小系统板画完、焊好、能下载程序之后很多朋友会想给它加一些额外功能。我做过几个基于STM32的项目有一个经验特别想说一下扩展功能时一定要注意电源裕量。AMS1117最大输出电流1A但实际稳定输出电流大概在800mA左右如果你又接Wi-Fi模块又接显示屏又接舵机3.3V很容易被拉垮板子会随机复位。设计时提前算一下总电流不够就换DC-DC方案或者外接独立电源。关于晶振调试还有一个经验把主时钟改成外部8MHz晶振后程序里如果用的是内部HSI时钟那外部晶振不工作你根本发现不了问题。判断晶振是否起振最直接的办法是用示波器探头测量OSC_OUT引脚能看到8MHz正弦波就算正常。没有示波器的话代码里写一个延时点灯程序如果灯闪的速度和预期明显不同也说明晶振可能没起振此时检查负载电容和引脚虚焊。文件管理这件事很多人不重视但我吃过亏。嘉立创EDA专业版的工程分为云端工程和本地工程我建议每次画完一个阶段就手动“另存为”一份本地副本或者提交一次版本记录。否则哪天误操作把某个元件删了CtrlZ按不回来的时候心疼都来不及。工程文件命名也尽量带上日期比如STM32F103C8T6_MinimumSystem_20250115这样回看版本、发给朋友参考都特别清晰。最后分享一个画板子的个人体会画自己的第一块STM32最小系统板时别追求面积小、功能多先把板子画明白、跑通、点亮LED比什么都有成就感。之后再加按键、加OLED、加传感器每次只改一个功能模块出问题也能快速定位。这块板子的完整工程和BOM清单我都保留着有需要的朋友可以按这篇文章的思路自己复刻一份画板子过程中遇到的多数问题都能在嘉立创EDA官方论坛里搜到结合本文的排查思路基本不会卡太久。