像“我的接口只有 9600 波特率,I2C 只有 100kHz,继电器控制信号可能几十赫兹,为什么还要考虑 EMC?”——这是西电 PCB 设计指南系列直播里,评论区出现频率很高的一类问题。它的潜台词是:EMC 不是高频电路才需要考虑的事情吗?
这个直觉不完全是错的,但漏掉了关键一环:低频系统里同样存在大量瞬态变化,而 EMC 关心的从来不是“信号平均翻转多快”,而是“每个翻转边沿里包含多高的频率分量”。在实际 EMI 预测试中,不少低速控制板暴露出的超标频点反而集中在 30MHz 到 100MHz 以上,而不是在信号基频附近。这个反直觉现象,正是本文要展开的核心。
这篇文章会从几个角度把问题讲透:
- 为什么标称频率很低的走线,频谱上限却可能很高;
- 方波谐波、上升沿、环路面积和共模电流分别扮演什么角色;
- 低速系统在实际 PCB 布局布线中应该怎么做,才能真正降低 EMC 风险。
如果你正在做单片机系统、传感器采集板、控制板、电源板,或者只是刚开始系统学习 PCB 设计,这篇文章值得收藏后细读。
1. 先把问题重新定义:EMC 看到的不是波特率
很多工程师把“信号频率低”理解成“这个信号的频谱能量低”。对真正的正弦波信号来说,这个判断基本成立;但数字电路里的所谓低频信号,几乎都不是理想正弦波,而是一串带陡峭边沿的方波或脉冲。
一串 10kHz 的 PWM 脉冲,重复频率只有 10kHz,如果只看基波,它的波长有 30km,任何 PCB 走线都不太可能成为“天线”。但如果这个 PWM 由一颗 GPIO 推挽输出直接驱动,上升沿只有 5ns,那么信号的频谱能量就会向上延伸到几十 MHz,甚至上百 MHz。此时一根十几厘米的走线、一条外部线缆,或者功率回路中的一小段铜皮,都可能变成有效辐射结构。
所以要讨论“低频走线要不要考虑 EMC”,第一件事是修正提问方式。
更合适的提问是:
- 这个“低频信号”是否真的是缓慢变化的模拟电平?
- 还是说,它只是重复频率低,但每次电平翻转都很快的数字信号?
- 如果是数字信号,它的上升沿 / 下降沿是多少?
- 走线长度与这个上升沿对应的波长相比,是“电短”还是“电长”?
沿着这个思路往下分析,才会理解为什么很多低频系统在 EMC 测试中翻车,以及为什么有些工程师即使知道“要加滤波”“要走短走粗”,仍然找不到问题根源。
1.1 EMC 三要素:不要只盯着“发射源”
EMC 问题并不是只有“对外辐射”这一个维度。标准意义上的电磁兼容包含两大部分:
- EMI(电磁干扰):设备对外产生干扰,影响其他设备;
- EMS(电磁抗扰度):设备抵抗外部干扰,保证自身正常工作。
一个低速信号网络可能既不是强发射源,但也有可能在 EMS 测试中出问题。原因是它常常是高阻抗输入,很容易接收外部噪声。比如一根按键扫描线、一根复位线,哪怕只是几十 Hz 的扫描频率,也可能因为布线过长或滤波不足,把外部静电、射频干扰直接引入芯片内部,导致复位、误触发或者模拟采样跳变。
所以,“低频走线要不要考虑 EMC”的答案是:不仅要考虑,而且往往需要从 EMI 和 EMS 两个方向分别检查。把问题简单归结为“频率低所以没事”,是很多初级设计踩坑的开始。
1.2 两个容易混淆的概念:信号重复频率 vs 频谱上限
这里需要区分两个“频率”:
| 概念 | 含义 | 举例 |
|---|---|---|
| 信号重复频率 | 波形每秒重复的次数,通常叫基频 | I2C 时钟 100kHz、PWM 10kHz、UART 波特率 9600 |
| 频谱有效上限 | 信号能量在频域上延伸到多高的频率 | 由上升沿 / 下降沿决定,可能达到几十 MHz 甚至更高 |
数字系统的输出数据率只是决定了信号“多长时间变化一次”,而真正决定 EMC 表现的是“每次变化需要多长时间完成”。
有一个非常经典的工程近似:
BW ≈ 0.35 / tr
其中 tr 表示数字信号从 10% 到 90% 的上升时间,BW 是等效信号带宽。
这组公式对电路设计者意味着什么?看一组数据:
- 若上升沿 tr = 100ns,则带宽只有 3.5MHz;
- 若上升沿 tr = 10ns,则带宽约 35MHz;
- 若上升沿 tr = 5ns,则带宽达到 70MHz;
- 若上升沿 tr = 1ns,则带宽已经到 350MHz。
很多 MCU 的普通 GPIO 在推挽输出模式下,上升沿可以做到几 ns 到十几 ns。这就意味着,哪怕这个 GPIO 上跑的只是按键扫描、LED 指示灯、继电器控制这类“看着特别低速”的信号,它本身依然可能在几十 MHz 甚至更高频段产生能量。
到这一步,再去理解“为什么低速走线也要考虑 EMC”,已经有了第一层答案:不是因为信号速率高,而是因为电平翻转瞬间太快。
2. 数字信号的频谱:为什么谐波不因为基频低而消失
从频域看,一个周期方波可以展开成基波和一系列谐波。对于占空比接近 50% 的方波,谐波主要分布在奇次谐波上。基频是 100kHz,方波依然会在 300kHz、500kHz、700kHz……这些频点出现分量。
很多人觉得“高次谐波幅度会越来越小,不至于影响 EMC”。这个想法需要修正。
在理想方波中,第 n 次谐波幅度按 1/n 的速度衰减。也就是说,即使到了第 1001 次谐波,也就是 100.1MHz 附近,理论上仍然存在信号分量。如果只看基频,100MHz 谐波的幅度已经很小;但如果一段线缆刚刚好在某个频点形成谐振,或者测试标准非常严格,这些分量就不能忽略。
真实方波并不是理想方波,上升沿的存在使高频段的频谱额外衰减。梯形波的频谱包络大致是这样的规律:
- 第一个转折点由脉冲宽度决定;
- 第二个转折点由上升时间决定,高于该频率后,频谱以更快的速率滚降。
所以tr 越小,高频分量滚降得越晚,高频能量越丰富。这才是数字信号 EMC 分析的真正起点。
一个更反直觉的推论是:如果两个系统分别跑 10kHz 和 1MHz,但它们的输出驱动器上升沿相同,那么二者频谱上限其实在同一量级。低频系统并不会因为“重复频率低”就在高频段自动变得干净。真正决定高频段能量的是驱动器的边沿速度,而不是数据率。
这就是为什么在 PCB 设计里,不能只看接口名称就判断哪根线是“高速线”哪根线是“低速线”。I2C、UART、GPIO 完全可能由快速边沿的 CMOS 驱动器输出,产生与 SPI 或者并行总线类似的高频分量。
3. 环路面积与共模电流:低频走线变成天线的两条路径
仅仅说明“数字信号有高频谐波”,还不能完全解释低频走线的问题。还需要回答:这些高频分量如何从一根走线上真正辐射出去?天线理论里,一个结构能否有效辐射,取决于电尺寸、激励方式和回路形式。对 PCB 上的走线来说,有两种常见的辐射机制最容易出现在“低频信号”上。
3.1 差模辐射:瞬态电流环路
差模辐射由信号电流和回流电流构成的环路产生。环路面积越大,辐射效率越高;环路电流的变化率越大,辐射强度也越大。
低速系统很容易犯一个错误:因为觉得信号频率低,所以对回流路径不太讲究。比如一根控制信号从板的一端走到另一端,地线却从另一条路径绕了一大圈回来。当驱动器每次翻转时,瞬态回流电流并不沿着直流电阻最小的路径走,而是沿着高频阻抗最低、也就是环路电感最小的路径走。
如果这个“最小电感路径”的回路面积很大,它就是一截效率不低的天线。即使控制信号的重复频率只有几十 kHz,每次翻转瞬间产生的 di/dt 仍然足以激励这个环路。
所以低频设计中真正要检查的不是“这根线多长”,而是“从驱动端到负载端、再从负载端回到驱动端的回路面积有多大”。回路面积大,信号频率再低也可能有问题;回路面积小且紧贴参考平面,即便信号频率较高,辐射风险也会明显下降。
3.2 共模辐射:低速线更容易成为“单极天线”
比差模辐射更隐蔽的是共模辐射。
差模辐射需要信号电流与回流电流构成一个闭合环路;共模辐射则来自走线相对参考地之间出现的高频电压。这种情况下,走线本身加上与其相连的外部线缆,可能整体表现为一根单极天线或偶极天线。
低速系统经常和外部接口打交道:按键线束、LED 面板线、传感器线、通讯线。这些线缆一端连接在 PCB 上,另一端延伸到机壳或外部。假如 PCB 内部的信号参考地不够干净,或者信号在连接器区域附近没有做好滤波,共模噪声电压就会被直接加载到线缆上。结果是一条只传输几 kHz 信号的线束,在 30MHz 到 300MHz 频段变成有效发射天线。
这种问题用“频率低”判断不出来,因为激励它的不是信号基频,而是整个系统里各种开关瞬态形成的共模噪声。低频电路板的电源、地平面噪声往往比高速电路更少被认真处理,因此共模辐射问题反而常见。
3.3 EMS 方向:低速线是优秀的“接收天线”
除了对外发射,低速走线作为接收天线同样值得注意。
一根低速数字输入线如果直接连到板外,它的带宽可能很低,但它所在的位置往往暴露在外。外部射频场、静电放电、电机火花、继电器触点抖动,都可能在长线上感应出电压。如果输入端的 RC 滤波截止频率设置不当,或者 TVS 防护器件离连接器太远,感应噪声就会沿着走线进入芯片内部,造成不可预测的逻辑错误。
从抗扰度角度看,“信号频率低”反而给了设计者更多处理空间:可以放心串联电阻、增加电容、使用磁珠或者共模电感,因为这些手段不会明显影响信号质量。这是低速系统最大的优势,但前提是你意识到了这个网络需要防护。
4. 三类实际系统中常见的“低频风险信号”
把理论落到实际项目中,以下几类信号最容易被人忽视,但恰恰经常成为 EMC 和 EMS 的薄弱点。
4.1 I2C、UART、SPI 之类的串行低速接口
很多工程师默认“I2C 是慢速协议”,所以在布局布线时不加约束。严格说,I2C 标准模式确实是 100kHz,快速模式也只有 400kHz,但它的 EMC 风险不取决于协议规定的最大速率,而取决于驱动器上升沿和外部上拉电阻。
I2C 是开漏结构,上升沿由外部上拉电阻和总线寄生电容共同决定。若上拉电阻较小、总线负载较轻,上升沿可能达到几十 ns 到一百 ns 量级,对应带宽就有几 MHz 到十几 MHz。加上 I2C 走线如果很长,或者中途跨过了分割地,就容易通过地电位差形成噪声耦合。
UART 同样如此。MCU 的 UART TX 引脚通常使用推挽输出,边沿可能非常快。系统名义上只有 115200 波特率,但 TX 走线的频谱能量并不是由 115200 决定的。实际检查时,建议直接查看 MCU 数据手册中的输出上升时间参数,而不是用波特率去估算。
4.2 按键、LED、开关量等 GPIO 信号
按键扫描、拨码开关、LED 指示灯这些信号,可能是整块板子上“名义频率最低”的。它们不需要考虑信号速率,很多人因此直接把它们拉得很长,甚至放在板边、跨越大半个 PCB。
这类信号带来的问题通常有两类:
- 对外的辐射或耦合:GPIO 推挽输出边沿很快,信号线如果贴着板边走到连接器,就可能把噪声带出;
- 对内的抗扰:按键或开关信号经常来自机箱面板,线束较长,静电、电机火花、射频干扰都可能通过它进入主板。
处理方式并不复杂,但很有效:靠近连接器放置 TVS 或 RC 滤波;驱动端可以串电阻减缓边沿;走线尽量安排在靠近地平面的内层或者表层短距离走线。这些措施在低速信号上几乎不会造成功能损失,却能明显提高整机 EMC 表现。
4.3 PWM、继电器、MOSFET 驱动等功率控制信号
功率控制信号的重复频率往往很低,几 kHz 到几十 kHz 很常见。但这类信号连接的负载和驱动器,恰恰是整个系统中 di/dt 和 dv/dt 最剧烈的地方。
以 Buck 电路为例,开关节点电压在纳秒级时间内完成高-低切换,即使开关频率只有几百 kHz,开关节点上也有非常丰富的高频分量。与此类似,MOSFET 栅极驱动信号在电平翻转瞬间需要较大的瞬态充放电电流,驱动回路如果面积过大,会产生明显的差模辐射。
很多工程师把重点放在“PWM 频率是多少,要不要做滤波”上,忽略了真正的问题:功率开关回路的瞬态环路面积和栅极驱动回路的瞬态环路面积。处理这类问题时,比增加滤波更重要的是先优化功率回路布局,把高频电流限制在小环路内,再做 EMI 滤波。
5. 用公式快速估算:把“低频走线”翻译成“带宽”
直接给你一个可以落地的判断方法,不再凭感觉判断。
第一步:找到数字信号驱动器的上升时间。如果是 MCU GPIO,去查数据手册中电气特性表里的 rise time / fall time;如果驱动芯片没有给出,可以用示波器实测最陡边沿。
第二步:用 BW ≈ 0.35 / tr 估算信号有效带宽。
第三步:根据带宽计算对应波长,再对比走线长度和外部线缆长度。
可以写一个简单的 Python 脚本,把这些计算固化下来,以后画板前直接套用。
# -*- coding: utf-8 -*- # signal_bw.py # 根据数字信号上升沿估算频谱能量对应的带宽与电长度 def estimate_bw(tr_ns): """ 根据 10%-90% 上升时间(单位 ns)估算信号有效带宽(BW ≈ 0.35 / tr)。 返回单位: Hz """ tr_s = tr_ns * 1e-9 bw_hz = 0.35 / tr_s return bw_hz def critical_length(bw_hz, fraction=20): """ 粗略判断走线在超过多长后会呈现明显天线效应。 默认按 fraction=20,即波长的 1/20 作为经验临界值。 返回单位: m """ c = 3e8 wavelength = c / bw_hz return wavelength / fraction if __name__ == "__main__": # 注意:这里的上升沿取值只是用于演示量级,不代表具体芯片型号。 cases = [ ("慢边沿数字信号", 2000), # 2us 上升沿 ("普通推挽 GPIO", 20), # 20ns 上升沿 ("快速 CMOS 输出", 5), # 5ns 上升沿 ("极高速时钟/差分", 1), # 1ns 上升沿 ] for name, tr_ns in cases: bw = estimate_bw(tr_ns) cl = critical_length(bw) print(f"{name:16s} tr={tr_ns:6.1f}ns BW≈{bw/1e6:8.1f}MHz λ/20≈{cl*1000:8.1f}mm")运行这段代码,你会得到类似这样的结果:
慢边沿数字信号 tr=2000.0ns BW≈0.2MHz λ/20≈85714.3mm 普通推挽 GPIO tr= 20.0ns BW≈17.5MHz λ/20≈ 857.1mm 快速 CMOS 输出 tr= 5.0ns BW≈70.0MHz λ/20≈ 214.3mm 极高速时钟/差分 tr= 1.0ns BW≈350.0MHz λ/20≈ 42.9mm这个结果透露了两个关键信息:
- 对于慢边沿数字信号,走线长度要超过 85m 才可能成为有效天线,所以板内走线基本不用管;
- 对于 5ns 甚至 1ns 边沿的信号,临界长度只有几十到两百多毫米。一条十几 cm 的控制线或复位线,已经逐渐逼近“电长”区域。
看起来不够直观?换个角度看:产品