如果你准备拿 STM32H743 做一块自己的板子,我先给你一句忠告:别把它的外围电路当成 STM32F103 那样随便对付。H743 虽然封装引脚看起来和很多 F4 兼容,但 M7 跑到 480MHz 之后,电源、时钟、复位和调试电路的要求全变了。我第一版 H743 板子就把 VCAP 引脚当普通退耦电容处理,结果一上电就是各种 HardFault,查了三天才反应过来是内部 LDO 供电不稳。这块芯片的必要外围电路,说多不多,说少不少,但每一条线背后都是明确的功能逻辑,不是照抄原理图就有用的。
下面我按自己画板、调试、量产的顺序,把 H743 外围电路里真正决定生死的部分拆开讲一遍。这篇文章不是什么芯片手册的翻译,而是我把踩过的坑、量过的波形、改过的版次都揉进去的实战记录。
1. 电源树设计:H743的命门,最少三路电
很多从 STM32F1/F4 转过来的工程师,画 H743 时最容易想当然——不就是 3.3V 供电吗,数据手册上 VDD、VDDA、VDDUSB、VBAT 全接在一起不就行了?真这么干,板子大概率能跑,但抗干扰能力、ADC 精度、USB 稳定性都会有问题。H743 相当特别的地方在于,芯片内部集成了多个独立的电压调节器,外部除了主电源,还必须在特定引脚上额外提供电源和退耦电容,少一路都可能黑屏。
1.1 VDD、VDDA、VDDUSB 和 VBAT 的正确接法
H743 的 VDD 引脚一般有多个,设计上要求全部连接,不能把某个空着。每个 VDD 引脚旁边放一个 100nF 高频退耦电容,板级再放 10µF~47µF 的储能电容,这是最基础的要求。
VDDA 是模拟电源,给 ADC、DAC、内部参考电压等模拟电路供电。我习惯用磁珠把 VDDA 从 VDD 单独拉一路出来,磁珠选 600Ω@100MHz 左右的型号,后面再接 1µF 和 100nF 电容到模拟地。这样做的好处是开关电源的高频噪声不会直接灌进 ADC 的参考电源轨。如果你对 ADC 精度要求不高,用 0Ω 电阻分隔也不是不行,但磁珠的成本也就几毛钱,没必要省。
VDDUSB 这个引脚非常容易忽略。很多人不用 USB 就把它悬空了,实际上 H743 的 VDDUSB 负责 USB 收发器电源,悬空时内部逻辑状态是不确定的。我习惯的做法是一律接到 VDD,不管用不用 USB。如果做低功耗或者 USB 需要单独断电控制,也可以外接 3.3V LDO 控制,但必须保证上电顺序不早于 VDD。
VBAT 是给 RTC 和备份寄存器供电的。没有外部电池时,直接和 VDD 连在一起。有些开发板为了省事会在 VBAT 上串一个二极管再接 VDD,这么做在断电时反而可能让 VBAT 电压低于 VDD,导致内部切换电路异常。我测试下来,直接短路到 VDD 最稳定,只要 VDD 是干净的 3.3V 就行。
1.2 VCAP 引脚与内部 LDO:少一个电容就启动失败
这是 H743 和 F103 最大的区别之一。H743 内部有多路 LDO,把外部 3.3V 降到内核需要的低压,LDO 的输出是通过 VCAP 引脚引出来的,因此必须在 VCAP 引脚上外接低 ESR 电容,电容的另一端接 VSS。具体容值数据手册写得很清楚,一般是 2.2µF 或 4.7µF 级别,必须是 X5R/X7R 材质,不要用 Y5V,因为 Y5V 在直流偏压下容值衰减太厉害。
我第一版板子把 VCAP 的电容放得离引脚很远,中间还过了两个过孔,结果板子能连接调试器,但程序跑一会儿就 HardFault,有时候连 main 函数都进不去。后来用示波器量 VCAP 引脚上的电压纹波,发现高频噪声能达到几百毫伏,而内部逻辑电源的设计纹波要求远远低于这个值。把电容挪到引脚旁边、缩短回流路径之后,问题立刻消失。
每一路 VCAP 电容都必须靠近对应引脚放置,我一般放在芯片背面正对引脚的位置,用独立过孔直接落到 VSS 平面,绝不和周边去耦电容共用过孔。另外,VCAP 电容旁边最好再并联一个 100nF 高频电容,用来吸收内核切换时产生的瞬态电流,这个做法在跑满 480MHz 时效果很明显。
1.3 去耦电容的计算与布局原则
去耦电容不是随便摆几个 100nF 就完事的。H743 在 480MHz 下全速运行,内核瞬时电流可能达到几百毫安,这时候电源平面的阻抗如果太高,电压跌落就会触发 BOR 复位或者随机死机。完整的做法是:每个电源引脚 100nF,板级储能电容 10µF~47µF,靠近电源入口处再加 10µF 和 1nF 组合。小容值电容负责高频,大容值负责低频能量缓冲,两者缺一不可。
布局上要特别注意电容的位置和过孔安排。我见过很多设计,电容放在电源引脚旁边,但过孔打在电容外侧,电流要先经过引脚再绕回电容,这就完全失去了去耦的意义。正确做法是:电流路径为电源平面 → 过孔 → 电容 → 引脚,或者过孔 → 引脚 → 电容,让电容并联在引脚和地之间。H743 这种 BGA 或 LQFP 封装的引脚密度很高,更需要耐心逐脚核对。
另外,如果板子上用 DCDC 供电,开关频率一般 1MHz~2MHz,输出纹波尽量控制在 30mV 到 50mV 以内。我调试时遇到过 DCDC 纹波偏大导致 ADC 测量值跳动的案例,后来调整了电感感值和输出电容才解决。H7 对电源噪声的敏感程度明显高于 F1 系列,这一点无论如何强调都不过分。
2. 时钟电路:晶振不是插上就能用的
H743 的系统时钟可以通过内部 HSI 或者外部 HSE 倍频到 480MHz,但如果你的应用需要稳定的串口波特率、USB、以太网或者高精度定时器输入捕获,外部晶振几乎不可替代。晶振电路是外围电路里最像"模拟电路"的部分,选型、负载电容、PCB 布局都直接影响起振裕量和时钟抖动。
2.1 HSE 主晶振选型与匹配电容计算
HSE 的频率范围以数据手册为准,常见设计里我推荐 8MHz 或者 25MHz。选 25MHz 的好处是如果你用 STM32H743 的以太网 MAC,25MHz HSE 可以直接通过 MCO 输出给 PHY 做参考时钟,省一颗有源晶振;选 8MHz 则更加通用,内部 PLL 分频倍频也方便。
晶振不是"随便一颗 8MHz 就行"。H743 的 HSE 驱动电路对晶振的 ESR、负载电容范围有明确要求,最好选择数据手册列出的经典型号,比如 NX5032GA、CSTCE 之类,或者至少确认 ESR 在 40Ω 以下。无源晶振需要两个负载电容,计算公式很简单:
CL = (C1 × C2) / (C1 + C2) + Cstray
其中 Cstray 是 PCB 走线和引脚寄生电容,我通常按 3pF~5pF 估算。假设晶振要求 CL = 12pF,Cstray 取 4pF,那么 C1 和 C2 都取 16pF 左右时就比较接近了。实际样板回来后,我会用示波器看波形幅度和起振时间,再微调电容值。注意示波器探头本身有电容,量晶振波形时最好用 10:1 探头且尽量减小探头寄生影响。
很多人在晶振引脚旁边加反馈电阻或者限流电阻,这个在低功耗设计里有用,但 ST 官方参考设计通常直接用两个负载电容就足够。如果你发现晶振起振很慢或者幅度太低,优先检查负载电容是否过大,而不是盲目加电阻。
2.2 LSE 与 RTC:按需配置但不要随随便便省掉
LSE 是 32.768kHz 低速晶振,专供 RTC 和低功耗唤醒使用。如果产品不需要 RTC 计时、不需要低功耗模式下的精确唤醒,省掉 LSE 确实能省两个电容和一个晶振的位置。但我做了几年硬件之后,越来越倾向于"能放就放"——因为调试时经常需要看时间戳,而内部 LSI 的误差在常温下都有几个百分点,做日志排序非常痛苦。
LSE 晶振的 ESR 和负载电容都很小,通常 CL 在 6pF~12.5pF。这类晶振比 HSE 更挑剔,PCB 布局上要走线短、两侧尽量包地,避免与开关电源、高速信号交叉。如果使用带有内部匹配电容的 32.768kHz 晶振,外部就不需要再放负载电容,但要注意型号选对。
H743 的 LSE 还有一个比较麻烦的地方:对晶振驱动电平敏感,Extremely low drive 配置在低电压下可能无法起振。我建议软件上使用HAL_RCC_ExGetLSEConfig查看 LSE 状态,如果发现 StartUp 超时,优先检查晶振是否匹配、负载电容是否偏大,其次再调驱动配置。
2.3 相位差测量场景对时钟的额外要求
热搜词里出现了"stm32h743 相位差",这里就多讲一句时钟电路和相位测量的关系。用定时器输入捕获测量两个同频信号的相位差,本质上是测量两次边沿事件之间的时间差,再除以信号周期换算成角度。这意味着定时器时基的抖动会直接转化为相位测量误差。
如果两个待测信号来自同一个参考源,它们受到的系统时钟抖动是共模的,测量结果反而比较稳定;如果信号来自不同时钟域,那么系统时钟本身的长期稳定性就非常重要。这时候普通 50ppm 的晶振可能不够用,可以选 10ppm 甚至 5ppm 的温补晶振(TCXO),或者外部输入一个高精度 PPS 参考时钟。
还有一个常被忽略的细节:STM32H743 的定时器输入捕获基于 APB 时钟,而 APB 时钟最终来源于 PLL。PLL 的抖动和电源噪声有直接关系,所以相位差测量应用要做好 VDDA 去耦、电源滤波,不然数据手册里写得再漂亮的定时器分辨率,落地都会被噪声拖后腿。
3. 复位、启动模式与调试接口的组合设计
复位电路和启动电路在原理图上只占很小一部分,但它们是板子能否稳定启动、能否顺利烧录的基础。H743 在这块比 F1 复杂的地方在于 PDR_ON 引脚的处理,以及 BOOT 模式不再只由 BOOT0 单引脚决定。
3.1 PDR_ON、NRST 与外部复位器件的关系
PDR_ON 引脚是 H743 必须正确配置的引脚之一,不能悬空。它的作用是用来使能或禁用内部的电源电压检测器(PDR),如果 PDR 使能,VDD 低于阈值时芯片会自动复位;如果禁用,你需要自己提供外部上电复位电路。
我习惯把 PDR_ON 直接接 VDD,使能内部 PDR。这样最省事,而且 ST 的内部 PDR 阈值是经过校准的,比很多廉价外部复位芯片更可靠。只有在某些特殊场景,例如需要用外部复位芯片来确保极小上电斜率下也能可靠复位时,才会把 PDR_ON 接 GND,同时外部复位芯片的输出接到 NRST。无论哪种方式,PDR_ON 都不能悬空。
NRST 是低电平有效复位引脚,芯片内部有上拉,但外部我还习惯加 10kΩ 上拉和 100nF 到地,形成简单的 RC 延迟复位。这个 RC 时间常数不需要太大,一般 1ms~10ms 就够。如果产品工作在干扰严重的环境,比如电机驱动、大电流开关旁边,NRST 很容易被毛刺打断导致误复位,这时候可以加一个电压监控复位芯片,例如 TPS3823 这类带手动复位输入和看门狗功能的器件。
调试时,建议把 NRST 也引到调试接口,很多仿真器需要 NRST 来控制复位。如果 NRST 上被人为加大了电容,可能导致复位信号下降沿太缓,仿真器识别不到,我就在一块板子上吃过这个亏,最后把 100nF 换成 10nF 才解决。
3.2 BOOT0 与选项字节:程序从哪启动
H743 的启动模式由硬件引脚 BOOT0 和选项字节 nBOOT0、nBOOT1 共同决定,比 F1 系列更加灵活,但也更容易让人困惑。硬件上我只要求一点:BOOT0 不能悬空,必须加 10kΩ 下拉电阻到 GND,保证上电默认从主 Flash 启动。
如果BOOT0 被悬空,内部上下拉不确定,上电后芯片可能进入系统存储器 Bootloader 或随机地址执行,表现就是程序烧不进去或者复位后不运行。我见过有人把 BOOT0 直接接 GND 不加电阻,理论上也可以,但为了兼容后续可能用 BOOT0 切换启动模式,预留一个 10kΩ 下拉更稳妥。
从 Flash 启动时,串口下载或者 SWD 下载都行。如果想用系统 Bootloader 通过 UART 下载,需要把 BOOT0 拉高再复位,然后使用 STM32CubeProgrammer 连接。H743 的 Bootloader 支持很多接口,包括 USART、DFU、FDCAN 等,但前提是 BOOT0 引脚电平正确、对应外设引脚没有被其他电路占用。所以原理图上最好把 BOOT0 引到测试点或跳线,方便后续量产维护。
3.3 SWD 调试接口的可靠连接与防护
SWD 是 H743 最常用的调试接口,四根线加 GND 基本够用:SWDIO、SWCLK、NRST、GND。如果需要 SWO(串行线输出)调试 printf,可以把 PB3 引出来作为 SWO,但标准四线已经能满足 90% 以上的调试需求。
可靠性方面,我建议 SWDIO 加 10kΩ 上拉,SWCLK 加 10kΩ 下拉,这样即使调试器复位或断开,引脚电平也不会悬空导致误触发。在调试器和板子之间,串联 33Ω 电阻能减小振铃,特别是连接线比较长的时候效果很明显。如果产品要过 ESD 测试,SWD 接口附近最好加 TVS 管,保护到地,否则人手摸到调试口就可能打坏芯片。
高速调试时,SWD 线不建议超过 20cm,否则容易出现在线调试正常但离线跑飞的情况。H743 内核频率高,调试时钟太快,线缆寄生电容会让信号边沿变缓。我通常把 SWD 频率限制在 4MHz 以下,下载固件用 8MHz 或更高都没问题,在线调试用低一些更稳。其实很多所谓"调试器不稳定"的问题,换根短线、降点频率就解决了,不一定都是芯片外围电路的锅。
4. 串口外围电路设计与空闲中断结合的实战经验
H743 的串口数量非常多,从 USART1 到 UART8,基本可以满足大多数多串口应用。热搜词里提到"stm32h743 串口空闲中断",这确实是 H7 做通信时很常用的功能,但它的稳定性和外围电路关系很大。很多人只在软件层面研究 IDLE 中断+DMA,结果波形不对,怎么调代码都没用。
4.1 TTL、RS232、RS485 的接线差异与典型器件
如果你只是把 H743 的 UART_TX、UART_RX 连到另一个 TTL 电平设备,那外围电路只需要把引脚引出来,最多串一个 0Ω 电阻方便调试时断开。但实际产品里更多是 RS232 或者 RS485 总线,这时候必须加电平转换芯片。
RS232 常用 MAX3232 或者 SP3232,需要外接四个电荷泵电容,一般用 100nF 或 1µF,具体按数据手册。RS232 电平的负压由芯片自己产生,外围电容摆放要靠近芯片,走线短,否则负压可能建立不起来,导致收发异常。
RS485 我一般用 MAX3485 或 SP3485 这类 3.3V 供电的芯片,A、B 之间接一个 120Ω 终端电阻。终端电阻的作用是匹配传输线阻抗、避免信号反射,但它只加在总线物理两端,而不是每个节点都加。如果你在多个节点上都放了 120Ω,总线的等效阻抗会变得很低,驱动能力不够,波形幅度就不达标。
RS485 的收发方向控制引脚 DE/RE 需要 MCU 控制,切换时要注意留出足够时间。如果 DE 刚拉高就立刻发数据,芯片可能还没准备好。软件上在发送前加几个微秒延时,或者用定时器控制方向引脚,都能减少这个问题。
4.2 空闲中断+DMA 接收不定长数据:电路上的隐藏依赖
串口空闲中断的机制很简单:接收线上检测到一帧数据结束后的空闲电平,就产生 IDLE 标志。用 DMA 配合 IDLE 中断,可以实现不定长数据接收,不用每字节都进一次中断,这对 CPU 负载非常友好。
但这个功能要想跑得稳,外围电路必须保证 RX 线上的信号边沿足够陡峭、没有毛刺、没有电平缓慢爬升的现象。我调试过一块板子,RS485 收发器输出到 MCU RX 引脚的走线很长,且旁边有一根 24V 电源线,结果接收数据时 Retry 频率很高,IDLE 中断触发时机忽早忽晚。用示波器一看,RX 信号在低电平和高电平之间来回振铃,MCU 输入端的施密特触发器被触发多次,硬件 UART 认为收到了额外字节。
解决办法是在 RX 走线上靠近 MCU 端加一个 1kΩ 串联电阻和一个 100pF 对地电容,组成低通滤波,减轻振铃;更彻底的做法是改用带整形输出的光耦隔离,或者把串口收发器换成压摆率受限型号。RS485 芯片有一种"限摆率"版本,比如 MAX3483,虽然最高波特率低一些,但电磁干扰特性更好,适合长线通信。
IDLE 检测对波特率精度也很敏感。H743 的 UART 波特率由外设时钟分频而来,如果外设时钟源是内部 HSI,温度变化会导致波特率偏移,进而让对端设备无法正确判断帧结束。我的习惯是串口应用一律使用外部 HSE 作为时钟源,同时开启 UART 的过采样,保证波特率误差控制在 1% 以内。
4.3 一个串口乱码排查实例
我之前做过一块基于 H743 的数据采集板,串口 5 接 RS485 总线,和上位机通信。第一版样机调试时,单独短接自发自收完全正常,一接上总线就乱码,偶尔还能收到一两个正确字节。我一开始怀疑是软件里 DMA 配置问题,反反复复调了两天没进展。
第三天实在没办法,我用差分探头量了 A、B 线之间的波形,发现高电平幅度只有 1.2V 左右,低电平也压不下去,整个波形像是被"卡住"了。逐段排查发现是 A、B 线接反了,而且总线两端各接了一个 120Ω 终端电阻,两端的偏置电压受到了影响。把线序纠正、只保留总线末端一个终端电阻之后,通信立即恢复稳定。
这个案例让我养成了一个习惯:任何串口通信问题,第一步永远是用示波器看总线波形,而不是改软件。H743 的串口空闲中断和 DMA 配置本身很简单,真正不确定的因素往往在芯片外面的电平转换、终端匹配和地电位差上。
5. 输入信号链:相位差测量对模拟前端的要求
"stm32h743 相位差"这个热词让我有点意外,因为用 H743 做相位差测量确实不少见,但很多人都低估了外围电路在其中扮演的角色。H743 的定时器输入捕获和高级定时器性能很强,但如果信号进入 MCU 之前没有调理好,再强的定时器也是白搭。
5.1 为什么不能直接把正弦信号送到定时器输入
定时器输入捕获检测的是边沿,也就是电平跳变瞬间,而正弦信号在过零点附近变化缓慢。MCU 输入引脚有施密特触发器,但施密特触发器的阈值并不是精确、稳定的参考电平,它受温度、电源电压影响,而且当正弦波在阈值附近来回穿越时,可能产生多次跳变。
后果很明显:如果待测正弦信号幅度较小、或者叠加了噪声,定时器可能在同一个周期内捕获到多个上升沿,软件里算出来的相位差就乱七八糟。我做过一个测试,把 10kHz 正弦波直接接到 TIM1 输入捕获引脚,用内部下拉,结果捕获时间戳抖动能达到几十微秒,这个误差拿来测相位完全不可接受。
正确的思路是先把正弦信号转换成为同频方波,再用定时器捕获方波边沿。这一步通常由外部比较器完成,而不是指望 MCU 内部施密特触发器。
5.2 用比较器整定方波的电路与参数估算
比较器电路我常用 LM393 或高速比较器如 TLV3501,具体选型取决于待测信号频率。LM393 是开漏输出,需要上拉电阻;TLV3501 是推挽输出,可以直接输出轨到轨方波,适合更高频率。
下面是一个典型的单电源比较器整形电路思路:假设输入是幅值 ±1V 的正弦波,MCU 电源是 3.3V,比较器供电也是 3.3V。第一步通过电阻分压把信号中点抬到 1.65V,然后送到比较器的同相输入端;反相输入端接一个 1.65V 参考电压,用两个 10kΩ 电阻分压得到,再并一个 100nF 电容滤波。
为了避免噪声导致反复触发,需要加迟滞。最简单的方法是在同相输入端和输出端之间跨接一个几十 kΩ 到几百 kΩ 的电阻,形成正反馈。迟滞窗口的计算公式为:
Vhys ≈ R1 / (R1 + R2) × (VOH - VOL)
其中 R1 是从输入源到同相端的等效电阻,R2 是跨接在输出和同相端的反馈电阻。比如 R1=10kΩ、R2=200kΩ,输出摆幅 3.3V,迟滞大约是 157mV。这个窗口足以抑制大部分噪声,同时不会明显扭曲相位。实际调试时用示波器观察比较器输出边沿,再微调反馈电阻。
比较器输出到 MCU 定时器输入引脚之间,我习惯串一个 100Ω~330Ω 电阻,靠近 MCU 引脚处加一个 10pF~100pF 电容到地,形成低通滤波,消除边沿上的过冲。对于几十 kHz 以内的信号,这个 RC 不会带来明显相位延迟;如果信号频率更高,电容就必须减小或者去掉,用纯电阻串联来限流。
5.3 输入保护与 PCB 走线
任何接到产品外部端子的信号都要考虑输入保护,H743 的引脚绝对最大额定电压是 3.6V 左右,超过就可能永久损坏。常用的保护电路是在输入端子处串联一个 1kΩ 电阻,然后在 MCU 侧并联两个二极管到 3.3V 和 GND,或者放一个 TVS 管。
对于相位差测量,还要注意两个输入通道的走线长度尽量一致。如果一路信号走了 5mm、另一路走了 80mm,传输线上的延迟都会造成额外相位差,高频下尤其严重。我通常让两路输入走线对称,长度差控制在 10mm 以内,并且在下方铺完整的地平面。
还有一点:比较器供电电压必须和 MCU 逻辑电平匹配。如果比较器用 5V 供电,输出高电平 5V 直接灌进 3.3V 的 H743 引脚,即使电流不大,也可能触发引脚内部保护二极管,长期使用会缩短寿命。最好选 3.3V 供电的比较器,或者输出端串电阻分压、加钳位二极管。
6. 点亮 H743 板子之前的自检清单与实战复盘
最后这部分其实是给原理图打样回来之后的自己看的。硬件调试最怕的不是某个电路复杂,而是多个问题叠加。按照下面的顺序检查,能省下大量排查时间。
6.1 上电前用万用表检查的关键节点
上电之前,先用万用表二极管档逐个检查以下节点是否和 GND 短路:VDD、VDDA、VDDUSB、VBAT、VCAP、NRST、BOOT0、SWDIO、SWCLK。这些地方如果有短路,通常是因为焊接连锡、过孔和地平面误触、封装库画错,越早发现越容易处理。
接着把电源断开,用万用表电阻档量 VDD 对地阻抗。如果阻抗只有几欧姆,大概率有短路;正常的 3.3V 电源轨对地阻抗应该在几百欧姆以上,因为你量的是芯片内部各种上拉、ESD 结构的等效并联值,不会太低。
上电之后,用示波器或万用表检查每个电源引脚电压。VCAP 引脚电压应该是稳定、无高频振荡的,NRST 应该接近 VDD,BOOT0 应该接近 0V。然后量 HSE 晶振引脚,正常应该有正弦波形,频率和标称值一致。没有示波器的话,至少应该量到晶振引脚的对地电压在电源电压的一半左右,说明电路已经起振。
6.2 我踩过的外围电路坑
第一个坑,VCAP 电容放得太远。前面已经单独说过,这是 H743 特有的坑,市面上很少看到类似的问题总结,我当初也是查了很久手册才意识到。
第二个坑,SWD 线太长导致 flash 下载失败。当时用一根 30cm 的杜邦线连接 ST-Link 和板子,下载经常卡在 50%,进度条不走。我当时以为是芯片锁死,还反复擦除,后来换了 10cm 短线,一次通过。这个教训让我在做测试治具时特别注意 SWD 线的长度和屏蔽。
第三个坑,去耦电容全部放在 PCB 同一侧、同一个大过孔阵列里。那是早期版本,为了美观把所有 100nF 都摆成一条直线,结果 H743 跑到 400MHz 以上就开始出现随机死机,降到 240MHz 才稳定。后来把电容分散到各引脚附近、每个电容独立过孔,问题彻底消失。H7 的功耗和电流变化速度比 F1 高一个量级,去耦电容的摆放是硬要求,不是玄学。
6.3 从原理图到 PCB Layout 的几条硬性规则
结合所有上面提到的内容,我给自己定了以下几条不能打破的规则:
第一,VCAP 电容和 HSE/LSE 晶振是第一优先布局对象,必须靠近芯片,不允许被其他走线穿过。VCAP 的过孔直接下到 VSS,晶振下方铺地铜。
第二,电源平面和地平面必须完整。H743 这样的高速芯片,抖动问题 90% 和电源阻抗有关,割裂的电源平面会让所有去耦电容失效。
第三,模拟电源 VDDA 和数字电源 VDD 用磁珠隔离,模拟地和数字地在主电源入口处单点连接,避免开关电流流过模拟区域。
第四,所有外部接口(RS485、外部信号输入、调试口)都加 ESD 保护器件,不要省略。板子拿去做静电测试时,省一个 TVS 可能会报废一整批货。
第五,串口 RX、定时器输入这类容易被外部干扰的信号,在 MCU 引脚附近预留一个 RC 滤波的位置。即使第一版不需要,第二版也可能要用,提前预留能省一次改板。我现在的做法是原理图上先画上 100Ω+100pF 的默认值,如果调试不装或改值都很方便。
如果你按这些接线和布局去做,至少能绕开我在第一版板子上踩过的绝大部分坑。外围电路这东西,原理图看着简单,真正决定稳定性的都在细节里。H743 是一颗性能很强的芯片,但性能越强,对周边电路的配合要求就越高。