一、为什么两层板不够用了?


当你给STM32F103系统板加上USB转串口(CH340E,480Mbps)、SPI Flash(W25Q128,50MHz+)或CAN收发器(1Mbps)后,两层板的局限性立刻暴露:

  • 电源回路电感大:3.3V走线细长,瞬态电流导致电压塌陷
    地平面不连续:跳线、过孔分割GND,回流路径迂回
    串扰严重:SPI CLK与MOSI平行布线3cm,信号边沿畸变
    辐射超标:30MHz~300MHz频段包络超标6dB

四层板不是"高级"选项,而是高速信号的基础保障。成本增加约30%,但调试时间减少70%。

二、四层板层叠精细设计


1. 层叠参数计算
选用立创EDA标准四层板工艺:

  • 层厚结构(从上至下):
    Top Layer:1oz铜,信号 + 器件
    Prepreg:2116玻纤,0.1mm,εr=4.3
    GND Plane:1oz铜,完整参考地
    Core:FR-4芯板,1.0mm,εr=4.5
    PWR Plane:1oz铜,电源分割
    Prepreg:2116玻纤,0.1mm
    Bottom Layer:1oz铜,辅助信号
    总厚度:1.6mm(标准工艺,成本最优)

2. 阻抗控制目标

  • USB差分(D+/D-):90Ω±10%,耦合带状线
    SPI单端信号:50Ω±15%,微带线(表层)或带状线(内层)
    CAN差分:120Ω±10%,终端匹配电阻内置TJA1050
    SWD调试:50Ω单端,非关键,但建议控制

3. 线宽计算(立创阻抗计算器)

  • 表层微带线50Ω:线宽0.28mm(11mil),离地平面高度0.1mm
    内层带状线50Ω:线宽0.18mm(7mil),对称参考上下平面
    表层差分90Ω:线宽0.2mm,间距0.15mm,耦合系数0.25

务必用板厂提供的阻抗计算器复核!不同板厂的介电常数和铜厚有差异,立创、捷配、华秋的参数各不相同。

三、高速信号仿真:从理论到工具


1. SPI总线信号完整性分析
STM32F103 SPI1最高18MHz,但W25Q128支持80MHz+,实际布线按50MHz设计:

  • 信号组:SCK(时钟)、MOSI(主机出)、MISO(主机入)、NSS(片选)
    拓扑:点对点,SCK和MOSI为关键信号
    边沿速率:约2ns(STM32 GPIO典型值)
    波长:λ = c / (f × √εr) ≈ 300 / (50M × 2.1) ≈ 2.86m
    临界长度:λ/10 ≈ 286mm(远大于板尺寸,但反射仍需关注)

2. 串扰仿真设置(HyperLynx / SI9000)

  • 仿真场景:SCK与MOSI平行布线,间距0.2mm,长度5cm
    aggressor(攻击线):SCK,摆幅3.3V,频率10MHz
    victim(受害线):MOSI,静态高电平
    耦合类型:容性耦合为主(表层微带线)

仿真结果:

  • 近端串扰(NEXT):峰值电压0.45V(13.6%),超出噪声容限(0.4V)
    远端串扰(FEXT):峰值电压0.12V,可接受
    整改措施:间距增大至0.4mm(3W原则),或中间插入地线
    整改后:NEXT降至0.15V(4.5%),满足要求

3. 地弹噪声(Ground Bounce)仿真

  • 场景:8个GPIO同时翻转,驱动LED,回流电流涌入GND引脚
    问题:LQFP-48的GND引脚(Pin8、Pin23、Pin35、Pin47)通过键合线到die
    仿真:同时翻转时,GND平面出现20mV噪声脉冲
    影响:ADC采样精度下降(12bit ADC,1LSB=0.8mV,20mV=25LSB!)

整改方案:

  • ADC输入添加RC滤波:1kΩ + 0.1μF,截止频率1.6kHz
    GPIO翻转速率限制:软件配置低速模式(2MHz)
    独立AGND区域:Pin17(VREF+)、Pin16(VSSA)单独铺铜,单点接数字地

四、电源完整性(PI)实战分析


1. 电源分配网络(PDN)阻抗分析[/h]
目标:3.3V PDN在DC到100MHz范围内阻抗<0.5Ω

  • 低频段(DC~1kHz):AMS1117-3.3输出阻抗,约0.1Ω
    中频段(1kHz~1MHz):大容量电解电容(100μF)主导,ESR约0.5Ω
    高频段(1MHz~100MHz):陶瓷电容阵列主导,需多级配置

