ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

STM32F103T8C6最小系统板设计:从原理图到PCB的实战避坑指南

2026/10/7 1:01:23 拓冰建站 浏览量
STM32F103T8C6最小系统板设计:从原理图到PCB的实战避坑指南 STM32F103T8C6这颗料在圈子里有点特殊——它是LQFP48封装里少见的64KB Flash版本比常见的C8T6少一半存储但价格往往更便宜而且引脚完全兼容。很多人第一次画最小系统板会直接抄C8T6的图纸结果打样回来发现程序烧不进去或者跑着跑着就复位。我前后用嘉立创EDA画过五六版STM32最小系统板从最初的C8T6到后来的T8C6、G474踩过的坑基本覆盖了电源、晶振、复位、下载接口这几个模块。这篇就把T8C6最小系统板从原理图到PCB的完整流程拆开讲重点说清楚每个外围电路为什么这么设计以及嘉立创EDA里那些容易忽略的操作细节。1. 先搞清楚T8C6和C8T6到底差在哪1.1 存储容量差异带来的选型判断STM32F103T8C6和C8T6的核心区别只有一个Flash容量。T8是64KBC8是128KB。RAM都是20KB主频都是72MHz封装都是LQFP48引脚定义完全一致。这意味着你可以用同一块PCB焊T8C6或者C8T6都能跑只是程序大小受限。那为什么还要专门用T8C6两个原因。一是成本T8C6在批量采购时单颗能便宜一两块钱对于功能固定的产品来说64KB够用就没必要上128KB。二是有些项目本身代码量就小比如单纯的传感器采集加串口输出编译出来也就二三十KB用T8C6绰绰有余。但这里有个坑要注意如果你用STM32CubeMX生成代码默认的工程配置可能按C8T6的128KB来设置。烧录到T8C6上如果程序超过64KB编译能过但运行会出问题。所以在Keil或者STM32CubeIDE里要把Flash起始地址和大小改成0x08000000、0x1000064KB。这个设置在链接脚本或者工程配置的Target选项卡里改不改的话编译器不会报错但实际烧录时会发现程序跑飞。1.2 最小系统板到底需要哪些电路最小系统板的核心就四块电源、晶振、复位、下载接口。再加上BOOT启动模式选择基本就齐了。但每一块都有讲究。电源部分STM32F103的工作电压是2.0V到3.6V典型3.3V。输入可以用5V通过LDO降压也可以直接给3.3V。我一般用AMS1117-3.3或者RT9013前者便宜但静态电流大后者贵一点但效率高。如果板子上有USB接口直接从USB的5V取电最方便。去耦电容不能省每个VDD引脚旁边放一个100nF再加一个10uF的钽电容或者电解电容做整体储能。VBAT引脚如果不用电池直接接3.3V就行但要注意有些封装里VBAT和VDD是分开的别漏接。晶振部分STM32F103支持外部高速晶振HSE和外部低速晶振LSE。HSE一般用8MHz配合内部PLL倍频到72MHz。LSE用32.768kHz主要给RTC用。如果不用RTCLSE可以省掉。HSE的负载电容要根据晶振规格书来选常见的是20pF左右但实际布线时寄生电容会影响所以一般选15pF到22pF之间。我习惯先用20pF打样回来测频率偏了就换。复位电路最简单的就是一个10k上拉电阻加一个100nF电容再加一个复位按键。NRST引脚内部有弱上拉但外部再加一个更稳。按键按下时把NRST拉低松开后电容充电产生延时保证复位可靠。下载接口SWD是最常用的只需要SWDIO、SWCLK、GND、3.3V四根线。我一般用2.54mm的4Pin排针或者1.27mm的贴片座。串口下载也可以但需要BOOT0拉高操作麻烦不如SWD方便。BOOT模式BOOT0和BOOT1决定启动方式。正常从Flash启动时BOOT0接10k下拉到GNDBOOT1随便接。如果要串口下载BOOT0接高电平。我一般把BOOT0用一个跳线帽或者拨码开关控制方便切换。2. 嘉立创EDA原理图绘制中的关键操作2.1 元件库的选择与封装关联嘉立创EDA有标准版和专业版两个版本我两个都用过。标准版上手快适合简单板子专业版功能强支持多页原理图和更复杂的PCB规则。画STM32最小系统板标准版完全够用。新建工程后第一步是找元件。嘉立创EDA的元件库分系统库和用户库系统库里有很多常用元件。搜“STM32F103T8C6”如果系统库没有可以去立创商城搜然后点“放置到EDA”。这样会自动关联好符号和封装。这里有个细节STM32F103T8C6的LQFP48封装嘉立创EDA里可能叫“LQFP-48_7x7x05P”之类的名字。你要确认引脚间距是0.5mm本体尺寸7x7mm。如果封装不对PCB画出来焊盘位置全错。我一般会打开封装预览数一下引脚数再看一下焊盘长度和间距。关联封装的操作在原理图里双击元件在属性面板里找到“封装”一栏点进去选择对应的PCB封装。如果系统库没有可以自己画或者从立创商城下载。自己画封装时焊盘长度一般取1.5mm到2mm宽度0.3mm左右间距0.5mm。焊盘太短不好焊接太长容易连锡。2.2 电源网络和去耦电容的布局逻辑画原理图时电源网络要用网络标签Net Label来连接不要用长导线拉来拉去。比如3.3V网络在每个需要的地方放一个“3.3V”标签EDA会自动把它们连在一起。GND用接地符号。去耦电容的放置有个原则每个VDD引脚配一个100nF尽量靠近引脚。在原理图上我习惯把电容画在芯片旁边用短导线连到VDD和GND。虽然原理图上位置不影响PCB但这样画方便检查有没有漏掉。STM32F103T8C6的LQFP48封装有多个VDD和VSS引脚具体是VDD_1、VDD_2、VDD_3、VDD_4VSS_1、VSS_2、VSS_3、VSS_4还有VDDA和VSSA。VDDA是模拟电源给ADC用的必须接3.3V并且旁边放一个100nF加一个1uF的电容。VSSA接GND。VBAT接3.3V或者电池。我见过有人把VDDA悬空结果ADC采样值乱跳。所以模拟电源这部分不能省哪怕你不用ADC也建议接上不然芯片可能工作不稳定。2.3 晶振电路的画法和负载电容计算HSE晶振电路晶振两端分别接OSC_IN和OSC_OUT每个引脚对地接一个负载电容。晶振外壳接地。负载电容的计算公式是CL (C1 * C2) / (C1 C2) Cstray其中Cstray是PCB寄生电容一般3pF到5pF。如果晶振规格书要求CL20pF那么C1和C2大概选36pF到39pF。但实际中很多开发板直接用20pF也能起振因为寄生电容没那么大。我的做法是先按规格书算然后打样回来用示波器测OSC_OUT引脚看频率准不准。如果偏了换电容。但注意示波器探头有电容直接测会影响振荡最好用高阻探头或者测OSC_OUT经过缓冲后的信号。LSE晶振电路类似但32.768kHz晶振的负载电容一般是6pF到12.5pF对应C1和C2选10pF到15pF。LSE的起振时间比较长有时候要几百毫秒所以程序里初始化RTC时要加延时。2.4 复位电路和BOOT跳线的原理图表达复位电路NRST引脚接一个10k电阻到3.3V再接一个100nF电容到GND并联一个按键。按键一端接NRST一端接GND。这样按下按键时NRST被拉低电容放电松开后3.3V通过电阻给电容充电NRST电压缓慢上升产生复位延时。BOOT0和BOOT1BOOT0通过一个10k电阻下拉到GND同时接一个跳线帽或者拨码开关开关另一端接3.3V。BOOT1也类似但一般不用直接下拉到GND就行。在原理图上我用两个2Pin的排针加跳线帽来表示这样PCB上可以插拔。SWD接口用4Pin排针顺序是3.3V、SWDIO、SWCLK、GND。注意SWDIO和SWCLK不要接反否则连不上。我一般会在丝印上标清楚或者用防呆接口。3. PCB布局布线的实战要点3.1 板框尺寸和元件摆放顺序最小系统板的尺寸不用太大5cm x 5cm以内足够。我一般画4cm x 4cm嘉立创免费打样是10cm x 10cm以内所以随便画。元件摆放顺序先放芯片放中间。然后放晶振尽量靠近芯片的OSC引脚走线越短越好。再放去耦电容每个VDD引脚旁边放一个紧贴引脚。然后放电源芯片和接口最后放按键和排针。晶振下面不要走线尤其是高速信号线。晶振外壳接地可以在晶振下面铺一块GND铜皮但不要铺到晶振焊盘上否则短路。3.2 电源走线的宽度和过孔选择电源走线宽度3.3V和5V的主干走线我一般用0.5mm到0.8mm。如果电流不大几百mA0.5mm够了。GND走线尽量粗或者直接铺铜。嘉立创的1oz铜厚0.5mm线宽大概能过1A左右留余量的话0.8mm更稳。过孔电源过孔用0.3mm孔径、0.6mm外径或者0.4mm孔径、0.8mm外径。信号过孔可以小一点0.2mm孔径、0.4mm外径。但嘉立创的工艺最小孔径是0.2mm再小要加钱。去耦电容的走线电容到VDD引脚的走线要短而粗最好直接连。电容的GND端要就近打过孔到GND平面。不要用长走线绕来绕去否则去耦效果大打折扣。3.3 晶振区域的布线禁忌晶振区域是敏感区布线要注意几点。第一晶振走线尽量短最好不超过10mm。第二晶振走线不要和任何其他信号线平行尤其是高频信号。第三晶振下面不要走线可以铺GND。第四负载电容的GND端要就近接地不要共用过孔。我见过有人把晶振放在板子边缘走线拉了20mm结果起振不稳定有时候能跑有时候不能。后来把晶振移到芯片旁边问题就解决了。3.4 SWD接口和复位按键的布局SWD接口放在板子边缘方便插拔。4Pin排针的间距2.54mm焊盘孔径1.0mm。如果空间紧张可以用1.27mm的贴片座但需要对应的线缆。复位按键放在板子边缘方便按。按键的封装常见的有6mm x 6mm的贴片按键或者3mm x 4mm的。我一般用6mm的手感好。按键旁边可以放一个LED做电源指示串一个1k电阻到3.3V。BOOT跳线放在芯片附近用2Pin排针加跳线帽。跳线帽插上就是高电平拔掉就是低电平。丝印上标清楚“BOOT0”和“BOOT1”。4. 打样前的检查和常见错误排查4.1 DRC检查中容易忽略的规则设置嘉立创EDA的DRC检查默认规则可能不够严格我一般会手动改几个参数。线宽最小0.15mm间距最小0.15mm过孔最小0.2mm。这些是嘉立创的工艺极限低于这个值要加钱或者做不了。还有一个容易忽略的是“未连接引脚”检查。原理图里如果有引脚没接DRC会报错。但有些引脚确实不用接比如NC引脚。这时候要在原理图里给这些引脚加“No Connect”标志否则DRC一直报。丝印检查丝印不要压在焊盘上否则焊接时丝印会掉。嘉立创的丝印最小线宽0.15mm字高0.8mm以上。我一般用1mm字高清晰可见。4.2 封装焊盘尺寸的实测验证打样前一定要检查封装。我习惯把PCB导出成PDF用1:1比例打印出来然后把芯片放在纸上比对。如果焊盘位置对不上说明封装错了。LQFP48的焊盘长度一般1.5mm宽度0.3mm间距0.5mm。如果焊盘太长焊接时容易连锡太短引脚放上去够不着。我试过用1.2mm长度的焊盘结果焊接时引脚和焊盘接触面积不够虚焊了好几个。还有芯片本体的丝印框要画对7x7mm。如果画大了芯片放上去歪了不好对位。4.3 嘉立创免费打板的参数填写嘉立创免费打板的条件是10cm x 10cm以内双层板绿油白字1oz铜厚最小线宽0.15mm最小间距0.15mm。满足这些条件就免费但每个月有限制次数。下单时板子厚度选1.6mm阻焊颜色选绿色丝印颜色选白色。如果要做黑色阻焊要加钱。表面处理选“有铅喷锡”或者“无铅喷锡”有铅的便宜无铅的环保。我一般选有铅喷锡焊接容易。还有一个选项是“阻抗控制”如果板子上有高速信号比如USB、以太网需要选这个。STM32最小系统板一般不需要除非你跑了USB全速。但USB全速也就12Mbps不控阻抗也能跑只是误码率可能高一点。4.4 焊接和调试阶段的注意事项板子回来之后先别急着焊芯片。先焊电源部分测一下3.3V输出对不对。如果LDO输出不对检查输入电压和反馈电阻。然后焊晶振和复位电路再焊芯片。焊LQFP48芯片时先用烙铁把四个角的引脚固定然后加锡拖焊。拖焊时烙铁头要干净锡量要少速度要快。焊完用放大镜检查有没有连锡。如果有连锡用吸锡线吸掉。焊完之后先不插电用万用表测3.3V和GND之间有没有短路。如果有短路说明有连锡或者芯片焊反了。确认没短路再上电。上电后测晶振有没有起振。用示波器测OSC_OUT如果有8MHz正弦波说明起振了。如果没有检查负载电容和焊接。然后连SWD用STM32CubeProgrammer或者Keil烧录一个点灯程序。如果能烧进去并且LED闪烁说明最小系统板工作正常。5. 几个我踩过的坑和对应的解决办法5.1 晶振不起振的排查链路第一次画板时晶振用的是8MHz负载电容按规格书选了20pF。打样回来焊上程序烧进去不跑。用示波器测OSC_OUT没有波形。排查过程先换晶振不行再换电容从20pF换到10pF还是不行最后发现是晶振外壳没接地。把外壳接地后起振了。后来我总结晶振不起振的原因有几个负载电容不对、晶振外壳没接地、走线太长、芯片焊接不良。排查时按这个顺序来先看焊接再看电容再看走线最后换晶振。5.2 复位电路导致的随机复位有一版板子程序跑起来后偶尔会复位尤其是手碰到板子的时候。查了半天发现是NRST引脚的走线太长而且没有加滤波电容。NRST走线从芯片拉到按键拉了3cm中间还经过了晶振区域。后来把按键移到芯片旁边走线缩短到1cm并且在NRST和GND之间加了一个100nF电容问题解决。复位电路的关键是NRST走线要短电容要靠近芯片按键要远离晶振。5.3 SWD连不上的几种情况SWD连不上常见原因有SWDIO和SWCLK接反、3.3V没供上、芯片没复位、BOOT0拉高了。我遇到过一次SWDIO和SWCLK在PCB上画反了飞线换过来就好了。还有一次是BOOT0跳线帽插着芯片从系统存储器启动SWD连不上。拔掉跳线帽就好了。所以连SWD之前先确认BOOT0是低电平再确认3.3V正常再确认SWDIO和SWCLK没接反。5.4 电源纹波对ADC采样的影响有一版板子ADC采样值跳动很大换了基准电压也没用。后来用示波器测3.3V发现纹波有50mV。原因是LDO的输出电容太小只有10uF。换成100uF电解电容加10uF陶瓷电容后纹波降到10mV以内ADC稳定了。所以如果板子上有ADC电源部分要多加电容。VDDA旁边也要加1uF和100nF。6. 从最小系统板延伸出去的扩展思路6.1 把最小系统板做成模块化核心板最小系统板画好之后可以把它做成核心板两边留排针底板做各种外设。这样核心板可以复用底板根据项目换。我后来画了一版核心板尺寸2.5cm x 2.5cm两边各留一排2.54mm排针把所有的GPIO都引出来。底板做传感器、显示屏、电机驱动等。核心板的排针间距要算好和底板对应。我一般用2x20的排针间距2.54mm总共40个引脚够用了。6.2 添加USB转串口和Type-C接口如果想让板子直接通过USB下载和供电可以加一个CH340或者CP2102。CH340便宜但需要外部晶振CP2102贵一点但集成度高。Type-C接口用16Pin的CC1和CC2各接一个5.1k电阻到GND这样能识别正反插。USB的D和D-要走差分线尽量等长间距保持一致。虽然全速USB对阻抗要求不高但走线太差也会导致识别不稳定。6.3 预留I2C和SPI接口的排针最小系统板上可以预留I2C和SPI的排针方便接传感器和显示屏。I2C一般用PB6和PB7SPI用PA5、PA6、PA7。排针用4Pin或者5Pin标清楚VCC、GND、SCL、SDA。我一般会在板子边缘放几组排针一组I2C一组SPI一组串口。这样调试时不用飞线直接插模块就行。6.4 从T8C6升级到C8T6或G474的兼容设计如果以后想升级到C8T6PCB不用改直接换芯片就行。但如果想升级到G474封装不一样要重新画。G474CBT6也是LQFP48但引脚定义不同所以不能直接替换。如果项目有升级计划可以在画板时预留一些兼容设计。比如把BOOT0和BOOT1的跳线做成兼容的把SWD接口做成标准的。这样换芯片时外围电路不用大改。7. 关于嘉立创EDA使用的一些个人体会嘉立创EDA标准版和专业版我都用过。标准版适合快速画简单板子专业版适合复杂项目。画STM32最小系统板标准版完全够用。但标准版有个问题多页原理图支持不好如果原理图很大会卡。专业版支持多页而且PCB规则更灵活。嘉立创EDA的元件库更新挺快但有时候封装会变。我习惯在画板前先去立创商城确认一下元件的封装尺寸然后自己在EDA里核对一遍。不要完全依赖系统库的封装尤其是冷门元件。还有一个技巧嘉立创EDA支持导入Altium Designer的文件。如果你之前用AD画过可以直接导入省得重画。但导入后要检查网络和封装有时候会丢。最后说一句画最小系统板不难难的是把每个细节都做对。电源、晶振、复位、下载这四个模块任何一个出问题板子都跑不起来。我画了五六版之后才做到一次成功。所以如果你是第一次画建议先画一版简单的打样回来焊上试试有问题再改。嘉立创免费打样成本很低多试几次就熟了。