首页 / 资讯中心 / 文章详情

STM32F103C8T6核心板DIY全攻略:嘉立创EDA从原理图到PCB实战

STM32F103C8T6核心板DIY全攻略:嘉立创EDA从原理图到PCB实战 ★ FEATURED ARTICLE
STM32F103C8T6这颗料放在今天来看依然是个很有意思的选择。它不算新甚至可以说有点老但架不住它便宜、资料多、生态成熟拿来做学习板、验证板、小批量产品的核心控制单元都特别顺手。我前后用嘉立创EDA画过不下十块基于这颗芯片的板子从最早那种能跑就行的粗糙版本到后来慢慢把电源、晶振、复位、下载接口这些细节都抠到位中间踩过的坑确实不少。这篇内容就是把我从零画一块STM32F103C8T6核心板的完整过程拆开来讲包括原理图怎么搭、封装怎么选、PCB怎么布局布线、星型接地怎么处理、打样前要检查哪些东西。不管你是刚接触嘉立创EDA的新手还是已经画过几块板子但想把这颗芯片的最小系统彻底搞明白的人应该都能从里面找到能直接用的东西。1. 为什么STM32F103C8T6核心板值得自己画一遍1.1 市售最小系统板的几个现实问题很多人入门STM32的第一步是买一块现成的最小系统板十几块钱包邮插上面包板就能跑。这个路径没问题但用久了你会发现几个绕不开的麻烦。第一是引脚定义不统一不同厂家的板子把BOOT跳线、复位按键、下载接口放在完全不同的位置换一块板子就得重新对一遍接线。第二是电源部分做得比较随意有些板子只给了一个AMS1117-3.3输入输出电容加起来不到10微法跑个ADC或者驱动个电机电压纹波大得离谱。第三是板载资源要么太多要么太少有的把CH340、OLED接口、按键全堆上去板子比名片还大有的又只剩芯片和晶振连个电源指示灯都没有。自己画一块的好处在于你可以完全按自己的使用习惯来定。比如我习惯把SWD接口放在板子左侧、USB口放上方、所有GPIO按端口顺序排列在两侧这样插面包板的时候走线特别顺。电源部分我会给足余量输入输出各放两个电容3.3V和5V都引出排针。这些细节看起来不起眼但真正用起来的时候顺手和不顺手差距很大。1.2 嘉立创EDA在这类项目上的实际表现嘉立创EDA分标准版和专业版两个版本画这种规模的板子两个都够用。标准版上手更快元件库和立创商城直接打通搜型号就能找到现成的符号和封装专业版在布线、铺铜、DRC这些环节更接近传统EDA软件的操作逻辑适合以后要画更复杂板子的人。我自己的习惯是简单的双面板用标准版四层板或者有阻抗要求的用专业版。这颗芯片的外围电路其实不复杂但有几个地方特别容易出问题晶振的负载电容取值、BOOT引脚的上拉下拉、复位电路的RC参数、还有电源的去耦电容布局。这些在嘉立创EDA里都有对应的处理方式后面会一个个讲。另外要提一句嘉立创EDA的元件库虽然全但同一个型号可能有多个版本的符号和封装选的时候一定要看清楚引脚编号和实际芯片是否一致这个坑我踩过不止一次。1.3 这块核心板最终要达成什么目标在动手之前先把目标定清楚不然后面很容易越画越乱。我这块板子的定位是能独立供电、能通过SWD下载调试、能直接插面包板、所有GPIO按顺序引出、板载一个电源指示灯和一个用户LED、复位按键和BOOT选择跳线都要有。尺寸控制在50mm×30mm以内双面板1.6mm板厚沉金工艺。成本方面打样五片加上元器件单板控制在十五块钱以内。这个目标看起来简单但每一项都对应着具体的设计决策。比如能直接插面包板意味着排针间距必须是2.54mm板子宽度不能超过面包板中间槽的间距所有GPIO按顺序引出意味着排针排列要按PA0到PA15、PB0到PB15这样排不能东一个西一个独立供电意味着要么有USB口要么有DC座或者两者都有。这些约束条件在画原理图之前就要想清楚否则画到一半发现排针放不下返工的成本很高。2. 原理图阶段从芯片符号到完整最小系统2.1 在嘉立创EDA里找到正确的芯片符号和封装打开嘉立创EDA新建工程之后第一件事是放置STM32F103C8T6的符号。在元件库搜索框里输入型号通常会出来好几个结果有ST原厂的也有第三方整理的。我一般优先选立创商城关联的符号因为它的引脚定义和封装基本不会出错。选中之后要确认两件事一是符号的引脚编号和实际芯片的LQFP48封装是否对应二是封装是不是LQFP-48_7x7mm_P0.5mm这个规格。这里有个细节值得说一下。STM32F103C8T6是48脚封装但它的引脚分布不是按端口顺序排列的PA、PB、PC各占一段中间还夹着电源和地。如果你直接按符号上的顺序连线画出来的原理图会很乱。我的做法是在符号放置之后先不急着连线而是把符号的引脚按功能分组电源组VDD、VDDA、VSS、VSSA、时钟组PD0、PD1、复位组NRST、启动组BOOT0、BOOT1、下载组PA13、PA14、用户IO组。分组之后再连线逻辑会清晰很多。封装的选择同样重要。LQFP48的封装在嘉立创EDA里有现成的但要注意焊盘长度和宽度。标准封装焊盘长度一般是1.5mm宽度0.3mm间距0.5mm。如果你打算手工焊接可以适当把焊盘加长到1.8mm这样烙铁头更容易接触到。如果是机器贴片就按标准尺寸来。我一般会在封装里把丝印的引脚1标记做得明显一点方便焊接的时候确认方向。2.2 电源部分AMS1117-3.3的外围该怎么配STM32F103C8T6的工作电压是2.0V到3.6V典型值3.3V。输入电源我设计了两路一路是Micro USB座另一路是2.54mm排针方便从外部电源模块供电。两路输入都经过一个SS34肖特基二极管做防反接然后进入AMS1117-3.3稳压。AMS1117-3.3这颗LDO很常见但它的外围电容配置有讲究。输入侧我放了两个电容一个10微法的钽电容和一个100纳法的陶瓷电容并联在输入端。输出侧同样放两个一个22微法的钽电容和一个100纳法的陶瓷电容。为什么要用钽电容而不是电解电容因为钽电容的等效串联电阻ESR更低在高频下的滤波效果更好而且体积小。100纳法的陶瓷电容负责滤除高频噪声钽电容负责储能和低频滤波两者配合才能把纹波压下来。这里有个经验值可以参考AMS1117-3.3在输出电流500mA的时候输入输出压差至少要1.1V才能保证稳定工作。也就是说如果输入是5V输出3.3V压差1.7V没问题但如果输入是4.2V的锂电池压差只有0.9V这时候输出可能就不稳了。所以如果你打算用锂电池供电要么换低压差的LDO要么在电池和LDO之间加一个升压电路。我自己的板子因为主要用USB供电所以没这个问题但如果你有电池供电的需求这一点一定要提前考虑。另外AMS1117-3.3的散热也要注意。它的封装是SOT-223中间那个大焊盘是散热用的必须接到GND铜皮上而且铜皮面积要尽量大。如果输出电流长期在300mA以上建议在焊盘周围多铺一些铜或者加过孔把热量导到背面。我实测过在5V输入、3.3V输出、200mA负载的情况下芯片表面温度大概在45度左右手摸上去是温的不算烫。但如果负载到了500mA温度会明显上升这时候散热铜皮就很重要了。2.3 晶振电路8MHz主晶振和32.768kHz RTC晶振的取舍STM32F103C8T6有两个晶振接口一个是主晶振接PD0和PD1通常用8MHz另一个是RTC晶振接PC14和PC15通常用32.768kHz。主晶振是必须的因为芯片上电后默认使用内部8MHz RC振荡器精度只有1%左右做串口通信的时候波特率误差会比较大。外接8MHz晶振配合PLL倍频到72MHz系统时钟就稳了。晶振的负载电容怎么算公式是CL (C1 × C2) / (C1 C2) Cstray其中Cstray是PCB上的寄生电容一般取3到5皮法。如果你用的晶振规格书上写着负载电容是20皮法那么C1和C2各取20皮法左右实际焊接的时候可以用22皮法的瓷片电容误差不大。但如果你用的是负载电容12.5皮法的晶振C1和C2就要取12皮法左右。这个参数一定要看晶振的规格书不能随便拿两个20皮法的电容就往上焊。RTC晶振这块如果你不需要用到实时时钟功能PC14和PC15可以悬空或者配置成普通GPIO。但如果要用RTC32.768kHz晶振和匹配电容就必须加上。RTC晶振的负载电容通常是6皮法或12.5皮法对应的匹配电容分别是10皮法和18皮法左右。另外RTC晶振的走线要尽量短最好在晶振下面铺一层地铜做屏蔽减少干扰。我在实际画板的时候主晶振和RTC晶振都放了但RTC晶振的匹配电容留了两个位置一个焊盘焊电容另一个焊盘空着方便根据实际晶振调整。这个做法在打样阶段特别有用因为你不知道手头的晶振负载电容到底是多少多留一个位置就多一个调整的余地。2.4 复位与BOOT电路几个电阻电容的取值逻辑复位电路很简单一个10k电阻上拉到3.3V一个100纳法电容到地再加一个复位按键并联在电容两端。按键按下的时候NRST被拉到地芯片复位松开的时候电容通过电阻充电NRST缓慢上升到3.3V完成上电复位。这个RC时间常数是10k × 100nF 1毫秒足够芯片完成复位。BOOT电路稍微复杂一点。STM32F103C8T6有两个启动选择引脚BOOT0和BOOT1PB2。BOOT0决定启动模式BOOT1配合BOOT0选择具体的启动区域。通常的配置是BOOT0通过一个10k电阻下拉到地同时通过一个跳线帽可以选择接到3.3VBOOT1通过一个10k电阻下拉到地也可以选择接到3.3V。这样默认情况下从主闪存启动需要串口下载的时候把BOOT0跳到3.3VBOOT1保持接地复位后进入系统存储器启动模式。这里有个细节BOOT0和BOOT1的电阻不能省。我见过有人直接把BOOT0接到跳线帽中间脚两边分别接3.3V和地省掉了下拉电阻。这样在跳线帽没插的时候BOOT0是悬空的芯片可能随机进入某种启动模式非常不稳定。正确的做法是保留下拉电阻跳线帽只负责选择是否上拉到3.3V。另外复位按键我一般用3mm×6mm×2.5mm的贴片轻触开关手感比那种4.5mm×4.5mm的插件按键好而且高度低不会挡住面包板上的其他元件。按键旁边可以放一个100纳法的电容做硬件消抖但STM32的复位引脚内部已经有滤波电路所以这个电容不是必须的。我一般会放一个位置但实际焊接的时候看情况决定要不要装。2.5 SWD下载接口和用户LED的连线方式SWD接口只需要两根线SWDIOPA13和SWCLKPA14再加上3.3V和GND一共四根线。我一般用2.54mm的4Pin排针按GND、SWCLK、SWDIO、3.3V的顺序排列这样和常见的ST-Link下载器线序一致不容易插反。排针旁边可以放一个丝印标注写明每个引脚的功能。用户LED我接在PC13上因为PC13在LQFP48封装里位置比较靠边走线方便。LED的限流电阻用1k接在3.3V和LED阳极之间LED阴极接PC13。这样PC13输出低电平的时候LED亮输出高电平的时候LED灭。为什么用1k而不是330欧因为STM32的GPIO在输出低电平的时候可以吸收20mA电流但为了降低功耗和发热1k的电阻把电流限制在3.3mA左右亮度足够而且对芯片更友好。电源指示灯我接在3.3V和GND之间用一个1k电阻和一个红色LED串联。这个灯一直亮着用来确认板子是否上电。虽然会消耗一点电流但3.3mA的功耗可以忽略不计。如果你对功耗特别敏感可以把电源指示灯去掉或者用一个跳线帽控制。3. PCB布局把原理图变成能用的板子3.1 板框尺寸和元件摆放的优先级板框我定的是50mm×30mm这个尺寸刚好能放下所有元件而且插面包板的时候不会超出太多。板框画好之后先放四个角的安装孔孔径3mm周围留出5mm的禁布区防止螺丝头压到走线。元件摆放的优先级是这样的先放芯片因为它是核心位置定了其他元件才能围着它排再放晶振因为晶振要尽量靠近芯片的PD0和PD1引脚走线越短越好然后放电源部分AMS1117和它的电容要放在板子边缘方便散热和接线最后放排针、按键、LED这些外围元件。芯片我放在板子正中间偏左的位置这样左右两侧的排针到芯片的走线长度比较均衡。晶振放在芯片下方紧挨着PD0和PD1引脚。电源部分放在板子右上角USB座放在上方边缘排针放在左右两侧。复位按键放在板子左下角方便手指按到。用户LED放在芯片上方电源指示灯放在电源部分旁边。这里有个经验排针的排列顺序要按端口来PA0到PA15放左侧PB0到PB15放右侧PC13到PC15放右下角。每个排针旁边用丝印标注端口号字体大小用0.8mm清晰可辨。排针的间距是2.54mm焊盘孔径1.0mm这样既能插面包板也能焊排针座。3.2 电源走线的宽度和铺铜策略电源走线的宽度直接决定了板子的载流能力。1盎司铜厚的情况下1mm宽的走线大概能过1A电流温升10度左右。我这块板子的最大电流不超过500mA所以电源走线用0.5mm宽就够了。但为了保险起见我把3.3V和5V的主干走线加宽到0.8mmGND走线用铺铜代替不单独走线。铺铜的策略是顶层和底层都铺GND铜铜皮和走线之间的间距设为0.3mm铜皮和板框之间的间距设为0.5mm。铺铜的时候选择实心填充而不是网格填充因为实心铜的阻抗更低屏蔽效果更好。铺完之后要做一次DRC检查确认没有孤岛铜和尖锐夹角。AMS1117的散热焊盘要特别注意。SOT-223封装的中间大焊盘是散热用的必须和GND铜皮充分连接。我的做法是在焊盘下面放四个过孔孔径0.3mm把热量从顶层导到底层铜皮。过孔要盖油防止焊接的时候锡流到底层。另外AMS1117周围的铜皮面积要尽量大至少覆盖芯片周围5mm×5mm的范围。3.3 晶振走线的包地处理和长度控制晶振走线是这块板子上最敏感的部分。8MHz晶振的走线要尽量短最好控制在10mm以内而且要走成差分线的形式两条线尽量平行等长。晶振下面不要走其他信号线尤其是高频信号。晶振的匹配电容要放在晶振和芯片之间不能放在晶振的外侧。包地处理是这样的在晶振走线的两侧各放一排过孔过孔间距1mm把晶振区域围起来然后在这些过孔上铺GND铜。这样做的目的是形成一个屏蔽腔减少外界干扰对晶振的影响。晶振的金属外壳如果有的话也要接地但一般的贴片晶振没有外壳接地脚所以只能靠包地来处理。RTC晶振的走线要求更高因为32.768kHz的信号更微弱。我的做法是把RTC晶振放在芯片的PC14和PC15引脚旁边走线长度控制在5mm以内匹配电容紧贴晶振放置。RTC晶振下面铺一层GND铜做屏蔽铜皮不要开窗保持完整。3.4 星型接地在混合信号板上的具体做法星型接地的核心思想是所有地线最终汇聚到一个点避免不同电路模块之间的地电流互相干扰。在这块板子上我把地分成了三个区域模拟地VDDA和VSSA相关、数字地VDD和VSS相关、电源地AMS1117的GND。三个区域在芯片下方的一个点上汇聚这个点就是星型接地的中心。具体做法是在芯片下方放一个0欧姆电阻或者一个窄铜皮桥把模拟地和数字地连接起来。AMS1117的GND单独走一条线到星型中心不和数字地混在一起。晶振的GND也单独走线到星型中心。这样做的目的是让模拟部分的噪声不通过数字地传导到电源部分反之亦然。实际画板的时候星型接地不需要画得特别复杂。我的做法是在芯片下方留一个2mm×2mm的铜皮区域所有地线都往这个区域汇聚然后从这个区域引出一条宽走线到电源地。铺铜的时候模拟地和数字地分别铺中间用0.5mm的间隙隔开只在星型中心处连接。这样既保证了地的完整性又避免了地环路。4. 布线细节从SWD到GPIO的走线规则4.1 SWD信号线的长度匹配和阻抗控制SWD接口的SWCLK和SWDIO是两根高速信号线虽然STM32的SWD速率一般不超过10MHz但走线还是要讲究一点。我的做法是两根线尽量平行走长度差控制在5mm以内线宽0.25mm间距0.25mm。走线不要跨过晶振区域也不要和电源走线平行太长距离。SWD排针放在板子左侧芯片的PA13和PA14引脚在芯片右侧所以走线要从芯片下方绕过去。绕的时候尽量走直线不要拐太多弯。如果必须拐弯用45度角或者圆弧不要用90度角。走线经过的区域如果有过孔要保证过孔和走线之间的间距足够一般0.3mm以上。SWD接口旁边可以放一个100纳法的电容到地用来滤除高频噪声。这个电容不是必须的但在调试的时候如果发现下载不稳定加上这个电容往往能解决问题。我一般会预留一个位置实际焊接的时候看情况决定。4.2 GPIO排针的走线顺序和过孔使用GPIO排针的走线原则是按端口顺序排列走线尽量短不要交叉。PA0到PA15放在左侧排针PB0到PB15放在右侧排针PC13到PC15放在右下角。每个端口的走线从芯片引脚直接拉到对应的排针焊盘中间不要绕路。如果走线必须换层尽量在排针附近换层不要在芯片附近换层。过孔用0.3mm孔径0.6mm焊盘这样对走线的阻抗影响最小。每个过孔旁边可以放一个GND过孔形成回流路径减少信号完整性问题。排针的焊盘我一般用椭圆形长1.8mm宽1.0mm这样焊接的时候锡更容易附着。排针的丝印标注要清晰每个引脚旁边写上端口号字体用0.8mm颜色用白色和绿色阻焊形成对比。4.3 电源指示灯的限流电阻和走线宽度电源指示灯的走线很简单从3.3V排针引一条线到LED阳极LED阴极通过1k电阻到GND。走线宽度0.3mm就够了因为电流只有3.3mA。LED的焊盘用标准0805封装电阻也用0805这样焊接方便而且占板面积小。用户LED的走线从PC13引脚到LED阴极中间串一个1k电阻。走线宽度0.25mm长度尽量短。LED放在芯片上方靠近板子边缘这样从外面看比较明显。LED的颜色我一般用蓝色因为蓝色LED的亮度高低电流下也能看清楚。这里有个小技巧LED的限流电阻可以并联一个跳线焊盘如果需要更亮的LED可以把跳线短接把电阻旁路掉。但这样电流会增大到20mA左右对芯片的GPIO来说接近极限所以不建议长期这样用。我一般只预留位置不实际短接。4.4 铺铜后的DRC检查和孤岛铜处理铺铜完成之后一定要做DRC检查。嘉立创EDA的DRC会检查线宽、间距、过孔、焊盘等参数确保符合制造工艺要求。我一般把DRC规则设置为最小线宽0.2mm最小间距0.2mm最小过孔0.3mm最小焊盘0.5mm。这些参数嘉立创的工艺都能做到而且不会增加成本。DRC检查之后如果有孤岛铜也就是没有连接到任何网络的铜皮要手动删除或者用删除孤岛功能处理。孤岛铜在焊接的时候可能会脱落造成短路或者开路。另外尖锐夹角的铜皮也要处理因为尖锐夹角在蚀刻的时候容易过度腐蚀导致铜皮断裂。嘉立创EDA有平滑铜皮的功能可以把尖锐夹角变成圆弧。最后要检查的是丝印。丝印不能压在焊盘上否则焊接的时候会影响锡膏的附着。丝印的字体大小要统一一般用0.8mm到1mm颜色用白色。板子上的重要信息比如板名、版本号、日期可以放在板子边缘的空白区域。5. 打样前的最后检查与焊接调试5.1 生成Gerber文件和打样参数设置Gerber文件是发给板厂的标准格式嘉立创EDA可以直接导出。导出的时候要确认几个参数层数选双面板板厚1.6mm铜厚1盎司阻焊颜色选绿色丝印颜色选白色表面处理选沉金。沉金比喷锡贵一点但焊接性能更好尤其是细间距的LQFP封装沉金的平整度更高不容易虚焊。导出Gerber之后用嘉立创EDA自带的Gerber查看器检查一遍确认每一层都正确。重点看顶层和底层的走线、阻焊开窗、丝印标注。阻焊开窗要确保焊盘完全露出不能有阻焊覆盖。丝印要确保没有压在焊盘上字体清晰可辨。打样数量我一般选5片因为5片的单价最低而且足够做验证。如果板子比较复杂可以选10片留一些备用。打样周期一般3到5天加急的话可以做到24小时但费用会高一些。5.2 手工焊接LQFP48封装的实操要点LQFP48封装的焊接是这块板子最大的挑战。引脚间距0.5mm引脚宽度0.3mm手工焊接需要一定的技巧。我的做法是先用烙铁在焊盘上涂一层薄锡然后把芯片放上去对准引脚1的位置用镊子固定。接着用烙铁头蘸少量锡沿着引脚一排一排地拖焊。拖焊的时候烙铁头要贴着引脚根部速度要快不要停留太久否则容易把焊盘烫掉。拖焊完之后用放大镜检查有没有连锡。如果有连锡用吸锡线把多余的锡吸掉或者用助焊剂加烙铁重新拖一遍。助焊剂很重要它能让锡的流动性更好减少连锡的概率。我一般用松香助焊剂焊接前在引脚上涂一层焊接后用酒精清洗干净。焊接完成之后先用万用表测一下电源和地之间有没有短路。如果有短路不要上电先检查是不是有锡渣或者连锡。确认没有短路之后再上电测电压。3.3V输出应该在3.3V左右误差不超过0.1V。如果电压不对检查AMS1117的输入输出电容和反馈电阻。5.3 上电后的最小系统验证流程上电之后先看电源指示灯是否亮。如果不亮检查LED的方向和限流电阻。然后测3.3V排针的电压确认在3.3V左右。接着用ST-Link连接SWD接口打开STM32CubeProgrammer看能不能识别到芯片。如果能识别到说明最小系统基本正常。识别到芯片之后写一个最简单的GPIO翻转程序让PC13上的用户LED闪烁。如果LED能闪说明芯片、晶振、复位、下载接口都正常。如果LED不闪检查晶振是否起振可以用示波器测PD0引脚看有没有8MHz的正弦波。如果没有起振检查晶振的匹配电容和焊接情况。最后测一下所有GPIO排针的连通性用万用表蜂鸣档一端接芯片引脚另一端接对应的排针焊盘确认没有开路。如果有开路检查走线和过孔。这一步虽然简单但能发现很多焊接和设计上的问题。5.4 常见问题排查晶振不起振和SWD识别不到晶振不起振是最常见的问题之一。原因通常有三个匹配电容取值不对、晶振焊接不良、芯片的PD0和PD1引脚虚焊。排查的时候先用示波器测PD0如果没有波形把匹配电容换小一点试试比如从22皮法换成12皮法。如果换了电容还是不起振检查晶振的焊接用烙铁重新烫一下晶振的四个焊盘。如果还是不行可能是芯片坏了换一块芯片试试。SWD识别不到芯片原因可能是SWDIO和SWCLK接反了、复位引脚被拉低、BOOT0被拉高、或者芯片没有供电。排查的时候先测3.3V排针的电压确认芯片有电。然后测NRST引脚的电压正常应该是3.3V。如果NRST是0V检查复位按键是不是卡住了或者复位电容是不是短路了。接着测BOOT0的电压正常应该是0V。如果BOOT0是3.3V检查跳线帽是不是插错了。还有一个容易被忽略的问题ST-Link的固件版本太老不支持STM32F103C8T6。这种情况升级ST-Link的固件就能解决。另外SWD接口的线太长也会导致识别不到尽量用短一点的杜邦线20cm以内比较稳。6. 几个让板子更好用的设计细节6.1 排针的丝印标注和防呆设计排针的丝印标注看起来是小事但用起来的时候差别很大。我的做法是每个排针旁边都标注端口号比如PA0、PA1、PA2字体用0.8mm颜色用白色。电源排针标注3.3V、5V、GND用不同的颜色区分比如3.3V用黄色5V用红色GND用黑色。这样插线的时候不容易插错。防呆设计方面SWD接口的排针可以用4Pin的插座而不是排针这样插反了插不进去。USB座用Micro USB虽然现在Type-C更流行但Micro USB的焊接难度低而且线材便宜。如果你打算用Type-C要注意Type-C的焊盘间距更小手工焊接难度更大。6.2 预留的调试测试点和扩展接口调试测试点很重要尤其是当你需要测某个信号的时候。我在板子上预留了几个测试点3.3V、5V、GND、NRST、BOOT0、SWCLK、SWDIO。测试点用1mm的焊盘不焊元件需要测的时候用万用表表笔或者示波器探头直接接触。扩展接口方面我预留了一个I2C接口和一个UART接口。I2C接口接PB6和PB7UART接口接PA9和PA10。这两个接口用4Pin排针引出方便连接OLED、传感器、串口模块等外设。虽然这块板子的定位是核心板但多留两个接口不会增加多少成本用起来的时候会方便很多。6.3 板载LED和按键的复用思路用户LED接在PC13上这个引脚同时也是RTC的入侵检测引脚但在普通应用里可以当普通GPIO用。如果你需要两个LED可以把另一个LED接在PA0上但PA0同时也是唤醒引脚上电的时候会有短暂的高电平LED会闪一下。这个现象不影响使用但要知道原因。复位按键除了复位功能还可以当普通按键用只要在程序里不配置NRST引脚就行。但NRST引脚内部有上拉电阻按下的时候会拉低松开的时候会弹回高电平所以只能做瞬时按键不能做自锁开关。如果你需要自锁开关可以外接一个拨动开关接在GPIO和GND之间。6.4 从核心板到实际项目的过渡建议这块核心板画完之后你可以把它当成一个验证平台用来测试各种外设和程序。当你需要做实际项目的时候可以把核心板的原理图复制过去去掉不需要的部分加上项目特有的电路。比如你要做一个密码锁可以在核心板的基础上加一个矩阵键盘接口、一个电磁锁驱动电路、一个蜂鸣器电路。核心板的电源部分、晶振部分、复位部分、下载部分都可以直接复用。我自己的习惯是每做一个新项目都从核心板的原理图开始改这样能保证最小系统的可靠性。核心板上的元件都是经过验证的不会出现莫名其妙的问题。改完之后把核心板的PCB也复制过去调整一下布局加上项目特有的电路就能快速完成一块新板子的设计。另外如果你打算把这块板子做成产品要注意STM32F103C8T6的国产替代问题。现在市面上有一些 pin-to-pin 兼容的国产芯片价格更低但外设和寄存器可能有差异。如果你只是做学习板或者验证板用原厂的芯片没问题如果是批量产品可以考虑国产替代但一定要先做充分的测试确认软件兼容性。我在实际画板的过程中最大的体会是原理图上的每一个元件、每一条走线都要有明确的理由。不要因为别人都这么画就照抄也不要因为看起来差不多就随便选参数。晶振的负载电容、电源的滤波电容、复位电路的RC时间常数这些参数背后都有具体的计算逻辑。搞懂这些逻辑你画的板子才能稳定可靠而不是靠运气。
阅读完成 · 觉得有帮助?
咨询建站