[i]2. 去耦电容选型矩阵


  • 10μF/0805 × 2:AMS1117输入/输出,覆盖10kHz~1MHz
    1μF/0603 × 4:MCU四组VDD,覆盖1MHz~10MHz
    100nF/0402 × 16:每个电源引脚一个,覆盖10MHz~100MHz
    10nF/0402 × 8:晶振、复位等敏感电路,覆盖100MHz+

0402电容的自谐振频率(SRF)约100MHz,正好覆盖STM32时钟谐波。0603电容SRF约50MHz,0805约20MHz,必须混合使用。

3. 平面谐振仿真

  • 工具:Ansys SIwave / Cadence Sigrity
    模型:50mm×50mm四层板,GND-PWR间距1.0mm
    问题:在180MHz出现谐振峰,阻抗飙升至2Ω
    原因:平面尺寸λ/4 ≈ 417mm(εr=4.5),但边缘反射形成驻波
    整改:四角添加220pF电容,短接GND-PWR,阻尼谐振
    效果:谐振峰压降至0.8Ω,满足目标

五、EMC预兼容测试与整改


1. 测试环境搭建

  • 设备:频谱分析仪(RSA306B)+ 近场探头(H场/E场)
    环境:实验室桌面,无屏蔽室(预兼容测试)
    被测板:STM32F103四层板,运行LED闪烁+SPI通信程序

2. 原始测试结果[/h]

  • 30MHz~100MHz:包络超标4~6dB,峰值在48MHz(SPI SCK 8MHz的6次谐波)
    100MHz~300MHz:包络超标3dB,峰值在144MHz(晶振18MHz的8次谐波)
    辐射源定位:H场探头靠近SPI排针和晶振区域时信号最强

[i]3. 整改措施逐一实施[/h]
<strong>措施1:SPI信号优化(效果:-8dB)</strong>

  • SCK串联22Ω电阻,减缓边沿速率(tr从2ns延长至5ns)
    MOSI/MISO各串联22Ω电阻
    SPI排针添加RC端接:100Ω + 47pF到GND(可选,牺牲速度换EMC)
    SCK与MOSI间距从0.2mm增至0.5mm,中间布地线

<strong>措施2:晶振区域屏蔽(效果:-5dB)</strong>

  • 晶振下方GND平面完整,无其他信号穿越
    晶振外壳接地(金属壳HC-49S)
    添加π型滤波:3.3V → 铁氧体磁珠(600Ω@100MHz)→ 局部3V3_ANalog
    晶振走线包地:两侧各一条GND走线,间距0.2mm,每5mm打过孔

<strong>措施3:电源输入滤波(效果:-3dB)</strong>

  • USB 5V输入添加共模电感(ACM2012-900-2P,90Ω@100MHz)
    5V与3.3V之间添加铁氧体磁珠(MMZ2012R601,600Ω@100MHz)
    板边添加屏蔽罩卡扣位,必要时加金属罩

<strong>措施4:I/O端口滤波(效果:-4dB)</strong>

  • 所有排针GPIO串联100Ω电阻 + 47pF到GND(RC滤波,截止频率33MHz)
    保留USART1接口不加滤波(需通信),但缩短走线至2cm以内
    LED驱动线串联470Ω已有滤波作用,无需额外处理

[i]4. 整改后复测结果[/h]

  • 全频段包络低于Class B限线3dB以上
    48MHz峰值消失,144MHz峰值降至噪声底
    总整改成本:增加8个电阻、4个电容、1个磁珠,BOM成本增加0.8元

六、关键电路Layout实例详解


[i]1. SPI Flash区域(W25Q128,SOIC-8)[/h]

  • 摆放:靠近MCU右侧,NSS→PA4、SCK→PA5、MISO→PA6、MOSI→PA7
    扇出:SOIC-8焊盘直接表层走线,无需过孔
    SCK走线:顶层,0.28mm宽,包地处理,长度15mm
    MOSI/MISO:与SCK间距0.5mm,长度匹配误差<2mm
    去耦:VCC引脚(Pin8)100nF电容,距离<3mm

