
做STM32开发很多人第一块板子不是自己画的而是网上买来的三五十块钱核心板。我自己一开始也是这么干的直到有一次做项目发现核心板引脚不够用、布局也不顺手才下决心自己画板。试了一圈之后发现用嘉立创EDA专业版画STM32F103C8T6最小系统板这件事难度被严重高估了。真正的门槛在于资料太碎这个教程讲原理那个视频只讲操作中间断层新手跟着做很容易卡在某一步就放弃了。所以我把完整流程整理成一篇能从头跟到尾的保姆级指南从最小系统由哪几部分组成、元件怎么选到嘉立创EDA专业版里的原理图绘制、封装检查、PCB布局布线再到下单打样、焊接验证每一步都给了明确的做法和参数。适合零基础准备系统学STM32的同学也适合正在做课程设计、毕业设计或者想踏踏实实搞懂开发板底层原理的人。做完这块板子后面你所有基于STM32的小项目都能在它上面快速验证。1. 动手前先把“最小系统”拆明白STM32F103C8T6要哪些外围电路1.1 最小系统不是“最小元件”是“最小可用”新手最容易误解“最小系统”四个字以为是东西越少越好。实际上最小系统的定义是让MCU能正常工作的最小外围电路集合少一个关键模块芯片就跑不起来也不能光有芯片连程序都烧不进去那叫“最小原理图”不叫“最小系统”。STM32F103C8T6要正常工作至少需要几类外围电路电源电路给芯片提供稳定的3.3V电压。时钟电路芯片内部的CPU和片上外设需要时钟信号。复位电路保证上电时芯片进入确定的初始状态也方便手动复位。启动模式配置决定芯片上电后从哪块存储区启动。下载调试电路总得有个途径把程序烧进去。除此之外为了使用方便我建议再加上电源指示灯、用户LED和排针引脚引出。这样板子不只是“能跑”而是“能用”后续做实验不用每次飞线。1.2 物料清单和工具准备我画第一块板子时最大的教训就是画原理图之前没有提前确定元件封装和采购渠道结果画完发现搜出来的封装在立创商城里没有现货或者买回来的物料和封装对不上。为了避免这事我建议先把物料表列出来再动手。下面是一份可以直接参考的物料清单模块元件数量说明主控STM32F103C8T61LQFP48封装32位M3内核电源AMS1117-3.31低压差线性稳压器5V转3.3V电源滤波10uF陶瓷电容2AMS1117输入输出侧各一个电源滤波0.1uF陶瓷电容4其中三个给VDD引脚去耦一个给VDDA晶振8MHz无源晶振1HSE高速外部时钟晶振负载20pF陶瓷电容2配合8MHz晶振使用复位10K电阻1NRST上拉复位0.1uF陶瓷电容1与复位电阻并联滤除干扰复位按键6x6轻触按键1手动复位启动配置10K电阻2BOOT0和BOOT1下拉下载2.54mm排针1排4-5针引出SWD接口指示灯红色LED1电源指示灯指示灯绿色LED1用户LED随便挂一个GPIO限流电阻1K电阻2给两个LED限流排针2.54mm单排排针2排左右引出GPIO引脚工具方面除了嘉立创EDA专业版之外还需要一把电烙铁、焊锡丝、助焊剂、镊子、万用表以及ST-Link V2下载器。如果打算从USB取电准备一个Micro USB座或者USB-Type-C座但第一版先不用急着加直接用5V排针供电反而省事。1.3 LQFP48芯片引脚和电源分布速览画原理图前建议把STM32F103C8T6的引脚布局弄清楚。这个芯片是LQFP48封装一共48个引脚其中电源引脚数量不少很多新手画板失败就是因为对这些引脚处理不当。我简单列几个关键点数字电源引脚VDD_124脚、VDD_236脚、VDD_348脚全部接3.3V每个引脚旁边就近放一个0.1uF去耦电容到GND。数字地引脚VSS_123脚、VSS_235脚、VSS_347脚全部接GND。模拟电源引脚VDDA9脚接3.3VVSSA8脚接GND。在VDDA和VSSA之间放一个1uF电容和一个10nF电容并联滤波。VBAT引脚1脚如果不使用RTC外部电池直接接3.3V。BOOT0引脚44脚下拉10K到GND正常从内置Flash启动。NRST引脚7脚接上拉10K、复位电容和复位按键。PD0/PD1引脚5、6脚在F103C8T6里默认复用为OSC_IN和OSC_OUT连接8MHz晶振。把电源和地引脚理清楚原理图就已经成功了一大半。2. 嘉立创EDA专业版工程创建与关键环境设置2.1 为什么选专业版而不是标准版很多人手机上装的是嘉立创EDA标准版找教程也只知道标准版但新项目我强烈建议直接上专业版。原因有三第一专业版是后续主推的版本功能迭代和政策支持都往这边倾斜现在学标准版等于刚出门就准备搬家第二专业版在原理图和PCB编辑器的联动、3D预览、协作功能上明显更强画稍复杂一点的板子不会卡顿第三专业版和嘉立创PCB下单系统无缝衔接画完板子可以直接提交生产不用倒腾中间文件。当然标准版并不是不能用它更轻量、上手更快。如果你已经用标准版画过几次板换到专业版也很快界面逻辑是相似的。对完全没有经验的新手来说也不用纠结直接按这篇文章用专业版就行。2.2 新建工程与界面布局打开嘉立创EDA专业版登录账号在主页点击“新建工程”输入工程名称比如“STM32F103C8T6_Minimum_System”。工程里会自动生成原理图、PCB、BOM清单等文件节点整个过程不需要手动创建。进入原理图编辑器后熟悉一下界面中间是画布左侧是元件库面板顶部是工具栏右侧是属性面板。默认的单位一般是mm如果不是在设置里切到mm画板时用公制思维更直观。放置元件的方式很简单在左侧面板的搜索框输入元件名称比如“STM32F103C8T6”就能搜到带封装的符号双击或拖拽到画布上。嘉立创EDA专业版的元件库和立创商城是打通的搜出来的元件一般都有对应的LCSC编号和封装选的时候优先选带编号的因为这意味着能直接买得到。2.3 画图前必须设置好的选项不少新手上来就画画到一半发现引脚间距太小、线画出去对齐困难。所以画图前花两分钟做几项设置能省后面很多麻烦。一是栅格设置在原理图里把栅格设成0.1mm左右画线和摆放元件时更容易对齐。二是图纸大小默认A4横向足够如果元件多可以换成A3但不要搞成超大图纸生产文件不需要那么大。三是自动保存专业版默认开启建议把间隔设短一点比如5分钟防止电脑中途死机丢工作。还有一个容易忽略的点画原理图前先确认你的元件库路径。专业版可以直接用在线元件库也可以加载私有库。新手不需要建私有库但如果有自己常用的元件比如特定封装的排针、按键放进个人库以后用起来会快很多。3. 原理图实操从电源到下载接口逐个模块画完3.1 电源电路USB 5V降压到3.3V电容不要省电源是整个系统的地基地基不稳后面全是隐患。STM32F103C8T6工作电压是2.0V到3.6V最常见的就是3.3V供电。很多开发板采用USB接口取5V然后通过AMS1117-3.3降到3.3V。在原理图上这样画5V网络标注为VCC5V接AMS1117-3.3的输入端VinAMS1117的GND接地输出端Vout输出3.3V网络标注为VCC3V3。在Vin和GND之间放一个10uF电容和一个0.1uF电容并联在Vout和GND之间同样放一个10uF电容和一个0.1uF电容并联。为什么要放两组电容10uF电容是“大水池”用于应对瞬间电流需求0.1uF陶瓷电容用于滤除高频噪声。AMS1117这种LDO对输出电容有一定要求太小容易振荡输出纹波大所以输出侧至少要有10uF打底。AMS1117-3.3虽然简单但它毕竟是老牌LDO压差比较大输入输出压差要在1V以上才能工作稳定所以5V输入完全够用。但如果以后你想用锂电池供电3.7V电池满电才4.2V用AMS1117就不合适了到那时候再换成ME6211这类低压差LDO也来得及。3.2 时钟电路8M晶振和两个负载电容的选取STM32F103C8T6内部有一个8MHz的RC振荡器但精度很差用串口通信或者做时序要求高的项目时必须外接8MHz晶振。这个晶振是无源晶振需要两个负载电容才能起振。画法很简单8MHz晶振的两个引脚分别接OSC_IN和OSC_OUT然后从晶振的两端各接一个电容到GND。负载电容的取值可以按公式算假设晶振要求的负载电容CL是20pFPCB上引脚和走线带来的杂散电容大约是3到5pF那么每个外部电容C就取2倍的关系C 2 × (CL - Cstray)算下来约30到34pF取33pF比较合适。不过市面上常见的8MHz晶振CL规格多数是20pF或18pF配套电容直接用20pF也能正常起振很多开发板就是这么干的。最稳妥的办法是看晶振规格书按它的CL值计算不要闭眼抄别人板子的电容值。晶振旁边尽量不要再放其他走线尤其是不要把高频数字信号从晶振底下穿过。后面到了PCB布线阶段还要单独注意晶振区的处理。3.3 复位电路与启动模式处理复位电路的作用是让STM32上电时进入一个确定的初始状态。F103的复位引脚是NRST低电平有效。设计上一般这样接NRST通过一个10K电阻上拉到3.3V正常工作时为高电平同时并联一个0.1uF电容到GND吸收干扰再并联一个轻触按键按键两端分别接NRST和GND按下时把NRST拉低实现手动复位。有人会问STM32内部不是有上拉电阻吗为什么外面还要再放一个10K内部上拉虽然有但幅度有限外部再加一个上拉抗干扰性更好尤其在一些电机、继电器等电磁干扰比较大的环境里复位引脚不容易被误触发。这个电容和电阻的成本也就几分钱没必要省。启动模式配置也很关键。BOOT0引脚在芯片上电瞬间决定启动位置BOOT0为低电平从内置Flash启动这是正常模式BOOT0为高电平、BOOT1为低电平时从系统存储器启动用于ISP串口下载BOOT0和BOOT1都为高电平时从SRAM启动常用于调试。作为常规最小系统板把BOOT0和BOOT1都通过10K电阻下拉到GND就行。以后如果要用串口ISP下载只需要临时把BOOT0跳到3.3V下载完再跳回来。你想留一个跳线帽或者焊盘都可以但第一版先按下拉处理简洁可靠。3.4 SWD下载调试接口和LED指示灯程序烧录是必须解决的问题。STM32支持JTAG和SWD两种调试方式其中SWD只需要4根线3.3V、GND、SWDIO、SWCLK。为了保险起见常见的SWD座会做成5针再加上一个NRST复位引脚部分下载器需要带复位引脚才能连接。画法上用一个2.54mm排针引出这5个信号顺序建议是3.3V、SWDIO、SWCLK、GND、NRST和市面上大部分ST-Link接线顺序保持一致插线不容易搞错。LED指示灯也不用复杂两个LED就够。电源指示灯LED阳极接3.3V阴极串联1K电阻到GND。这样LED工作电流大概是(3.3-1.8)/1000约1.5mA亮度足够又不费电。用户指示灯随便选一个GPIO比如PC13LED通过1K电阻接到PC13和GND之间程序里拉低引脚就能点亮这个和很多STM32开发板的板载LED逻辑一致方便移植例程。3.5 原理图连线检查与常见低级错误所有模块在原理图上放好、连好网络标签之后最后一定要做一次系统性检查。我的习惯是分三步检查。第一步看电源网络VCC3V3和GND是否准确连接到了所有需要供电的地方不要漏掉VDDA和VBAT。第二步看引脚连接对照芯片数据手册逐个引脚确认有没有漏接、错接。第三步检查网络标签有没有拼写错误比如“VCC3V3”和“VCC_3V3”在EDA眼里是两个不同的网络漏出一次就可能导致芯片没供电。新手最容易犯的错误之一是芯片底下有一堆引脚悬空。数字IO不用的引脚可以暂时悬空但电源、地、BOOT、NRST这些关键引脚绝不能悬空。另一个常见问题是后的网络标签太多连线乱飞建议用网络标签而不是跨一大张纸画线这样原理图清晰检查起来也方便。4. 封装匹配与3D预览先看形状再进PCB4.1 搜索元件时容易遇到的“符号和封装”问题原理图画完不能急着转PCB还要确认每个元件都有正确的封装。初学者经常搞混“原理图符号”和“PCB封装”的关系符号是逻辑上的引脚定义封装是物理上的焊盘形状和尺寸。一颗元件在嘉立创EDA里搜索时一般会显示符号和封装是绑定的但偶尔也会出现同一个芯片有多个封装候选的情况比如LQFP48、QFN48、UFQFPN48选错封装PCB焊盘就对不上实际芯片。所以在放置元件时就要留意元件名后面的封装信息。STM32F103C8T6要确认是LQFP487x7mm。AMS1117也有SOT-223和SOT-89不同封装注意选SOT-223散热好一些焊接也方便。晶振则要注意是无源还是无源贴片晶振常见有3225封装如果不是很确定就去立创商城页面看实物图。4.2 调整封装哪些元件建议换大封装嘉立创EDA元件库里的电阻电容有时候默认封装是0402尺寸极小手工焊接会非常痛苦。既然是自己打样自己做板强烈建议把电阻电容统一改成0603封装。0603尺寸适中用镊子夹得住烙铁拖焊也顺烙铁头不容易碰到旁边的元件。0402也不是不能用但对新手实在太不友好没必要自找麻烦。修改封装的方法是在原理图里选中元件在右侧属性面板找到“封装”栏点击替换搜索目标封装类型确认后更新。如果替换失败检查元件是否有锁定属性。排针、按键这种元件要注意排针的间距是2.54mm标准间距和洞洞板、面包板一致。轻触按键选6x6x5规格手感好安装高度合适按压方向别搞反。4.3 3D预览和检查装配方向这一步很多人懒得做其实价值很大。嘉立创EDA专业版支持3D预览点击“3D预览”按钮后可以看到整个板子的立体效果。你会在3D视图里发现很多平面图上看不出来的问题比如按键被旁边的排针挡住没法按、LED方向装反、排针插座的开口方向朝了板内侧等等。作为初次画板我建议在转PCB之前至少做两次3D预览一次检查元件整体布局是否合理一次在你完成PCB布线后再看一次确认有没得器件挡路或干涉。5. PCB布局板框、排针和关键元件摆放顺序5.1 板框尺寸怎么定排针间距别踩坑原理图检查完毕就可以从原理图切换生成PCB文件了。在专业版中使用“设计”菜单里的“原理图同步到PCB”功能软件会把所有元件带封装同步到PCB画布上然后再开始布局。第一步是画板框。板框就是板子的物理边界在“板框层”用画板框工具画一个矩形。对于STM32F103C8T6最小系统板一个很实用的尺寸是长53mm、宽27mm左右。这个尺寸刚好放下左右两排2.54mm排针板子宽度适中SMT和手工都方便。排针的间距要特别注意左右排针若都是双排针别把两排针之间的距离设计得太小否则插进面包板时可能挤压旁边插孔。如果计划做成典型的“最小系统板”形态两侧各一排排针中间放芯片板宽至少26mm以上才舒服排针孔离板边要留1.5mm到2mm不然后续焊接和打磨板边容易伤到焊盘。5.2 布局顺序先接插件后MCU再小元件PCB布局讲究顺序不能东放一个、西放一个。我的做法是先放接口类元件再放主控最后放小元件。先放SWD排针、5V电源输入焊盘、复位按键、LED这些“人要和它交互”的元件确定它们在板子上的位置。比如SWD排针放在板子一角或一侧边缘方便插下载线复位按键放在顺手的位置电源输入放在靠近板边的地方方便接电源线。然后再放MCU放在板子中央稍微偏向排针的内侧。最后放晶振、去耦电容、滤波电容、下拉电阻这些小元件它们应该围绕MCU摆放越近越好。这样做的好处是接口位置确定后MCU和小元件的位置就有了参照布局不会越摆越乱。如果你先把MCU放中间再去迁就排针很容易出现引脚出线绕远路的情况。5.3 去耦电容、晶振、LDO各自该放哪去耦电容必须贴着对应VDD引脚越近越好最好放在芯片同侧、靠近引脚根部电容的GND端打过孔到地平面。晶振放在MCU的OSC_IN/OSC_OUT引脚附近最好不要隔着其他元件。LDO放在输入电源接口附近远离晶振和模拟区域避免大电流噪声耦合到高频时钟。电源指示灯放在电源输入附近用户LED放在板边或靠近对应GPIO排针区域。关于去耦电容为什么必须贴近引脚可以这样理解0.1uF电容的作用是在引脚电流瞬间变化时充当“本地能量池”。如果电容离引脚太远连接引脚的走线太长寄生电感会削弱电容的高频响应等于白放了。很多板子偶尔出现程序跑飞、ADC波动大都和去耦电容摆放不当有关。6. 布线实战地线处理、晶振走线和铺铜收尾6.1 先布电源和地重要性超过信号线PCB布局完成后进入布线环节。很多新手一上来就急着连信号线这是反的。正确顺序是先布电源和地再布关键信号最后再布普通信号。原因是电源和地网络涉及所有元件它们决定整个板子的电流回路质量。电源线如果细压降大地线如果不完整信号回流路径会变得很长产生噪声。在最小系统板里我建议的线宽是电源线0.5mm以上地线尽量宽至少0.5mm如果能连到铺铜里效果更好普通信号线用0.25mm约10mil就行F103的引脚间距完全放得开。布线的过程里要善用快捷键和菜单命令。在嘉立创EDA专业版里PCB界面下选择“布线工具”或使用快捷键W点击两个焊盘即可走线需要换层时放置过孔软件会自动切换到另一层。走线尽量短、尽量直不要为了美观走成特别长的U形。6.2 星型接地在两层板上的正确理解搜索“嘉立创EDA如何布线星型接地”的人很多说明不少朋友听说过“星型接地”但不知道在自己的板子上该怎么用。星型接地的本意是所有电路模块的地线都从同一个参考点接出像星星一样避免多个模块的接地电流互相串联、形成干扰回路。这个思路在模拟电路和低频电路里很有效尤其是音频、微弱信号采集项目里很常见。但在STM32最小系统板这种数字电路为主、工作在几十MHz级别的板子上情况有点不同。信号频率高、电流翻转快更有效的接地方式其实是完整的地平面铺铜而不是把每模块的地线单独拉成一条细细的星型线。原因在于高频信号的返回电流会尽量沿着信号走线正下方的地铜箔走如果地线是一条细线回流路径窄回路电感大会引入噪声。所以我的建议是最小系统板直接采用大面积铺GND的方式所有GND通过过孔连接到地平面不同功能模块数字电路、晶振区、电源区的GND自动通过地平面汇聚相当于星型接地在大面积铜皮上的自然实现。如果你以后画带ADC采集传感器的混合信号板再考虑把模拟地和数字地分区在电源输入处用0欧电阻或磁珠单点相连。6.3 晶振走线禁忌与处理细节晶振是高频敏感电路处理不好轻则波形难看重则直接不起振。画这块板子时晶振区要遵守几条硬规矩晶振和两个负载电容要尽量靠近OSC_IN、OSC_OUT引脚走线短且对称。晶振下方不要铺铜铺铜会增加寄生电容外部负载电容的设计值是按照一定杂散电容算的大面积铺铜扩容会改变振荡频率甚至停振。晶振走线不要穿过其他信号线尤其不要靠近PA0这种可能用于ADC的引脚避免被高频时钟串扰。晶振外壳如果接地不要让你的GND铺铜和晶振本体形成大面积耦合。具体操作时可以先在晶振区画一个禁布区Keep-Out区域或者直接让晶振底下不要铺铜。有些EDA软件铺铜时可以设置“禁止铺铜区域”在嘉立创EDA专业版里通过放置禁布区解决这一点在做铺铜操作时单独处理。6.4 铺铜、过孔和DRC检查铺铜在整个布线完成后进行。选择“铺铜工具”在板框区域内沿着边界画一个铺铜范围网络选择GND先在顶层铺再切到底层铺。两层都铺成GND中间用过孔把两层地铜连接起来形成“地墙”信号回流路径更短屏蔽效果也更好。过孔的作用不只是换层还承担着连接顶层和底层地铜的任务。我常用的过孔规格是外径0.6mm、孔径0.3mm这个尺寸在嘉立创的打样工艺里既稳定又便宜。在GND铜皮上可以多打几个过孔尤其是在关键元件旁边比如MCU的GND引脚附近、去耦电容的GND端附近、晶振电容的GND端附近都能通过过孔快速进入地平面。布线全部完成后做一次DRC设计规则检查。在专业版里点击“DRC”按钮软件会检查间距、线宽、短路、未连接网络等问题。设置规则时建议最小线宽0.2mm、最小间距0.2mm、过孔外径不小于0.45mm。如果DRC报错逐条检查修改不要忽略警告就往下一步走。7. 生成生产文件、下单打样与焊接验证7.1 生产文件和下单参数怎么填DRC没问题后就可以准备下单。在嘉立创EDA专业版里执行“制造”菜单中的“PCB制版文件”或直接点击“PCB下单”按钮软件会生成PCB生产所需的光绘文件并跳转到嘉立创PCB下单界面或者给你一个文件包。下单时要填几个关键参数板层2层。板子尺寸软件会自动带出确认和设计的板框一致。板厚默认1.6mm够用。铜厚1oz常规。阻焊颜色绿色默认便宜出货快。表面处理喷锡最普通也最实惠。生成生产稿之后别急着付款先看看生产稿上的钻孔图和丝印层。重点检查孔径是否正常、丝印有没有反向、元件位置是否都落在板框内。我第一次画板没注意丝印结果有一个“R1”标在IC下方板子打回来直接被芯片挡住了虽然不影响电气性能但不美观、干扰排查。7.2 拿到板后的焊接顺序板子到手先不要一口气把所有元件都焊上去。我的焊接顺序是先焊电源部分再焊MCU最后焊外围元件。第一步焊AMS1117和它的输入输出电容焊完不要继续焊别的先接5V电源用万用表量3.3V输出是否正常。不要嫌麻烦这一步如果没焊好或电容短路后面MCU上了也会白烧。确认3.3V正常后再焊STM32芯片和去耦电容。LQFP48芯片手工焊接方法是先把芯片放到焊盘上对准方向用烙铁固定对角两个引脚再在四周引脚上涂助焊剂用烙铁拖焊让焊锡自然吸附到引脚和焊盘之间。拖完后用放大镜或手机微距拍照检查引脚有没有桥连。焊完芯片后再焊晶振、电容、电阻、按键、排针这类元件。排针可以先不焊死把它插到洞洞板上让板子立起来方便后续调整但一般还是直接焊死毕竟最小系统板本身就是要做成独立模组。7.3 上电验证ST-Link识别不到怎么办全部焊完后上电前先用万用表测一下3.3V网络和GND之间的电阻正常应该在几百欧以上如果接近0说明有短路别上电先查短路。查到短路的方法是把万用表打到蜂鸣档用表笔逐一对可疑元件的电源和地两端测量尤其是新焊的电容电容焊反或者焊偏很容易短路。确认没有短路后接上5V电源量3.3V正常电源LED应该点亮。然后接ST-LinkSWD四根线对应连接3.3V、SWDIO、SWCLK、GND打开编程软件以Keil为例在“Options for Target”里选择ST-Link Debugger点击Settings如果能识别到IDCODE说明芯片已经在正常工作。如果识别不到按顺序排查查3.3V是否到了所有VDD引脚量NRST正常应该是高电平如果它被拉低芯片会一直处于复位状态量BOOT0正常应该是低电平如果悬空或者被拉高启动模式不对检查SWDIO和SWCLK是否接反检查ST-Link的驱动是否正常。有个比较隐蔽的坑是如果程序里禁用过SWD引脚那下次就无法连接处理办法是用ST-Link的“Connect under Reset”功能也就是在复位期间连接。这也是为什么SWD座上我会建议留NRST这个引脚遇到这种问题很管用。晶振不起振排在硬件问题里也比较常见症状是芯片能连上SWD但程序跑不起来或者外部时钟配置失败。用示波器量晶振引脚能看到正弦波最好没有示波器时可以先怀疑两个负载电容是否匹配试着换成15pF到22pF之间的值太大会停振太小则频率偏高。我做这块板子用到的元件全部来自立创商城打样直接在嘉立创下从画完到板子到手前后不到一周。如果接下来你打算做基于STM32的毕业设计这块最小系统板完全可以当底板外接传感器时直接在排针上跳线相关扩展电路画到另一块板子上调试步骤清晰出了问题也知道是底板还是扩展板的问题。这块板子画完之后你可以再试试给它加一块CH340串口芯片、加USB座、把排针排母换成贴片焊盘做出更接近市售开发板形态的版本。每次扩展都会让你的画板能力上一个台阶。