1. 为什么我选择用AD09来画STM32H743的核心板
STM32H743VIT6这颗芯片,在圈子里算是“性能怪兽”级别的存在。Cortex-M7内核,480MHz主频,1MB SRAM,2MB Flash,外设接口多到让人眼花缭乱。但很多朋友拿到芯片之后卡在了第一步:怎么把它变成一块能跑起来的最小系统板?我前前后后打过五六版H743的板子,从最初用现成的开发板到自己从头画原理图、布PCB,踩过的坑足够写一本小册子。这篇文章就把整个流程拆开揉碎讲一遍,重点放在原理图设计和PCB布局布线上,工具用的是Altium Designer 09——没错,就是那个老版本,稳定、轻量、对电脑配置要求低,很多中小团队和学校实验室至今还在用它。
你可能会问,都什么年代了还用AD09?我实测下来,对于STM32H743这种LQFP100封装的板子,AD09完全够用。它的原理图库和PCB库管理逻辑清晰,布线推挤功能虽然不如新版本智能,但手动布线的手感反而更可控。而且AD09的安装包小,启动快,不会像某些新版本那样开个工程要等半天。当然,如果你手头只有AD09的安装包,或者公司电脑上装的就是这个版本,那这篇文章就是为你写的。
这篇文章适合谁看?如果你已经会用AD画简单的双层板,但对高速信号、电源完整性、多层板叠层这些概念还比较模糊,那正好。我会从芯片选型开始,一步步讲到原理图绘制、PCB布局、布线规则设置、铺铜和输出Gerber。每个关键决策我都会解释为什么这么做,参数怎么算,哪些地方容易翻车。目标很简单:你看完之后,能自己独立画出一块能稳定运行的H743最小系统板。
2. STM32H743VIT6最小系统的核心需求拆解
2.1 这颗芯片到底需要什么才能跑起来
最小系统的概念听起来简单,就是让芯片能工作起来的最少外围电路。但H743和F103那种经典款不一样,它的电源域复杂得多。F103C8T6你只要给3.3V、接个晶振、拉好BOOT引脚就能跑,H743不行。它内部有多个电源域:VDD、VDDA、VDDLDO、VBAT、VREF+,还有一堆VCAP引脚需要外接电容。如果你只按F103的思路来画,板子大概率起不来,或者跑着跑着就死机。
我第一版H743的板子就是吃了这个亏。当时只接了VDD和VDDA,VCAP引脚随便挂了两个100nF电容,结果芯片能识别但一跑高速就复位。后来查手册才发现,VCAP引脚是内部LDO的输出,需要接2.2uF的低ESR电容,而且布局时要尽量靠近引脚。这个细节在数据手册的电源章节里写得很清楚,但很容易被忽略。
所以H743最小系统的核心需求可以归纳为这几块:电源系统(多路供电和去耦)、时钟系统(外部晶振和内部PLL)、复位系统(复位电路和按键)、启动配置(BOOT引脚)、调试接口(SWD)、外扩存储(可选但强烈建议)。每一块都有讲究,下面逐个拆解。
2.2 电源树设计:从5V输入到多路3.3V和1.8V
H743的供电方案有好几种,我用的是最稳妥的一种:外部5V输入,经过LDO降到3.3V给VDD和VDDA,然后芯片内部的LDO再产生1.8V给内核。但这里有个坑,VDDLDO引脚需要外接电容,而且这个电容的容值和ESR都有要求。数据手册推荐的是2.2uF,但我实测下来用4.7uF也没问题,启动更稳。
具体来说,VDD引脚有多个,分布在芯片四周,每个引脚旁边都要放一个100nF的去耦电容。VDDA是模拟电源,除了100nF之外还要加一个1uF的钽电容或者陶瓷电容。VREF+如果不用外部基准,可以直接接VDDA,但也要加去耦。VBAT如果不接电池,直接接VDD就行,但中间最好串一个0欧姆电阻或者二极管,方便以后改。
这里有个经验:去耦电容的布局比容值更重要。我见过有人把电容放在芯片背面,觉得反正电气连接一样。但高频去耦电容的回路电感很关键,电容离引脚越近,回路面积越小,去耦效果越好。我的做法是电容放在芯片同一面,尽量贴近引脚,走线先经过电容再进引脚,不要从引脚拉一根长线到电容。
2.3 时钟方案:外部晶振还是内部RC
H743内部有HSI和CSI,但精度和稳定性都不如外部晶振。如果你要做USB、以太网或者高精度定时,外部晶振是必须的。我一般用25MHz的无源晶振,配合两个22pF的负载电容。但这里要注意,H743的晶振电路对负载电容比较敏感,电容值要根据晶振的规格来算。
计算公式是这样的:CL = (C1 * C2) / (C1 + C2) + Cstray。其中CL是晶振的负载电容,Cstray是PCB的寄生电容,一般取3到5pF。假设晶振的CL是10pF,Cstray取4pF,那么C1和C2大概在12pF左右。但实际调试时,我建议先用22pF,然后用示波器看起振情况,如果频率偏了再调整。另外,晶振下面不要走任何信号线,最好铺地隔离,减少干扰。
如果你对时钟精度要求不高,也可以用内部的HSI,通过PLL倍频到480MHz。但HSI的精度只有1%左右,跑USB会有问题。所以我的建议是:不管怎样,先把外部晶振的位置留出来,哪怕先不焊,调试的时候有备无患。
2.4 复位和启动配置:别小看这两个引脚
复位电路很简单,一个10k上拉电阻加一个100nF电容,再并一个按键。但H743的复位引脚是低电平有效,所以按键按下时拉低。这里要注意,复位引脚的走线要短,不要靠近高频信号,否则容易误触发。
BOOT引脚决定了芯片从哪里启动。H743的BOOT0和BOOT1配置比F103复杂一点,具体组合要看手册。我一般把BOOT0通过10k电阻下拉到地,BOOT1也下拉,这样默认从Flash启动。如果你需要从系统存储器启动,就把BOOT0拉高。为了方便调试,我会在BOOT0上留一个跳线帽或者测试点。
还有一个容易忽略的点:H743的NRST引脚内部有上拉,但阻值比较大,外部还是要加一个10k的上拉电阻,保证复位信号的上升沿足够快。我试过不加外部上拉,复位偶尔会不成功,尤其是电源上升慢的时候。
3. 原理图绘制:从库文件到网络连接的完整流程
3.1 元件库的准备和芯片符号的绘制
AD09自带的库里面没有STM32H743VIT6,需要自己画。我一般从ST官网下载芯片的引脚定义PDF,然后照着画。LQFP100封装的引脚排列是逆时针的,1脚在左上角,100脚在右上角。画符号的时候,我习惯把电源引脚放在顶部,地引脚放在底部,信号引脚按功能分组放在两侧。这样原理图看起来清晰,检查的时候也方便。
画符号有几个细节要注意:引脚编号要和实际封装一致,引脚名称用芯片手册上的缩写,比如PA0、PB1这种。电源引脚可以合并成一个符号,但要在属性里标注清楚。我见过有人把VDD和VDDA画成一个引脚,结果PCB上少放了去耦电容。所以我的做法是:每个电源引脚都单独画出来,哪怕名字一样,这样布局的时候不会漏。
封装库也要自己建。LQFP100的焊盘尺寸要按手册推荐来,焊盘长度一般比引脚多0.3mm左右,宽度和引脚差不多。我用的焊盘尺寸是长1.5mm、宽0.3mm,间距0.5mm。这个尺寸打样了好几次,焊接良率很高。如果你用嘉立创打样,可以直接用他们的标准封装库,省事。
3.2 电源部分的原理图设计和去耦电容配置
电源部分的原理图我一般分成三块:输入保护、LDO稳压、去耦网络。输入保护用一个肖特基二极管防反接,再加一个自恢复保险丝。LDO我选的是AMS1117-3.3,虽然压差大一点,但便宜好用。如果你对效率有要求,可以换成DC-DC,但布线会复杂一些。
去耦网络是重点。我在原理图上会把每个VDD引脚旁边的100nF电容都画出来,然后用网络标签连接。这样PCB布局的时候,每个电容都能对应到具体的引脚。VDDA的滤波我用一个1uF的陶瓷电容加一个100nF,VREF+如果不用外部基准,就直接接VDDA,中间加一个0欧姆电阻。
VCAP引脚的处理要特别小心。H743有两个VCAP引脚,需要接2.2uF的电容到地。这个电容要用低ESR的陶瓷电容,X5R或者X7R材质。我试过用普通的电解电容,结果芯片跑高速时偶尔会复位。后来换成陶瓷电容就稳了。布局的时候,这两个电容要尽量靠近VCAP引脚,走线要短而粗。
3.3 晶振电路和复位电路的绘制要点
晶振电路在原理图上很简单,一个晶振加两个电容。但画的时候要注意,晶振的两个引脚要分别接OSC_IN和OSC_OUT,电容的另一端接地。我一般会在晶振旁边加一个1M的反馈电阻,虽然H743内部可能已经有,但外部加一个更保险。
复位电路就是一个10k上拉加100nF电容,再并一个按键。按键我选的是贴片轻触开关,方便焊接。复位引脚的走线在PCB上要尽量短,不要和晶振或者SWD信号平行走。
SWD接口我一般用4针的排针:VCC、SWDIO、SWCLK、GND。有些朋友喜欢用5针,加一个RESET,但我实测下来4针就够了,复位可以用按键。SWDIO和SWCLK的走线要等长,虽然H743的SWD速度不高,但等长走线是个好习惯。
3.4 网络连接和ERC检查的实操经验
原理图画完之后,一定要做ERC检查。AD09的ERC功能虽然不如新版本强大,但基本的短路、开路、未连接引脚都能查出来。我一般会重点检查这几个地方:电源和地的连接、去耦电容是否每个引脚都有、晶振和复位电路是否正确、BOOT引脚的配置。
有一个坑我踩过:AD09默认的ERC规则会把一些正常的连接报成错误,比如电源引脚和去耦电容之间的连接。这时候不要急着改原理图,先检查规则设置。我一般会把“未连接的引脚”警告打开,但把“电源引脚未驱动”的警告关掉,因为LDO的输出引脚在ERC里可能被识别为未驱动。
还有一点,原理图上的网络标签要统一命名。我习惯用VDD_3V3、GND、VDDA这种,不要用VCC、VDD混着来。网络标签不一致会导致PCB上网络断裂,查起来很麻烦。
4. PCB布局:让H743稳定运行的关键步骤
4.1 板层选择和叠层设计:四层板还是六层板
H743的引脚多,信号速度快,我建议至少用四层板。两层板不是不能做,但电源和地的处理会很麻烦,而且EMC性能差。四层板的叠层我一般这样安排:顶层信号、内电层地、内电层电源、底层信号。这样信号有完整的参考平面,电源和地的阻抗也低。
如果你预算充足,可以用六层板:顶层信号、地、信号、电源、地、底层信号。六层板的信号完整性更好,尤其是DDR或者高速USB这种应用。但对于最小系统板来说,四层板足够了。我打过四层板和六层板,实测下来跑480MHz都没问题,区别主要在EMC测试上,六层板余量更大。
板厚我一般选1.6mm,这是最通用的厚度,打样便宜。铜厚用1oz,如果电源电流大可以用2oz,但H743的电流不大,1oz够了。
4.2 芯片布局和去耦电容的摆放原则
芯片放在板子中间,周围留出足够的空间放去耦电容和走线。LQFP100的封装,引脚间距0.5mm,走线的时候要注意线宽和间距。我一般用6mil的线宽,6mil的间距,这是大多数PCB厂的标准工艺。
去耦电容的摆放是布局的重中之重。每个VDD引脚旁边的100nF电容,要尽量贴近引脚,走线先经过电容再进引脚。我见过有人把电容放在芯片背面,觉得反正电气连接一样,但高频去耦电容的回路电感很关键,电容离引脚越近,回路面积越小,去耦效果越好。我的做法是电容放在芯片同一面,尽量贴近引脚,走线先经过电容再进引脚,不要从引脚拉一根长线到电容。
VCAP的2.2uF电容要更近,最好就在引脚旁边。晶振的负载电容也要靠近晶振,走线要短。复位电路的电容和电阻靠近复位引脚。
4.3 晶振和复位电路的布局细节
晶振放在芯片的OSC引脚附近,走线尽量短,不要打过孔。晶振下面铺地,但不要铺到晶振引脚下面,避免寄生电容。负载电容的地要单独回到芯片的地,不要和数字地混在一起。
复位按键放在板边,方便按。复位引脚的走线要短,不要靠近晶振或者SWD信号。我一般会在复位引脚旁边放一个测试点,方便用示波器看复位波形。
SWD接口放在板边,方便插调试器。SWDIO和SWCLK的走线要等长,虽然H743的SWD速度不高,但等长走线是个好习惯。SWD接口旁边可以放一个电源指示灯,方便看板子有没有上电。
4.4 电源平面和地平面的处理技巧
四层板的内电层我一般这样分:第二层是完整的地平面,第三层是电源平面。地平面不要分割,保持完整。电源平面可以分割成3.3V和1.8V,但要注意分割的宽度和间距。我一般用20mil的间距,避免电源平面之间的耦合。
如果板子上有模拟部分,比如ADC或者DAC,VDDA的电源平面要和数字电源分开,单点接地。我一般用磁珠或者0欧姆电阻连接数字地和模拟地,位置选在ADC引脚附近。
铺铜的时候,顶层和底层都要铺地铜,过孔要多打,尤其是芯片周围和晶振附近。过孔我一般用0.3mm的孔径,0.6mm的焊盘,这是最通用的尺寸。
5. 布线规则和实操:从电源线到信号线的完整策略
5.1 线宽和电流的关系:电源线到底要多粗
线宽和电流的关系可以用IPC-2221标准来估算。对于1oz铜厚,外层走线,温升10°C的情况下,1A电流大概需要20mil的线宽。H743的电流不大,核心电流大概几百mA,所以电源线用20mil到30mil就够了。我一般用30mil走3.3V的主干,20mil走分支。
地线我一般用铺铜代替走线,但关键的地回路还是要走线。比如晶振的地、复位的地、VCAP的地,都要单独走线回到芯片的地引脚。
信号线我一般用6mil到8mil,SWD和晶振的线可以稍微粗一点,用10mil。USB的差分线要用90欧姆的阻抗,线宽和间距要根据叠层来算。我一般用6mil线宽、6mil间距,参考地平面,阻抗大概在90欧姆左右。
5.2 关键信号的布线要求:晶振、SWD、USB
晶振的走线要短、粗、直,不要打过孔。负载电容的地要单独回到芯片的地。晶振下面不要走任何信号线,最好铺地隔离。
SWD的走线要等长,虽然速度不高,但等长走线可以减少反射。SWDIO和SWCLK的线宽用8mil到10mil,间距用6mil。
USB的差分线要严格等长,误差控制在5mil以内。差分线的阻抗要控制在90欧姆,线宽和间距要根据叠层来算。USB的走线不要跨分割,参考地平面要完整。
5.3 布线顺序和推挤技巧:先电源后信号
布线顺序我一般是这样:先走电源线,再走关键信号(晶振、SWD、USB),最后走普通信号。电源线走完之后,铺地铜,然后再走信号线。这样地平面比较完整,信号的回流路径也短。
AD09的推挤功能虽然不如新版本智能,但手动布线的手感很好。我一般用“交互式布线”模式,按住Shift+空格切换走线角度。遇到密集的区域,可以用“推挤”功能把已有的线推开,但要注意不要推得太乱。
布线的时候要注意,不要有直角或者锐角,用45度或者圆弧。过孔不要打太多,尤其是关键信号。如果必须打过孔,要在过孔旁边加一个地过孔,提供回流路径。
5.4 铺铜和过孔处理:让地平面更完整
铺铜的时候,顶层和底层都要铺地铜,过孔要多打。我一般用0.3mm的孔径,0.6mm的焊盘,间距1mm左右。芯片周围和晶振附近要加密过孔,减少地平面的阻抗。
铺铜的间距我一般设8mil到10mil,不要太小,否则蚀刻的时候容易出问题。铺铜的连接方式用“直接连接”或者“热焊盘”,我一般用热焊盘,方便焊接。
铺铜之后要做DRC检查,确保没有孤岛或者尖锐的铜皮。孤岛铜皮要删掉,尖锐的铜皮要修圆,避免尖端放电。
6. 常见问题与排查技巧实录
6.1 芯片不启动或者频繁复位怎么办
芯片不启动的原因很多,我按概率从高到低排个序:电源问题、晶振问题、复位问题、BOOT配置问题。电源问题最常见,尤其是VCAP电容没接或者容值不对。我遇到过好几次,VCAP电容用了1uF,结果芯片跑高速就复位,换成2.2uF就好了。
晶振问题也常见,尤其是负载电容不匹配。如果晶振不起振,先用示波器看OSC_IN引脚有没有波形。如果没有,检查电容和晶振的焊接。如果有波形但频率不对,调整负载电容。
复位问题一般是复位引脚的走线太长,或者上拉电阻太大。我一般用10k上拉,100nF电容,走线尽量短。
BOOT配置问题就是BOOT0和BOOT1的电平不对。默认从Flash启动,BOOT0和BOOT1都下拉。
6.2 晶振不起振的排查思路
晶振不起振,先检查焊接。晶振的引脚有没有虚焊,电容有没有焊错。然后用示波器看OSC_IN引脚,如果有波形但幅度很小,可能是负载电容不对。如果完全没有波形,可能是晶振坏了,换一个试试。
还有一个可能:H743的OSC引脚内部有可编程的驱动能力,如果驱动能力设得太低,晶振可能不起振。这个可以在代码里配置,但硬件上也可以先检查。
6.3 SWD连接失败的常见原因
SWD连接失败,先检查接线。SWDIO、SWCLK、GND、VCC有没有接对。然后检查芯片有没有上电,电源指示灯亮不亮。如果都正常,可能是SWD引脚被占用了,比如配置成了GPIO。这时候需要把BOOT0拉高,从系统存储器启动,然后重新烧录。
还有一个可能:SWD的速度太快,可以降低速度试试。我一般用1MHz,稳定。
6.4 PCB打样和焊接的避坑经验
PCB打样我一般选嘉立创,四层板,1.6mm厚,1oz铜,绿油白字。打样之前一定要做DRC检查,确保没有短路和开路。Gerber文件要仔细检查,尤其是阻焊层和丝印层。
焊接的时候,LQFP100的芯片我一般用热风枪加焊膏。焊膏要选好的,我用的是一种含铅的焊膏,流动性好。焊接之前先给焊盘上锡,然后放芯片,用热风枪吹。吹的时候要注意温度,我一般用300°C,吹10秒左右。吹完之后用放大镜检查有没有虚焊。
去耦电容和电阻用烙铁焊就行,但要注意不要烫坏。晶振和VCAP电容要最后焊,避免焊接的时候影响。
7. 写在最后:一些个人体会
画H743的板子,最深的体会就是细节决定成败。电源的去耦、晶振的布局、VCAP的电容,这些看起来不起眼的地方,往往决定了板子能不能稳定运行。我第一版板子就是因为VCAP电容的问题,折腾了好几天。后来每次画板子,我都会把数据手册的电源章节反复看几遍,确保每个引脚都处理到位。
AD09虽然老,但用熟了之后效率很高。它的原理图库和PCB库管理逻辑清晰,布线的手感也很好。如果你还在用AD09,不用急着换新版本,把现有的工具用透,比盲目追新更重要。
最后分享一个小技巧:画完PCB之后,把板子的3D视图打开,看看有没有元件重叠或者干涉。AD09的3D功能虽然简单,但足够检查基本的装配问题。我每次打样之前都会看一遍3D视图,避免了不少低级错误。