
1. 为什么值得亲手画一遍STM32F103C8T6最小系统STM32F103C8T6这颗芯片在嵌入式圈子里几乎是个绕不开的名字。48个引脚、64KB Flash、20KB SRAM、最高72MHz主频价格便宜量又足拿来做课程设计、小批量产品验证、个人DIY项目都合适。但很多朋友拿到芯片之后第一反应是去买一块现成的最小系统板十几块钱包邮到家插上就能用。这当然省事可如果你打算真正把STM32用进自己的PCB里或者想搞清楚单片机到底靠什么才能跑起来那亲手画一遍最小系统原理图是绕不过去的一步。所谓“最小系统”说白了就是让一颗单片机能够正常工作的最低硬件配置。少了它芯片连启动都启动不了多了它那就不是最小系统而是功能板了。STM32F103C8T6的最小系统包含几个核心部分电源电路、晶振电路、复位电路、启动模式配置电路、调试接口电路以及去耦电容网络。这些东西听起来都是老生常谈但真正动手画的时候每一个环节都有讲究选错一个电容的容值、漏掉一个上拉电阻板子回来就是一堆莫名其妙的故障。这篇内容适合两类人看一类是刚学完51单片机、准备往STM32迁移的初学者另一类是用过现成开发板、但从来没自己画过STM32原理图的工程师。我会用立创EDA作为主要工具来讲解因为它的免费策略和元件库对国内用户确实友好但整个思路放到KiCad或者Altium Designer里同样成立。画完这张图你不仅能得到一份可以直接投板打样的原理图更重要的是能理解每一个元件为什么出现在那里。2. 整体设计思路与工具选型2.1 最小系统的边界在哪里动手画图之前先得把“最小”这两个字的边界划清楚。STM32F103C8T6要跑起来必须满足以下几个条件供电稳定在2.0V到3.6V之间、有可靠的时钟源、复位引脚不能悬空、启动模式引脚要有确定电平、调试接口要引出来方便烧录程序。除此之外的东西比如LED指示灯、按键、外部Flash、传感器接口统统不属于最小系统的范畴。我见过不少初学者画的第一版原理图恨不得把能加的外设全加上去结果板子画得又大又杂出了问题排查起来一头雾水。正确的做法是先画一版纯粹的最小系统确保芯片能跑起来、能烧录程序、串口能打印信息然后再在这个基础上逐步扩展。这样每一步都有验证出了问题也容易定位。2.2 为什么选立创EDA而不是其他工具工具选型这件事没有绝对的好坏只有适不适合。立创EDA最大的优势是元件库和嘉立创的PCB打样服务打通了原理图画完可以直接转PCB元件封装大部分都有现成的省去了自己建库的时间。对于STM32F103C8T6这种热门型号立创EDA的元件库里直接就有官方封装LQFP48的焊盘尺寸、引脚间距都是验证过的不用自己对着数据手册一个个画。KiCad的优势在于开源、跨平台、社区活跃但它的元件库管理相对分散新手找元件容易迷路。Altium Designer功能最强但正版价格摆在那里学习曲线也陡。如果你只是想把这块板子画出来打样立创EDA是性价比最高的选择。当然如果你已经熟悉了某个工具没必要为了这个项目换工具原理图的设计思路是通用的。2.3 原理图绘制的整体流程整个流程可以拆成六步新建工程、放置核心芯片、搭建电源网络、配置时钟与复位、引出调试接口、检查网络连接。每一步都有明确的输入和输出不要跳步。我习惯在画图之前先在纸上列一个清单把所有需要连接的引脚和对应的网络名写下来画的时候对着清单逐个确认避免遗漏。注意立创EDA有标准版和专业版两个版本界面和操作逻辑有差异。本文的操作以专业版为准标准版的菜单路径可能略有不同但核心功能是一致的。3. 核心电路模块的详细拆解3.1 主控芯片的引脚功能梳理STM32F103C8T6采用LQFP48封装48个引脚大致可以分成几类电源引脚、晶振引脚、复位引脚、启动模式引脚、调试引脚、GPIO引脚、模拟输入引脚。画原理图的时候不需要把每个GPIO都连出去但电源和关键控制引脚一个都不能少。先看电源部分。VDD引脚有多个分布在芯片的四个边每个VDD旁边都要配一个100nF的去耦电容这是硬性要求。VDDA是模拟电源引脚给ADC和内部模拟电路供电同样需要去耦而且最好通过一个磁珠或者电感与数字电源隔离。VBAT是备份电源引脚如果不用RTC和备份寄存器可以直接接到VDD如果要保留备份功能就接一颗纽扣电池。晶振引脚有两组PD0和PD1接外部高速晶振通常用8MHz的无源晶振配合两个20pF左右的负载电容。PC14和PC15接低速晶振用于RTC一般用32.768kHz。如果你不需要RTC低速晶振可以省略但高速晶振建议保留因为STM32F103的内部RC振荡器精度有限做串口通信时容易出问题。复位引脚NRST是低电平复位内部有上拉电阻但为了可靠性外部还是建议加一个100nF电容到地再并联一个复位按键。启动模式引脚BOOT0和BOOT1决定了芯片从哪块存储区启动BOOT0通常通过一个10k电阻下拉到地需要串口下载时再通过跳线帽拉到高电平。3.2 电源电路的设计细节STM32F103C8T6的工作电压是2.0V到3.6V典型值是3.3V。供电方案通常有两种一种是用USB的5V经过LDO稳压到3.3V另一种是直接用外部3.3V电源。如果你打算用USB供电那就要选一颗LDO比如AMS1117-3.3或者RT9013。AMS1117便宜好买但静态电流偏大效率也不高RT9013性能更好但价格稍贵。LDO的输入输出都要加电容。输入端建议放一个10uF的钽电容或者陶瓷电容输出端放一个22uF的电容再并联一个100nF的小电容滤高频。这些电容不是随便放的LDO的稳定性跟输出电容的ESR有关系AMS1117要求输出电容的ESR在0.1欧到10欧之间用普通的电解电容或者钽电容都能满足但如果用陶瓷电容ESR可能太低导致振荡。电源指示LED也值得说一下。很多人随便找个LED串个电阻就接到3.3V上结果LED亮度要么太暗要么太亮。计算一下假设LED的正向压降是2.0V想要5mA的电流那限流电阻就是(3.3-2.0)/0.005260欧取标准值270欧或者330欧都行。如果选1k的电阻电流只有1.3mA亮度会偏暗。3.3 晶振电路的参数计算高速晶振电路看起来简单就一个晶振加两个电容但电容的选值有讲究。晶振的负载电容CL是一个关键参数常见8MHz晶振的CL是20pF。电路中的两个电容C1和C2是串联关系再与晶振的寄生电容并联。计算公式是CL (C1 * C2) / (C1 C2) Cs其中Cs是PCB上的寄生电容一般取3到5pF。如果CL20pFCs取4pF那(C1*C2)/(C1C2)应该等于16pF。假设C1C2那每个电容就是32pF。实际选用的时候取标准值30pF或者33pF都可以。但很多现成的STM32最小系统板上用的是20pF这是因为很多晶振的CL实际是10pF左右加上寄生电容刚好匹配。所以最稳妥的办法是查你买的晶振的数据手册按手册上的CL值来算。晶振下面最好不要走线尤其是高速信号线。晶振的两个引脚走线要尽量短、尽量对称下面铺地铜皮做屏蔽。如果PCB空间允许在晶振周围放一圈接地过孔能有效减少干扰。3.4 复位与启动模式配置复位电路的核心是NRST引脚。STM32内部已经有上拉电阻典型值40k欧左右所以外部不加上拉也能工作。但为了抗干扰建议在NRST和地之间加一个100nF的电容。这个电容的作用是滤除复位引脚上的毛刺同时在断电时给电容放电提供通路。复位按键的选择也有讲究。贴片轻触开关体积小适合紧凑布局直插按键手感好适合手工焊接。不管选哪种按键两端要并联一个0.1uF的电容做硬件消抖虽然STM32的复位引脚内部有施密特触发器但外部加电容更保险。BOOT0和BOOT1的配置决定了启动模式。BOOT00、BOOT1x时从主Flash启动这是正常运行的模式。BOOT01、BOOT10时从系统存储器启动用于串口下载程序。BOOT01、BOOT11时从内置SRAM启动一般用于调试。实际使用中BOOT0通过一个10k电阻下拉到地同时引出一个排针或者跳线需要下载时短接到3.3V。BOOT1在STM32F103C8T6上对应的引脚是PB2通常也通过10k电阻下拉到地。3.5 调试接口与去耦电容网络STM32F103C8T6支持SWD和JTAG两种调试接口。SWD只需要两根线SWDIO和SWCLK再加上电源和地一共四根线就够了。JTAG需要五根线占用引脚更多。对于LQFP48封装的芯片引脚本来就紧张强烈建议用SWD接口。SWD接口的引脚是PA13SWDIO和PA14SWCLK。这两个引脚内部有上拉电阻但外部还是建议各加一个10k的上拉电阻到3.3V增强信号质量。调试接口的排针通常用2.54mm间距的4Pin排针排列顺序是3.3V、SWDIO、SWCLK、GND。有些调试器还要求接复位线那就再加一根NRST。去耦电容是原理图上最容易画错的地方。STM32F103C8T6有多个VDD引脚每个VDD引脚旁边都要放一个100nF的电容而且这个电容在PCB上要尽量靠近引脚走线越短越好。除此之外整个板子的电源入口处还要放一个10uF的电容做储能。这些电容的作用是滤除电源上的高频噪声如果省略或者放远了芯片工作时会出现莫名其妙的复位或者死机。4. 立创EDA实操绘制全流程4.1 新建工程与元件库准备打开立创EDA专业版点击“文件”菜单选择“新建工程”给工程起个名字比如“STM32F103C8T6_MinSys”。工程建好之后先别急着画图花几分钟把元件库整理一下。在左侧面板找到“元件库”搜索“STM32F103C8T6”选择官方库里的那个LQFP48封装版本。把它放到原理图里之前先确认一下引脚编号和名称是否和数据手册一致。除了主控芯片还需要准备以下元件8MHz晶振、20pF电容、100nF电容、10uF电容、10k电阻、270欧电阻、LED、轻触按键、4Pin排针、AMS1117-3.3。这些元件在立创EDA的基础库里都能找到搜索的时候注意筛选“基础库”标签基础库的元件有现成的封装和3D模型用起来省事。提示立创EDA的元件库分“基础库”和“扩展库”基础库的元件是嘉立创常备库存打样时不用额外付元件费。画最小系统用到的元件几乎都在基础库里。4.2 主控芯片的放置与引脚分组把STM32F103C8T6拖到画布中央你会看到48个引脚密密麻麻排成四边。这时候不要急着连线先做一件事把引脚按功能分组。在立创EDA里可以右键点击芯片选择“编辑符号”然后调整引脚的位置和排列顺序。把电源引脚放在一起、晶振引脚放在一起、调试引脚放在一起这样连线的时候思路清晰也不容易连错。分组的原则是按功能模块来左上角放电源和复位右上角放晶振左下角放调试接口右下角放启动模式配置。每个模块之间留出足够的空间方便走线和放置去耦电容。这个步骤花的时间不多但能大幅降低后续连线的出错率。4.3 电源网络的搭建与去耦电容布局电源网络是原理图的骨架。先在芯片周围放置去耦电容每个VDD引脚旁边放一个100nF。立创EDA有个快捷操作选中一个电容按CtrlC复制然后CtrlV粘贴连续粘贴多个效率很高。放好之后用导线把电容的一端接到VDD网络另一端接到GND网络。VDD网络和GND网络在立创EDA里用“网络标签”来标识不需要真的用导线把所有VDD引脚连在一起。在每个VDD引脚旁边放一个“VDD”标签在GND引脚旁边放“GND”标签软件会自动识别它们是同一个网络。这样做的好处是原理图看起来干净不会到处都是交叉的导线。VDDA引脚的处理要单独说一下。VDDA是模拟电源建议通过一个10欧姆的电阻或者磁珠与VDD连接然后在VDDA和GND之间放一个100nF和一个1uF的电容。如果对ADC精度要求不高直接接VDD也能用但既然画了就按规范来。4.4 晶振与复位电路的连线晶振电路的连线比较讲究。8MHz晶振的两个引脚分别接到PD0和PD1每个引脚再各接一个20pF电容到地。连线的时候尽量走短线不要绕来绕去。在立创EDA里可以用“网络标签”来简化连线比如在PD0引脚旁边放一个“OSC_IN”标签在晶振对应引脚也放“OSC_IN”标签软件会自动连接。复位电路就三个元件一个100nF电容、一个10k电阻、一个轻触按键。NRST引脚接电容的一端和按键的一端电容的另一端和按键的另一端都接地。10k电阻从NRST接到3.3V作为外部上拉。虽然STM32内部有上拉但外部再加一个更稳妥尤其是当复位线要走较长距离的时候。4.5 调试接口与启动模式配置SWD接口用4Pin排针引脚顺序是3.3V、SWDIO、SWCLK、GND。SWDIO接PA13SWCLK接PA14各加一个10k上拉电阻到3.3V。排针的3.3V引脚接VDD网络GND引脚接GND网络。这样调试器插上去就能直接识别芯片。BOOT0引脚通过一个10k电阻下拉到地同时引出一个2Pin排针排针的另一端接3.3V。正常运行时排针不短接BOOT0为低电平需要串口下载时用跳线帽短接排针BOOT0被拉高。BOOT1对应的PB2引脚同样通过10k电阻下拉到地不需要引出排针因为串口下载时BOOT1保持低电平即可。4.6 原理图检查与网络核对图画完之后一定要做一遍完整的检查。立创EDA有“设计规则检查”功能可以自动检查未连接的引脚、重复的网络标签、电源网络冲突等问题。但自动检查不能替代人工核对我习惯把原理图放大到200%从芯片的1号引脚开始逐个确认每个引脚的连接是否正确。重点检查这几个地方所有VDD引脚是否都接了VDD网络、所有GND引脚是否都接了GND网络、NRST是否有上拉和电容、BOOT0是否有下拉电阻、晶振引脚是否接对了、SWDIO和SWCLK是否引出了排针。这些地方一旦出错板子回来就是废板重新打样既费钱又费时间。5. 常见问题与排查技巧实录5.1 原理图阶段的典型错误初学者画STM32最小系统原理图最容易犯的错误有这么几个。第一个是忘记给VDDA接去耦电容导致ADC采样值跳动严重。第二个是把BOOT0直接接地而没有引出跳线结果想用串口下载程序时发现没法进入下载模式。第三个是晶振的负载电容选得不对导致晶振不起振或者起振不稳定。还有一个隐蔽的错误是网络标签重名。比如在VDD网络和VDDA网络上都用了“VDD”标签软件会把它们当成同一个网络结果VDDA的滤波电容就白放了。立创EDA里可以用“网络管理器”查看所有网络确认没有意外的合并。5.2 常见问题速查表问题现象可能原因排查方法芯片无法烧录程序SWDIO/SWCLK接反或未接上拉用万用表测排针通断确认PA13/PA14连接正确芯片上电后不运行BOOT0电平不对测BOOT0引脚电压正常应为0V串口通信乱码晶振未起振或负载电容不匹配用示波器测PD0引脚应有8MHz正弦波ADC采样值跳动大VDDA去耦不足检查VDDA引脚是否有100nF和1uF电容芯片频繁复位NRST电容过大或电源不稳测NRST电压正常应为3.3V检查电源纹波功耗异常偏高未使用的GPIO悬空将未使用GPIO配置为模拟输入或下拉5.3 从原理图到PCB的过渡要点原理图画完只是第一步转PCB的时候还有几个地方要注意。去耦电容在PCB上要尽量靠近芯片的VDD引脚走线长度不要超过5mm。晶振要靠近芯片放置晶振下面不要走任何信号线。SWD排针放在板子边缘方便调试器插入。电源走线要加粗3.3V的走线至少20milGND走线尽量铺铜。注意立创EDA专业版转PCB的时候默认的线宽可能偏细记得在“设计规则”里把电源线宽改成20mil以上信号线宽改成8mil以上。5.4 几个容易忽略的细节第一个细节是未使用引脚的处理。STM32F103C8T6有37个GPIO最小系统用不了那么多剩下的引脚不要悬空。悬空的引脚会引入额外的功耗和噪声建议在原理图上把它们标出来PCB上留焊盘但不接线软件里配置为模拟输入模式。第二个细节是电源指示LED的限流电阻。前面算过270欧到330欧比较合适。但如果你用的是高亮度LED1k的电阻也能看清功耗还更低。这个没有绝对标准看个人喜好。第三个细节是复位按键的封装。贴片按键和直插按键的焊盘尺寸不一样画PCB之前一定要确认你买的按键是什么封装。我见过有人原理图用的贴片封装结果买回来的是直插按键焊不上去只能飞线。6. 写在最后的一些个人体会画STM32F103C8T6最小系统这件事我前后画过不下十版。第一版的时候觉得很简单不就是把芯片、晶振、电容连起来嘛结果板子回来发现VDDA忘了接电容ADC根本没法用。第二版改了又发现BOOT0没引跳线串口下载用不了。第三版终于能跑了但功耗比预期高了20mA查了半天才发现是未使用的GPIO悬空导致的。这些坑踩下来最大的体会是最小系统虽然叫“最小”但每一个元件都有它存在的理由没有一个是多余的。去耦电容不是随便放的晶振电容不是随便选的上拉电阻不是可有可无的。你把每一个元件的原理搞清楚了画出来的板子自然就稳。如果你打算画自己的第一版STM32最小系统我的建议是先照着官方数据手册里的参考设计画一遍不要自己发挥。等板子跑起来了再根据实际需求做增减。另外立创EDA的社区里有不少开源的STM32最小系统工程可以下载下来对照着看学习别人的布局和连线习惯。但不要直接复制粘贴自己画一遍哪怕画得丑一点收获是完全不一样的。