[i]2. USB转串口区域(CH340E,MSOP-10)[/h]

  • 摆放:板边靠近Type-C接口,D+/D-差分走线最短
    差分对:从CH340E Pin4/5到Type-C CC脚,长度25mm,等长误差<0.5mm
    阻抗:表层微带线,0.2mm宽+0.15mm间距,90Ω
    ESD保护:USBLC6-2SC6靠近Type-C接口,走线先过ESD再到CH340E
    退耦:Pin1(VCC)10μF+100nF并联,Pin3(V3)0.1μF退耦电容

[i]3. CAN收发器区域(TJA1050,SOIC-8,可选扩展)[/h]

  • 摆放:板边独立区域,与数字电路隔离
    终端电阻:120Ω,位于CANH/CANL末端,靠近连接器
    共模电感:可选,用于抑制共模噪声
    隔离:数字地(GND)与CAN地(CGND)通过0Ω电阻单点连接,或直接用磁珠

七、仿真与实测数据对比


[i]1. SPI眼图对比[/h]

  • 条件:SCK 8MHz,示波器带宽200MHz,采样率1GSa/s
    两层板:眼高1.8V,抖动±15ns,眼图闭合风险
    四层板(整改前):眼高2.4V,抖动±8ns,边缘振铃
    四层板(整改后):眼高2.9V,抖动±3ns,眼图张开良好

[i]2. 电源噪声对比[/h]

  • 测试点:MCU VDD_1引脚,示波器AC耦合,20MHz带宽限制
    两层板:纹波120mVpp,含多个高频尖峰
    四层板(无去耦优化):纹波45mVpp
    四层板(完整去耦矩阵):纹波12mVpp,满足±3%要求(3.3V±0.1V)

[i]3. 辐射发射对比(近场探头)[/h]

  • 测试距离:探头距板面10mm
    两层板@48MHz:-35dBm
    四层板整改前@48MHz:-42dBm
    四层板整改后@48MHz:-58dBm(低于噪声底)

八、设计检查清单(Checklist)


[i]1. 原理图检查


  • 电源引脚全部连接,无遗漏VDD/VSS
    晶振负载电容计算正确,规格书CL匹配
    复位RC参数满足tRST>100μs(STM32要求)
    BOOT0/BOOT1配置符合下载方式
    所有接口ESD保护器件选型正确

2. PCB Layout检查

  • 阻抗线宽已按板厂工艺计算并标注
    差分对等长误差<5%(高速信号<2%)
    晶振下方无走线,地层完整
    去耦电容距离电源引脚<5mm
    锐角走线已全部改为45°或圆弧
    丝印不覆盖焊盘,字符高度≥0.8mm

3. 生产文件检查

  • Gerber文件用CAM350打开,无报错
    钻孔文件孔径与封装一致,无重叠孔
    BOM中所有物料有明确品牌/型号,无NRND(不推荐用于新设计)
    坐标文件与装配图方向一致

九、低成本优化:两层板的极限操作


如果成本极度敏感,必须两层板,以下技巧可缓解问题:

  • 大面积铺铜:顶层和底层全部铺GND铜,通过大量过孔互联
    跳线最小化:底层只走GND,所有信号走顶层,避免分割地平面
    星型电源:3.3V从AMS1117放射状引出,避免菊花链
    关键信号包地:SPI SCK两侧各一条GND走线,每10mm打过孔
    磁珠隔离:数字电源与模拟电源用磁珠分开,单点接地

两层板做USB 480Mbps或SPI 50MHz是"挑战物理极限",建议仅用于低速场景(SPI<10MHz、USART<115200bps)。

十、开源与迭代建议



  • 版本管理:V1.0两层板验证功能 → V1.1四层板优化SI/PI → V1.2添加EMC整改
    开源平台:立创EDA广场、GitHub、OSHWHub
    测试报告:记录每次改版的眼图、纹波、辐射数据,形成知识库
    社区反馈:收集用户在实际环境中的干扰案例,持续优化

结语


信号完整性和EMC不是"玄学",而是可量化、可仿真、可整改的工程问题。STM32F103虽然是一颗"慢速"MCU(72MHz),但其谐波和外围高速接口(USB、SPI)仍需要认真对待。
记住三个核心原则:完整的参考地平面、短而直的电源回路、受控的信号边沿速率。掌握这三点,你已经超越了80%的硬件工程师。

友情链接
立创四层板工艺参数
Keysight频谱分析仪应用指南