ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

STM32F103T8C6最小系统板设计:嘉立创EDA从原理图到打样全流程

STM32F103T8C6最小系统板设计:嘉立创EDA从原理图到打样全流程 STM32F103T8C6这颗料在圈子里算是个小钢炮级别的存在——QFN36封装只有6mm×6mm大小却塞进了64KB Flash、20KB SRAM和72MHz的主频。我第一次拿到这个型号的时候心里直犯嘀咕这么小的封装手工焊接能行吗后来实际画了一版最小系统板从原理图到打样回来点灯整个过程走下来发现只要布局布线的时候把几个关键点处理好这颗芯片比想象中好伺候得多。这篇文章主要面向两类人一类是刚接触嘉立创EDA、想拿STM32练手画第一块板子的新手另一类是习惯了C8T6的LQFP48封装想试试更小体积方案的嵌入式开发者。我会把整个最小系统板的设计流程拆开来讲——从芯片选型的考量、原理图各功能模块的设计逻辑到PCB布局时的关键决策、走线策略再到打样前的自查清单和焊接调试的注意事项。每个环节我都会解释为什么这么做而不是只给一个结论。文中涉及的具体参数和操作步骤一部分来自我自己的实操记录一部分是基于嘉立创EDA常见工作流的合理补充你照着做基本能复现出一块可用的板子。1. 芯片选型与最小系统板的整体设计思路1.1 为什么选STM32F103T8C6而不是更常见的C8T6很多人画第一块STM32最小系统板默认就选STM32F103C8T6LQFP48封装引脚间距0.5mm焊接难度适中资料铺天盖地。但如果你做过几个项目之后就会发现C8T6的48个引脚在很多场景下是浪费的——你真正用到的可能就十几个IO剩下的全空着板子面积却下不来。STM32F103T8C6的QFN36封装把引脚数压缩到了36个尺寸只有6mm×6mm比C8T6的7mm×7mm LQFP48小了将近一半的面积。对于空间敏感的应用——比如穿戴设备、微型传感器节点、模块化的功能小板——这个尺寸优势非常明显。而且QFN封装没有向外伸出的引脚寄生电感更小高频性能理论上更好。但选它也有代价。QFN36的引脚间距是0.5mm和LQFP48一样但QFN的焊盘在芯片底部手工焊接时烙铁够不着必须用热风枪或者回流焊。另外T8C6的可用IO数量比C8T6少了不少如果你需要同时驱动LCD、多个串口和一堆传感器引脚可能不够用。所以选型的时候要先盘清楚项目需要多少个IO、多少个外设接口再决定是上T8C6还是老老实实用C8T6。我个人的经验是如果你的项目IO需求在20个以内又对体积有要求T8C6是很好的选择如果IO需求超过25个或者你还没想好要接什么外设先用C8T6把功能跑通后期再考虑换T8C6做小型化。1.2 最小系统板到底最小到什么程度最小系统板这个概念不同人有不同的理解。有人觉得只要能跑起来就行有人觉得要把所有外设都引出来。我的定义是能让芯片正常启动、下载程序、运行基础代码同时保留必要的调试接口和扩展能力。具体到STM32F103T8C6最小系统必须包含以下几个部分电源电路3.3V稳压给芯片和外围器件供电晶振电路8MHz高速晶振HSE用于系统时钟32.768kHz低速晶振LSE可选如果不用RTC可以不焊复位电路上电复位和手动复位按钮启动模式选择BOOT0和BOOT1引脚的下拉/上拉配置调试接口SWD接口SWDIO和SWCLK至少引出4个引脚VCC、GND、SWDIO、SWCLK去耦电容每个电源引脚附近放100nF电容整体再放一个10μF的钽电容或电解电容除此之外我习惯把所有的空闲IO用排针引出来方便后续扩展。LED指示灯和用户按键也加上调试的时候能省不少事。这些东西加起来板子尺寸控制在25mm×25mm以内完全没问题。1.3 整体设计流程与工具准备用嘉立创EDA画这块板子整个流程可以分成六步新建工程、画原理图、分配封装、画PCB、DRC检查、导出Gerber打样。听起来简单但每一步都有坑。工具方面嘉立创EDA有标准版和专业版两个版本。标准版适合新手界面简洁功能够用专业版功能更强支持多板设计、层次原理图但学习曲线陡一些。画这种小板子标准版完全够用。我建议新手从标准版入手等熟悉了再考虑专业版。另外嘉立创的元件库里有现成的STM32F103T8C6符号和封装直接搜型号就能找到。但要注意核对封装的焊盘尺寸和引脚编号不同人上传的库质量参差不齐我遇到过引脚编号对不上的情况打样回来才发现只能飞线补救。2. 原理图设计各功能模块的细节与避坑2.1 电源模块3.3V稳压与滤波电容的布置STM32F103T8C6的供电范围是2.0V到3.6V典型值3.3V。输入电源我一般用USB的5V或者外部5V供电经过一个低压差稳压器LDO降到3.3V。常用的LDO有AMS1117-3.3、RT9013等。AMS1117便宜好买但静态电流偏大约5mA如果做电池供电的项目建议换用静态电流更低的型号比如HT7333静态电流约4μA。LDO的输入和输出端都要放电容。输入端放一个10μF的钽电容或者MLCC输出端放一个10μF加一个100nF。这里有个细节AMS1117的输出电容ESR有要求数据手册里写的是需要22μF以上的钽电容才能稳定用MLCC的话可能要串联一个小电阻来模拟ESR。我实际用10μF MLCC测试过大部分情况下没问题但如果你发现输出电压有振荡就要考虑换钽电容或者加电阻。STM32F103T8C6有多个VDD引脚和VDDA引脚。VDD是数字电源VDDA是模拟电源两者之间要加一个磁珠或者0Ω电阻隔离VDDA旁边再放一个100nF和一个1μF的电容。每个VDD引脚旁边都要放一个100nF的去耦电容这是硬性要求不能省。我见过有人只放一个100nF给所有VDD引脚共用结果芯片跑高速的时候偶尔死机查了半天才发现是去耦不够。2.2 晶振电路8MHz HSE与32.768kHz LSE的设计要点高速晶振用8MHz的无源晶振配合两个20pF的负载电容。这里要注意负载电容的值要根据晶振的规格来选不是固定20pF。晶振的数据手册里会写负载电容CL比如CL10pF那么两个匹配电容的值大约是2×(CL - Cstray)Cstray是PCB的寄生电容一般取3-5pF。所以如果CL10pF匹配电容大概选12-15pF。我见过有人不管什么晶振都放20pF结果晶振起振困难或者频率偏移。晶振的布局也很关键。晶振要尽量靠近芯片的OSC_IN和OSC_OUT引脚走线要短而粗下面不要走其他信号线最好在晶振下面铺地铜。匹配电容的地要就近接到芯片的GND引脚不要绕远路。低速晶振32.768kHz用于RTC如果你不用RTC功能可以不焊。但建议在PCB上预留位置万一以后要用呢。LSE的匹配电容一般选6-12pF具体看晶振规格。LSE的走线比HSE更敏感因为频率低、驱动能力弱走线要更短最好包地处理。2.3 复位与启动模式BOOT引脚的正确配置复位电路很简单一个10kΩ的上拉电阻接到3.3V一个100nF的电容到地再并联一个复位按钮。NRST引脚内部已经有上拉电阻但外部再加一个10kΩ更稳妥。复位按钮用轻触开关一端接NRST一端接GND。BOOT0和BOOT1的配置决定了芯片的启动模式BOOT0BOOT1启动模式0X主Flash启动正常运行10系统存储器启动串口下载11嵌入式SRAM启动调试用正常运行时BOOT0接10kΩ下拉到地。如果你需要用串口下载程序可以把BOOT0通过跳线帽选择接3.3V或GND。BOOT1在F103系列里其实用得少一般直接下拉到地就行。我习惯在BOOT0上放一个2Pin的排针加跳线帽需要串口下载的时候短接平时断开。2.4 SWD调试接口最少需要几根线SWD接口是STM32最常用的调试方式只需要两根信号线SWDIO和SWCLK加上VCC和GND一共四根线。我一般用2.54mm的4Pin排针顺序是VCC、SWDIO、SWCLK、GND和常见的ST-Link下载器对应。这里有个坑SWDIO和SWCLK不要接外部上拉或下拉电阻芯片内部已经有配置了外部再加会影响信号质量。另外SWD接口的走线要尽量短如果排针离芯片比较远中间不要经过其他器件的下方。如果你还想用串口下载可以把USART1的TX和RX也引出来配合BOOT0跳线使用。但SWD已经足够方便了我基本只用SWD。2.5 去耦电容的布置原则与常见错误去耦电容的布置是原理图设计里最容易被忽视、但影响最大的部分。原则很简单每个电源引脚旁边放一个100nF电容越近越好。STM32F103T8C6的VDD引脚有多个每个都要配。除此之外整个板子的电源入口处放一个10μF的电容作为全局储能。如果板子上有电机、继电器等大电流负载还要再加更大的电容。常见的错误有三种一是所有VDD引脚共用一个100nF电容二是电容离芯片太远三是电容的地线绕远路。这三种情况都会导致去耦效果大打折扣芯片在高负载或者温度变化时容易出现异常。我在嘉立创EDA里画原理图的时候习惯把去耦电容画在芯片符号的旁边这样转到PCB的时候不容易忘。3. PCB布局与布线从封装分配到走线策略3.1 封装分配与焊盘尺寸核对原理图画完之后下一步是给每个元件分配封装。嘉立创EDA的元件库里有现成的封装但一定要核对焊盘尺寸。STM32F103T8C6的QFN36封装焊盘宽度一般是0.25mm间距0.5mm焊盘长度要比引脚长度多出0.2-0.3mm方便焊接时形成爬锡。我遇到过库里的封装焊盘太短回流焊之后引脚和焊盘接触不良表现为芯片时好时坏。后来自己按数据手册的推荐尺寸画了一个封装问题就解决了。数据手册里一般会给出推荐的焊盘图形Land Pattern照着画最保险。其他元件的封装也要核对。比如0805的电阻电容焊盘间距一般是1.0mm左右SOT-23的封装焊盘间距0.95mm。这些标准封装一般没问题但如果你用的是自己画的或者别人上传的库最好用嘉立创EDA的封装管理器检查一下。3.2 布局策略先放什么后放什么PCB布局的顺序很重要。我的习惯是先放芯片再放晶振和去耦电容然后放电源模块最后放接口和指示灯。芯片放在板子中央偏上的位置留出四周的空间给其他元件。晶振紧贴芯片的OSC引脚匹配电容放在晶振和芯片之间。去耦电容放在芯片的电源引脚旁边如果空间不够可以放在板子背面但要用过孔就近连接到电源引脚。电源模块放在板子边缘方便接USB或者外部电源。LDO的输入输出电容紧贴LDO放置。SWD接口放在板子边缘方便插拔下载器。LED和按键放在板子边缘或者角落方便观察和操作。布局的时候要注意模拟部分和数字部分分开。VDDA的滤波电容和磁珠要远离数字信号线晶振也要远离电源模块避免开关噪声干扰。3.3 布线规则线宽、间距与过孔的选择布线之前先设置设计规则。嘉立创的常规工艺是最小线宽/间距0.127mm5mil最小过孔0.3mm/0.6mm内径/外径。对于这块板子我一般用0.254mm10mil的线宽走信号线0.5mm的线宽走电源线过孔用0.3mm/0.6mm。电源线要加粗因为电流大。3.3V的电流一般在100mA以内0.5mm的线宽足够了。如果板子上有更大的负载比如WiFi模块电源线要加到0.8mm甚至1mm。信号线的间距至少0.2mm如果空间允许尽量拉开到0.3mm以上。晶振的走线要包地SWD的走线要短。USB的差分线如果有要等长间距保持一致。过孔的选择信号过孔用0.3mm/0.6mm电源过孔用0.4mm/0.8mm或者更大。过孔不要放在焊盘上除非你做的是盘中孔Via in Pad那需要额外的工艺成本更高。3.4 铺铜与接地星型接地还是完整地平面接地方式对板子的性能影响很大。对于这块小板子我推荐完整地平面而不是星型接地。完整地平面就是在板子的底层或者顶层铺满GND铜所有GND引脚通过过孔就近连接到地平面。星型接地适合模拟和数字混合的复杂系统但对于这种以数字为主的小板子完整地平面的效果更好因为回流路径短EMI更低。铺铜的时候要注意晶振下面不要铺铜或者铺铜但不要连接到GND避免引入噪声。实际上晶振下面铺地铜并连接到GND是常见做法可以屏蔽干扰但有些晶振厂商建议不要铺铜具体看晶振的数据手册。铺铜的间距设置铜到走线的间距至少0.2mm铜到焊盘的间距至少0.15mm。嘉立创EDA里可以在设计规则里设置。3.5 丝印与标注方便焊接和调试丝印不是必须的但有了会方便很多。我一般会在丝印层标注以下内容元件位号R1、C1、U1等芯片的1脚位置用圆点或者缺口标记接口的功能标注SWD、UART、5V、3.3V等板子的版本号和日期丝印的字高一般用0.8mm或1.0mm太小了看不清太大了占空间。丝印不要压在焊盘上否则焊接的时候会被覆盖。4. 打样前的自查与常见问题排查4.1 DRC检查必须关注的几个规则画完PCB之后一定要跑DRC设计规则检查。嘉立创EDA的DRC会检查线宽、间距、过孔、焊盘等是否符合规则。常见的DRC报错有间距违规走线之间或者走线和焊盘之间距离太近线宽违规走线宽度小于规则设置的最小值未连接的网络有些引脚没有连线焊盘重叠两个焊盘靠得太近DRC报错不一定要全部消除有些是误报。但间距违规和未连接的网络必须处理否则打样回来可能短路或者断路。4.2 Gerber导出与打样参数设置DRC通过之后导出Gerber文件。嘉立创EDA支持一键导出Gerber在制造菜单里选择生成Gerber。导出的时候要注意层选择至少包含顶层、底层、顶层丝印、底层丝印、顶层阻焊、底层阻焊、钻孔文件格式RS-274X单位毫米精度4:4或者4:6导出之后用嘉立创的在线Gerber查看器检查一遍确认没有缺层或者错位。然后就可以下单打样了。嘉立创的免费打样政策是10cm×10cm以内的板子5片厚度1.6mm喷锡工艺免费。这块板子尺寸远小于10cm×10cm完全符合免费条件。4.3 常见问题速查表问题现象可能原因排查方法芯片不启动电源电压不对万用表测VDD引脚电压晶振不起振匹配电容值不对换不同容值的电容测试SWD连不上SWDIO/SWCLK接反核对下载器和板子的引脚定义芯片发热电源短路断电测VDD和GND之间的电阻程序跑飞去耦电容不足每个VDD引脚加100nF电容复位异常NRST被拉低检查复位按钮是否短路4.4 焊接与调试的实操心得QFN封装的焊接是个技术活。我的做法是先用烙铁在焊盘上薄薄上一层锡然后把芯片放上去对准1脚位置用热风枪调至300-320度风量调到最小对着芯片周围吹。看到锡融化之后用镊子轻轻推一下芯片如果能自动回位说明焊接好了。焊接完之后先用万用表测VDD和GND之间的电阻确认没有短路。然后上电测3.3V电压是否正常。再用ST-Link连接SWD接口如果能识别到芯片说明基本正常。最后烧录一个点灯程序验证GPIO功能。我踩过的一个坑是QFN芯片底部的散热焊盘没有接地。STM32F103T8C6的底部有一个大的散热焊盘数据手册里要求接到GND。如果没接芯片可能工作不稳定尤其是温度变化的时候。所以画封装的时候底部焊盘一定要有而且要在PCB上对应的位置放一个大的GND焊盘焊接时用热风枪把芯片底部的焊盘和PCB上的焊盘焊在一起。另一个坑是晶振的负载电容选大了导致起振时间很长有时候要好几秒才能起振。后来换了小一点的电容问题解决。所以晶振的匹配电容不要照搬别人的值要根据晶振规格来算。5. 扩展思路从最小系统板到实际项目5.1 引出所有IO的扩展板设计最小系统板跑通之后下一步通常是做扩展板。我一般会把所有的空闲IO用2.54mm排针引出来排针的间距和Arduino或者树莓派兼容方便接各种模块。扩展板上可以加OLED屏幕、温湿度传感器、电机驱动等。扩展板的设计要注意电源的承载能力。如果接的模块比较多3.3V的电流可能不够需要加一个独立的3.3V稳压或者从外部供电。另外IO的驱动能力有限驱动继电器或者电机的时候要加三极管或者驱动芯片。5.2 从T8C6迁移到其他封装的注意事项如果你以后想从T8C6迁移到C8T6或者F407VET6原理图基本不用大改但PCB要重新布局。C8T6是LQFP48引脚间距0.5mm但引脚向外伸出手工焊接比QFN容易。F407VET6是LQFP100引脚更多功能更强但板子面积也更大。迁移的时候要注意引脚定义的差异。不同型号的STM32虽然大部分引脚功能兼容但有些外设的引脚映射不同。比如USART1的TX和RX在F103和F407上可能是不同的引脚。所以迁移之前要仔细核对数据手册的引脚定义表。5.3 嘉立创EDA的一些实用技巧最后分享几个嘉立创EDA的实用技巧原理图和PCB联动在原理图里选中一个元件PCB里会自动高亮对应的封装。这个功能在布局的时候很有用。批量修改选中多个元件右键可以批量修改属性比如统一改封装或者位号。快捷键常用的快捷键有W走线、V过孔、G铺铜、M移动。熟练之后效率提升明显。版本管理嘉立创EDA支持历史版本回滚画错了可以退回到之前的版本。元件库管理自己画的符号和封装可以保存到个人库下次直接调用。我在实际使用中发现嘉立创EDA的自动布线功能不太适合这种小板子手动布线反而更快更可控。自动布线出来的走线往往绕来绕去过孔也多不如自己规划好路径一次走完。另外嘉立创的阻抗计算神器在画高速信号线的时候很有用。虽然这块板子用不上但如果你以后画USB或者SPI高速信号可以用它算一下线宽和间距保证阻抗匹配。这块STM32F103T8C6最小系统板我从画原理图到打样回来调试前后花了大概一周的业余时间。中间踩了不少坑比如封装焊盘太短、晶振电容选错、去耦电容漏放但最后板子跑起来的时候那种成就感还是很足的。如果你也在画自己的第一块STM32板子我的建议是不要怕犯错先画一版简单的打样回来焊好调试遇到问题再改。画板子这件事看十遍教程不如自己动手画一遍。
返回列表