去年有段时间,我们一款工业数据采集模块在预测试阶段就翻了车——辐射发射曲线在144MHz和216MHz两个频点上直接顶穿Class A限值线,最大值超了将近6个dB。当时离正式送测只剩不到十天,整改窗口非常紧张。更麻烦的是,这个模块的原理图跟上一代产品几乎一样,只是把DC-DC拓扑换成了同步整流方案,引入了更高的开关频率和更陡的开关沿。这块板子逼着我把EMI滤波电路、EMI电路设计和PCB布局怎么过EMI这几门功课从头又补了一遍,也踩了不少坑。
这篇文章把整个超标案例从现象、定位、根因到整改方案的完整链路写出来,给同样在跟辐射发射死磕的兄弟做个参考。整个排查过程没有用太高端的设备,就是频谱仪加近场探头,配合软件开关法一层层剥,最终定位到开关电源振铃和时钟走线回流两个核心问题上。内容偏实战,纯理论党可以跳过部分细节,但如果你正好被辐射发射整得焦头烂额,顺着这条链路走一遍,大概率能找到答案。
1. 案发现场:一条贴着限值线走的辐射曲线
1.1 测试条件与超标频点
被测产品是一块24V供电的工业数据采集模块,板载一颗STM32F103做主控,系统时钟由8MHz晶振倍频到72MHz,板上还有一路500kHz开关频率的同步整流降压电路,输出5V给传感器供电。测试在标准半电波暗室进行,按EN 55032 Class A限值,10米测试距离,天线从30MHz扫到1GHz。
第一轮测试结果不太好看,三个区域的辐射能量明显抬头:
| 频段 | 超标频点 | 实测峰值 | 限值 | 超标量 | 频谱特征 |
|---|---|---|---|---|---|
| 120-230MHz | 144MHz | 46.2dBµV/m | 40dBµV/m | +6.2dB | 窄带尖峰,间隔规则 |
| 200-260MHz | 216MHz | 43.5dBµV/m | 40dBµV/m | +3.5dB | 窄带尖峰,与144MHz同源 |
| 80-120MHz | 95-105MHz | 44.8dBµV/m | 40dBµV/m | +4.8dB | 宽带包络,毛刺状 |
窄带尖峰之间间隔正好72MHz,跟MCU系统时钟完全对得上,第一时间怀疑时钟谐波通过某种路径辐射出来。而80-120MHz那一片宽带噪底,机器一开就有、关掉供电就消失,指向开关电源的开关节点。两个嫌疑对象都不算冷门,但真正麻烦的是它们叠加在一起,导致频谱仪上看不清谁贡献了多少能量。
1.2 频谱特征给出的第一波线索
先看窄带尖峰。144MHz是72MHz的二次谐波,216MHz是三次谐波,谐波能量呈现奇偶次交替衰减的趋势,说明时钟信号本身存在一定的占空比不对称,同时驱动端的上升沿/下降沿时间很接近。把这一条记下来:如果后面做整改,首先要考虑的是时钟路径上的信号完整性问题,而不急着去动晶振的频率。
宽带包络那条线索更有意思。95-105MHz的噪声抬升,中心频率大约在100MHz左右,包络宽度超过20MHz,这个特征非常像开关电源的开关节点振铃。同步整流降压芯片的开关沿通常在5-10ns级别,这个dv/dt本身就足够大,只要回路寄生参数形成谐振,振铃频率落在100MHz附近是相当常见的。后面用近场探头验证时,果然在Buck电感附近抓到了清晰的振铃波形。
这里有个经验:窄带尖峰找时钟,宽带包络找开关电源,频谱特征基本能给你指个大概方向。别拿到曲线就急着瞎加电容,先分清窄带和宽带,再逐项排查,效率会高很多。
2. 排查链路:从整机到板级再到元件的三层定位
2.1 第一步:软件轮询法快速锁定噪声来源
辐射发射的排查最怕的就是不知道噪声从哪个模块出来。我们的做法是先做软件轮询——在测试状态下,通过串口命令逐个关停板上的功能模块:关传感器供电、关RS-485收发器、关USB、降MCU主频,每关一个模块就盯着频谱仪看目标频点的能量变化。
这一步花了不到半小时就拿到了核心结论:把Buck电路关掉后,95-105MHz的宽带包络立刻消失,但144MHz和216MHz的窄带尖峰纹丝不动;把MCU系统时钟从72MHz降到8MHz后,两个窄带尖峰直接掉到限值线以下。这说明宽带噪声和窄带噪声是两个独立的源,整改时必须分别处理,不能指望一个滤波器通吃。
软件轮询法的前提是各模块可以独立关断。如果产品没有预留这种控制接口,也可以用拔排线、断开跳线的方式替代,但效率会低一些。建议在原理图设计阶段就给关键电路留好独立供电或时钟控制引脚,这算是低成本高回报的设计余量。
2.2 第二步:近场探头扫描找出热点区域
源定位靠频谱仪加近场探头。用的是10MHz到3GHz频谱仪,配合自制的磁场探头(直径约2cm的屏蔽环),放在被测板不同区域上方约2cm处扫描。磁探头对电流回路敏感,电场探头对高阻抗点敏感,先用磁探头扫,能快速找到电流集中的地方。
扫出来的结果很有意思:在Buck开关管、电感和输入电容围成的功率回路区域,95-105MHz的宽带能量非常强,探头一靠近电感引脚就饱和;在MCU晶振引脚和时钟走线末端,144MHz和216MHz的窄带能量最强。另外还有个意外发现——USB连接器外壳和RS-485端子附近也能扫到明显的144MHz能量,但量级比时钟走线区域弱不少。
这个分布告诉我们:宽带噪声的主人是Buck功率回路,窄带噪声的主人是时钟路径,而接口连接器上的能量更像是被耦合过去的次级辐射。后面处理顺序就很清晰了:先治源头(时钟走线和功率回路),再处理耦合路径(接口和线缆)。
2.3 第三步:耦合路径判断——板内辐射还是线缆辐射
近场探头只能定位板内热点,但辐射发射超标的能量最终是从天线出去的,这里的天线可能是板子本身,也可能是外接线缆。判断方法很土但很有效:分别在不接外部线缆、接短USB线、接长RS-485线三种配置下各测一遍目标频点。
不接任何线缆时,144MHz实测只比接长线缆时低大约2dB,说明板内辐射本身就超标了,线缆只是叠加了一部分贡献;95-105MHz宽带噪声则相反,不接线缆时下降超过6dB,说明宽带噪声主要靠线缆辐射出去。这个区分至关重要——板内辐射要靠布局布线整改解决,线缆辐射要靠共模扼流圈和接口滤波解决,方向搞反了基本白干。
3. 根因拆解:振铃、回路面积与共模电流
3.1 开关节点振铃的频率估算
宽带噪声的根因是Buck开关节点的高频振铃。同步整流拓扑中,高边MOSFET关断瞬间,电感电流会迫使低边MOSFET的体二极管或同步管导通,此时开关节点(SW节点)与地之间会形成一个由低边管输出电容Coss、功率回路寄生电感Lloop构成的LC谐振回路。振铃频率的估算公式是:
f_ring = 1 / (2π × √(Lloop × Coss))
拿我们这个案例来算:低边管的Coss大约是300pF,功率回路的寄生电感按10nH估算(这取决于输入电容到MOSFET的距离和走线宽度),算出来f_ring ≈ 1 / (2π × √(10×10⁻⁹ × 300×10⁻¹²)) ≈ 92MHz。实测包络中心在100MHz附近,跟理论值差不太多,考虑到寄生电感估算的偏差,这个吻合度已经足够说明问题。
振铃的危害不只是辐射:高频振铃叠加在开关波形上,还会增加开关损耗、加剧器件电压应力。所以抑制振铃不仅是EMC整改需求,也是电路可靠性的需求。
3.2 环路天线效应与回路面积
功率回路的天线效应取决于回路面积。Buck电路的高频电流路径是:输入电容 → 高边管 → SW节点 → 电感 → 输出电容 → 地 → 回到输入电容。这个回路在PCB上的物理面积越大,等效天线效率越高。工程上有个粗糙的估算:频率100MHz对应的波长是3米,四分之一波长是0.75米,一般PCB回路尺寸远小于这个值,属于电小天线,辐射效率正比于回路面积的平方。
我们板子的问题是输入电容离高边管的电源引脚太远,中间绕了大半圈,回路面积比数据手册参考布局大了将近三倍。这个不能靠事后加电容完全弥补,必须重新布局走线。
环路天线还有一个容易被忽略的变体:散热焊盘和过孔形成的垂直回路。大面积散热铜皮加上密集过孔,会把高频电流引导到地层深处,形成额外回路,这也是为什么开关电源的参考布局从来不会在SW节点正下方铺大铜皮。
3.3 线缆共模辐射的形成机制
线缆上的宽带噪声属于共模电流辐射。开关节点的高dv/dt通过开关管与散热片/地之间的寄生电容,或者通过电感与屏蔽层之间的寄生电容,把位移电流灌到内部地(信号地)上。当内部地通过接口线缆与外部设备连接时,这个共模电流沿线缆流动,线缆本身就成了一根天线。
共模电流的幅值可以用一个简单的模型估算:I_cm ≈ C_parasitic × dV/dt。开关节点电压摆幅是24V,开关沿时间5ns,dv/dt大约是4.8×10⁹ V/s,如果对地寄生电容是5pF,共模电流就有将近24mA。这个量级在100MHz频段足以产生显著辐射。所以处理线缆辐射的要点是两个方向:一是降低dv/dt(加缓冲或放慢开关沿),二是提高共模路径阻抗(加共模扼流圈)。
4. 滤波电路实战:从拓扑到落地参数的EMI滤波器设计
4.1 滤波拓扑与前级电路的关系
系统是24V直流供电,没有AC-DC前级,所以不需要考虑X电容和放电电阻那些交流滤波器的东西,但滤波拓扑的基本架构是一样的。直流输入端我们最终用了两级:第一级是共模扼流圈加差模π滤波,第二级是直接贴近DC-DC输入引脚的陶瓷电容组。
共模扼流圈负责拦线缆上的共模电流。它的原理是两个绕组绕在同一个磁环上,差模电流产生的磁通在磁环内相互抵消,对差模相当于只有绕组电阻和漏感;共模电流两个绕组方向相同,磁通叠加,表现出很大的电感量。这个特性决定了它特别适合处理线缆共模辐射。
第一级的π滤波结构是:输入电容 → 差模电感 → 输出电容。差模电感用10µH的功率电感,两只陶瓷电容都用0.47µF/50V的X7R,前后各一只。这套组合对30MHz以上的高频噪声有很好的抑制,但π滤波有个坑:如果输入输出电容和电感之间的引线太长,寄生电感会把高频滤波性能吃掉大半,所以三个元件必须紧挨着摆,走线越短越好。
4.2 元器件选型与真实寄生参数
选滤波元件时,光看标称值没用,得看寄生参数。用阻抗分析仪实测了几个候选电容:
- 0.47µF/50V X7R陶瓷电容(1206封装):自谐振频率约12MHz,100MHz时ESL约1.5nH,阻抗约1Ω
- 2.2nF C0G陶瓷电容(0402封装):自谐振频率约180MHz,100MHz时呈现容性,阻抗约700Ω
- 共模扼流圈2×1.2mH(额定3A):100MHz时共模阻抗约2kΩ,漏感约4µH
这里的关键是:大容量的X7R在100MHz附近早就过了自谐振点,已经呈感性了,指望它滤除100MHz的辐射噪声是做不到的。所以实际布局中,DC-DC输入端除了0.47µF的大电容,一定要并一只0402或0603的小容量C0G电容(2.2nF到10nF之间),让它专门对付高频段。高容量电容滤低频纹波,小容量电容滤高频噪声,两者并联互补,这是最常见的滤波电容组合策略。
共模扼流圈的选型主要看额定电流和共模阻抗。额定电流要满足系统最大输入电流并留50%以上裕量,否则磁芯饱和后电感量直线下跌。共模阻抗在目标频段(我们关心的是100MHz附近)越高越好,但也不能一味追求大电感,绕组匝数多了寄生电容也大,高频段反而失效。
4.3 滤波器布局的"一亩三分地"原则
滤波器的效果一半靠电路,一半靠布局。我把滤波器布局的原则总结为一句话:滤波器要守在自己的"一亩三分地"里,输入端的东西和输出端的东西不能越界混在一起。
具体到这块板子,整改时把输入端连接器、共模扼流圈、π滤波器、DC-DC输入电容画在一个明确的分界线内,这条线两侧的地平面做了局部隔离处理——滤波器的输入地(连接器侧)和输出地(DC-DC侧)通过一个窄桥连接,高频电流只能从滤波器的走线上流过,而不是直接抄近路从地平面溜过去。
如果滤波器前后级地平面完全连通,高频噪声会绕过滤波器直接耦合到输出端,滤波电路等于白装。这个道理跟水坝一个逻辑:水坝必须横跨河道才能挡住水流,如果旁边有条暗渠,水位再高的坝也没用。检查方法也很简单,拿万用表量一下前后地是不是通的,量得通不代表滤波有效,要看高频电流实际走的是哪条路。
5. PCB布局整改:让噪声在源头就散不掉
5.1 时钟路径:串阻、回流与过孔避让
时钟带来的144MHz和216MHz窄带辐射,根子在时钟走线的信号完整性和回流路径。原设计里,72MHz时钟从MCU出来走了一段约4cm的顶层走线,末端接一颗驱动芯片,走线下方地层被一条电源走线割裂,导致高频回流电流被迫绕行,形成一个大回流环。这个环在天线效应下就成了72MHz谐波的辐射源。
整改措施有三条:
- 在MCU时钟输出引脚串联一颗33Ω电阻,放在引脚附近。这个电阻配合走线寄生电容和接收端输入电容,等效于一个低通滤波器,可以适度展缓时钟边沿。代价是边沿变缓会增加时序裕量压力,72MHz下33Ω通常没有太大问题,但如果你跑的是100MHz以上的高速总线,阻值得重新算。
- 时钟走线下方保证完整的地平面,把原来割裂地层的电源走线改到其他层。回流电流走直线不打弯,环路面积大幅缩小。
- 时钟走线尽量减少过孔换层。过孔换层意味着回流电流也要跟着换层,如果换层附近没有回流地过孔,环路一下子就被拉大了。非换层不可时,在旁边0.1英寸内加一颗地过孔。
晶振部分也顺带处理了:把晶振尽量贴近MCU的OSC引脚,两个负载电容放晶振同一侧,晶振正下方铺地并加屏蔽过孔。这样处理后,晶振周边的近场能量明显下降。
5.2 功率回路:让高频电流走最短的直线
Buck电路布局整改的核心是缩短功率回路的物理路径。参考数据手册的推荐布局,把输入电容贴着高边管的VIN引脚和低边管的GND引脚放,中间没有任何绕行;SW节点到电感的走线刻意收窄,只保证载流能力,不过度铺铜。原因是SW节点是高dv/dt点,走线铜皮越大,对地寄生电容越大,越容易往外耦合能量。
这里有个反直觉的经验:好多人觉得功率走线越宽越好,但在SW节点这种高频开关节点上,宽走线带来的寄生电容反而帮了倒忙。正确的做法是SW节点到电感的连接用最短最短的走线,宽度按载流需求来,别多给;真正需要铺铜的是电感之后的那一大片输出铜皮,因为那里的电压基本稳定了。
功率回路整改的同时,在SW节点到地之间加了一组RC缓冲电路。取值方法很直接:先测振铃频率,再用公式Csnub ≈ Coss×(2到5倍)估出缓冲电容,然后根据开关节点阻抗取缓冲电阻。我们最终用了10Ω串470pF,实测振铃幅度降了将近一半,宽带包络的底噪也降了4-5dB。代价是缓冲电阻上会有额外损耗,对于2W以下的小功率应用基本可以忽略,大功率应用需要核算损耗温升。
5.3 叠层与接口处理:把"天线"变成"哑巴"
这块板子原来是两层板,整改时直接改成了四层:顶层信号、第二层完整地、第三层电源、底层信号。完整地的位置放在靠近顶层的地方,意义非常大——所有顶层走线的回流电流都有一个直接的、低阻抗的完整平面可用。对于多层板的层叠设计,我的建议是信号层下面紧挨着就是完整地平面,别在地和信号之间夹电源层,否则回流路径会被打断。
接口处理上,RS-485端子和USB连接器都加了共模扼流圈,位置紧贴连接器。连接器外壳的接地也做了优化:以前是单点接地,长一点的接地脚在端子内部穿过,形成一个小环;整改后改成多点接地,外壳直接大面积连接到机箱地,接地阻抗低了很多。
连接器和板内地之间还可以加Y电容(比如2.2nF),给共模电流一条就近回流到地的路径,避免它顺着线缆跑出去。不过Y电容的值不能随便加,超过4.7nF在50Hz工频下会产生漏电流,医疗和带触控屏类的产品对漏电流有严格要求,需要提前确认标准限制。
6. 复测结果、遗留问题与复盘心得
6.1 整改前后的数据对比
整改完成后重新进暗室复测,同一套配置、同一个测试程序,结果如下:
| 频点 | 整改前 | 整改后 | 余量 |
|---|---|---|---|
| 144MHz | 46.2dBµV/m | 34.1dBµV/m | 5.9dB |
| 216MHz | 43.5dBµV/m | 32.8dBµV/m | 7.2dB |
| 95-105MHz包络 | 44.8dBµV/m | 35.5dBµV/m | 4.5dB |
三个区域全部压到限值线以下,最低余量也有4.5dB,后续还能覆盖生产批次波动和环境温漂。更让我意外的是,时钟路径整改后,连带着把原本在USB接口上耦合到的144MHz能量也一起降掉了,说明源头治理比末端堵漏有效得多。
6.2 这套流程能复用到什么程度
这套排查流程——频谱特征识别、软件轮询分源、近场定位、耦合路径分离、根因计算、按源头整改——基本可以平移到几乎所有辐射发射超标的案例上。区别只在于具体对象:如果是数字电路为主的产品,重点查时钟总线和数据总线;如果是电源为主的产品,重点查开关节点和功率回路;如果是电机驱动类,重点查PWM驱动沿和换向噪声。方向不同,但方法论完全一致。
过程中花费的时间也值得记录:定位阶段大约一个下午,滤波器选型和焊装一天,PCB改板加打样用了五天,最后复测半天。总共两周不到,其中大部分时间花在改板上,真正分析和定位的时间很短。这也是为什么我一直强调:把排查方法练熟,比你多会一百个滤波电路的画法都有用。
6.3 几个容易走偏的误区
最后说几个我在这次整改和过往项目里反复踩过的坑,也算给后面的人提个醒。
第一个误区是迷信"加电容"。电容不是越多越好,寄生参数决定了每颗电容只在特定频段有效,盲目并联大电容只会增加成本和反复试错的时间。正确做法是先测噪音频段,再选对应频段有效的电容类型和封装。
第二个误区是忽视共模路径。很多整改只盯着差模滤波,把所有精力都放在加大电感上,结果共模电流照样走线缆辐射出去。判断差模还是共模占主导,就看关掉所有外部线缆后噪声变化大不大,变化大就说明共模为主,优先上共模扼流圈。
第三个误区是更改设计时只改电路不改布局。同样的滤波电路,摆在不同位置效果能差一倍以上。滤波器到噪声源之间的走线如果太长,这段走线本身就是一根接收天线,把你辛辛苦苦滤掉的部分又耦合了回来。所以滤波电路必须紧贴噪声源或接口,中间不要有冗余走线。
第四个误区最隐蔽:只做整改不复盘。这次案例中我们后来把SW节点振铃频率、滤波参数、布局约束全部沉淀到设计检查清单里,下一版原理图评审时直接对照排查。EMC这东西,靠的是每一代产品都把上一代的教训吸收进去,而不是每次等到暗室里超了才临时抱佛脚。把这条链路走通之后,后续几款产品再做预测试,基本都一次通过,省下来的暗室租金和时间成本,远比当初那几片整改样板贵得多。