首页 / 资讯中心 / 文章详情

STM32内置时钟辐射发射超标?近场定位与源端抑制实战

STM32内置时钟辐射发射超标?近场定位与源端抑制实战 ★ FEATURED ARTICLE
1. 从一次辐射发射测试超标说起去年秋天我接手了一个挺典型的案子。一块基于STM32的工业控制板功能验证全部通过EMC预测试的时候传导发射勉强压线过了但辐射发射RE在30MHz到230MHz这个频段直接爆表最高点超了限值线将近8dB。客户那边的项目节点卡得很死留给整改的时间只有一周。这块板子的特殊之处在于它没有用外部晶振而是直接用了STM32芯片内置的HSI时钟。当初选这个方案的理由很实在省两颗电容、省一个晶振、省PCB面积BOM成本能降几毛钱而且产品对时钟精度要求不高内置RC振荡器完全够用。但问题恰恰出在这里——内置时钟的辐射特性跟外部晶振完全是两码事常规的滤波手段在它面前基本失效。我试过在电源脚上加磁珠、加π型滤波试过在晶振引脚虽然没用外部晶振但相关引脚还在上并电容甚至把整板用铜箔包起来做屏蔽效果都不理想。后来用近场探头一点点扫才发现辐射源根本不在电源网络上而是内置时钟的谐波通过芯片内部的电源分配网络耦合到了IO口再通过IO口的走线像天线一样辐射出去。这个发现让我重新理解了“滤波失效”这四个字的含义。滤波电路设计得再好如果干扰源在滤波器后面那滤波器就是个摆设。芯片内置时钟的RE问题本质上是一个源端抑制的问题而不是路径滤波的问题。这篇文章就是把这个案子的完整破局过程拆开来讲。从辐射机理分析、近场定位方法、到最终的源端抑制方案每一步都有实测数据支撑。如果你手头也有用内置时钟的芯片不管是STM32、ESP32还是其他MCU正在被RE超标折磨那这篇内容应该能帮你少走不少弯路。2. 内置时钟为什么会让常规滤波手段失效2.1 内置RC振荡器的辐射机理跟外部晶振完全不同外部晶振的辐射模型相对简单。晶振本身是一个独立的器件它的辐射主要通过两条路径传播一是晶振引脚到芯片的走线这段走线如果处理不好会形成小天线二是晶振的电源引脚如果电源滤波不干净谐波会通过电源网络扩散。针对这两条路径常规的滤波手段——比如在晶振电源脚加RC滤波、在走线上串小电阻、包地处理——都能起到明显效果。但内置RC振荡器的情况完全不一样。以STM32的HSI为例这个振荡器是集成在芯片内部的它的输出直接送到芯片内部的PLL和时钟树根本不经过任何外部引脚。这意味着你没法在“源”和“负载”之间插入任何滤波器。更麻烦的是RC振荡器的工作电流是脉冲式的每次充放电都会在芯片内部的电源分配网络PDN上产生一个电流尖峰。这个尖峰包含丰富的高频谐波会通过PDN耦合到芯片内部的所有模块包括IO口的驱动电路。我实测过一块STM32F103的板子用近场探头贴着芯片表面扫在芯片正上方能测到很强的磁场辐射频率正好是HSI的基频8MHz及其各次谐波。而把同样的探头放到外部晶振方案的另一块板子上芯片正上方的辐射强度要低15dB以上。这个对比很直观地说明了问题内置时钟的辐射源在芯片内部你从外面够不着。2.2 滤波电路失效的根本原因干扰源在滤波器后面很多工程师遇到RE超标第一反应就是加滤波。电源线上加共模电感、加X电容Y电容信号线上加磁珠、加RC滤波。这些手段对付外部干扰源或者传导发射确实有效但对付内置时钟的RE问题往往收效甚微。原因可以用一个简单的类比来解释。假设你家水管漏水水从墙里面渗出来。你在墙外面刷防水涂料能解决问题吗短期可能有点效果但水压一上来该渗还是渗。正确的做法是找到墙里面的漏点从源头把水管修好。内置时钟的RE问题就是这堵墙里面的水管——干扰源在芯片内部你在芯片外面的电源线上加再多滤波干扰已经通过IO口辐射出去了滤波器根本拦不住。更准确地说滤波电路的有效性取决于它在干扰传播路径上的位置。如果干扰源在滤波器的输入端靠近芯片侧那滤波器对干扰的抑制能力非常有限。内置时钟的谐波通过PDN耦合到IO口驱动电路然后直接从IO引脚输出这个路径完全绕过了电源入口处的滤波器。所以你会看到一个很奇怪的现象电源线上的传导发射可能并不高但辐射发射却严重超标。2.3 哪些芯片和场景最容易踩这个坑根据我这几年经手的案子内置时钟导致RE超标的高发场景有这么几类。第一类是成本敏感的消费类产品比如小家电、玩具、LED驱动器。这些产品为了省成本几乎必然用内置时钟而且PCB通常是单面板或双面板没有完整的地平面IO口走线又长又乱辐射效率极高。第二类是IO口翻转频繁的应用比如LED显示屏、电机驱动、通信接口。IO口每次翻转都会在PDN上产生一个电流尖峰这个尖峰会激励内置时钟的谐波形成调制辐射。翻转频率越高辐射越强。第三类是芯片封装小、引脚少的型号。比如QFN封装的MCU芯片内部的PDN阻抗本身就比较高内置时钟的电流尖峰在上面产生的电压波动更大耦合到IO口的能量也更强。我整理了一个简单的对照表帮你快速判断自己的项目是不是高危风险因素低风险高风险时钟方案外部晶振内置RC振荡器PCB层数四层以上有完整地平面双层板地平面不完整IO口翻转频率低大部分时间静态高PWM或通信接口频繁翻转芯片封装LQFP引脚间距大QFN引脚密集产品外壳金属屏蔽壳塑料壳无屏蔽如果你的项目中了三条以上那RE测试大概率会出问题建议提前做近场扫描定位。3. 近场探头定位辐射源的标准操作流程3.1 准备工作你需要哪些工具近场扫描不需要昂贵的暗室设备一套基本的近场探头加频谱分析仪就能干活。我用的是Langer的RF-R 50-1和RF-B 3-2探头套装配一台RS的FPC频谱分析仪。如果预算有限国产的近场探头套装也能用关键是探头要能覆盖30MHz到1GHz这个频段。除了探头和频谱仪还需要几样辅助工具一台能稳定供电的直流电源最好带电流显示、一根高质量的SMA线缆、以及一个简易的测试台架。测试台架不用太复杂一块铜板做参考地把待测板放在铜板上方1cm左右的位置就行。注意近场扫描的结果受探头方向、距离、角度影响很大。每次移动探头时尽量保持探头与板面的距离和角度一致否则测出来的幅度变化可能只是操作误差不是真实的辐射分布。3.2 第一步全板粗扫找出热点区域先把频谱仪设置到RE测试超标的频段比如30MHz到230MHz。RBW设成100kHz扫描时间设成自动。然后把近场探头放在板子上方约5mm的高度从板子的一角开始按网格状慢慢移动。移动的时候盯着频谱仪的峰值保持功能记录每个位置的最大幅度。我一般会把板子分成1cm×1cm的网格每个网格停留3到5秒确保频谱仪的扫描能覆盖完整。粗扫的目的是找出辐射最强的几个区域不用太精确能定位到芯片附近还是连接器附近就行。这个案子里粗扫的结果很明确辐射最强的点就在MCU芯片正上方偏IO口一侧幅度比板子其他区域高12dB以上。这就排除了连接器辐射和电源线辐射的可能性把问题锁定在了芯片本身。3.3 第二步精细扫描区分电源辐射和IO辐射粗扫定位到芯片区域后需要进一步区分辐射是来自电源引脚还是IO引脚。方法很简单把探头分别靠近芯片的电源引脚和IO引脚对比幅度。如果电源引脚附近的辐射更强说明干扰主要通过电源网络传播可以在电源引脚上加滤波。如果IO引脚附近的辐射更强说明干扰是通过IO口驱动电路直接辐射的滤波手段基本无效必须从源端想办法。这个案子里IO引脚附近的辐射比电源引脚高了将近8dB。而且我注意到一个细节辐射最强的IO口正好是那个用来驱动LED的PWM输出脚。把PWM关掉后辐射立刻下降了6dB。这就实锤了——内置时钟的谐波通过PDN耦合到了IO口驱动电路再通过PWM翻转调制后辐射出去。3.4 第三步确认辐射频率与内置时钟的对应关系最后一步是确认辐射频率确实来自内置时钟。把频谱仪的标记点放在超标频率上然后临时把系统时钟切换到外部晶振如果板子上有预留的话或者把内置时钟的频率改一下比如从8MHz改成16MHz观察超标频率是否跟着移动。如果超标频率跟着时钟频率移动那就百分之百确认是内置时钟的问题。如果不动那可能是其他干扰源比如开关电源的谐波或者通信接口的时钟。这个案子里我把HSI从8MHz切换到16MHz后超标频率从64MHz、96MHz、128MHz变成了128MHz、192MHz、256MHz完全跟着走。到这一步问题的根源就彻底清楚了。4. 源端抑制的四个实操方案与实测对比4.1 方案一展频时钟SSC配置展频时钟是解决内置时钟RE问题最直接的手段。它的原理很简单让时钟频率在一定范围内周期性抖动把原本集中在单一频率上的能量分散到一个频带内从而降低峰值幅度。STM32的部分型号支持HSI的展频功能可以通过配置寄存器开启。以STM32F0系列为例需要设置RCC_CR寄存器中的HSION和HSITRIM位配合RCC_CFGR中的展频相关位。具体的配置代码大概长这样// 开启HSI展频功能以STM32F0为例 RCC-CR | RCC_CR_HSION; // 使能HSI while(!(RCC-CR RCC_CR_HSIRDY)); // 等待HSI稳定 RCC-CR | RCC_CR_HSIDIVEN; // 使能HSI分频 // 配置展频参数具体位定义参考参考手册 RCC-CR | (0x1 8); // 设置展频深度展频的深度和调制频率需要根据RE测试结果调整。深度太浅峰值降不下来深度太深可能影响通信接口的时序。我一般从0.5%的深度开始试逐步增加到1%或2%同时监控通信误码率。实测下来展频功能开启后64MHz处的峰值从超标8dB降到了限值线以下3dB效果非常明显。但有个坑要注意不是所有STM32型号都支持HSI展频选型的时候一定要查参考手册确认。4.2 方案二IO口驱动能力降级与斜率控制如果芯片不支持展频或者展频深度不够第二个手段是降低IO口的驱动能力和翻转斜率。IO口的辐射强度跟驱动电流和电压变化率dV/dt直接相关。驱动能力越强翻转越快辐射越高。STM32的IO口驱动能力可以通过GPIOx_OSPEEDR寄存器配置有2MHz、10MHz、50MHz几档。默认通常是50MHz对于LED驱动这种低速应用完全没必要用这么高的速度。改成2MHz后实测64MHz处的辐射下降了4dB左右。除了降速还可以在IO口上串一个小电阻22Ω到100Ω进一步降低翻转斜率。这个电阻要尽量靠近芯片引脚放置否则走线的寄生电容会让效果打折扣。我试过串33Ω电阻配合2MHz驱动速度总共降了6dB。实操心得串阻的阻值不是越大越好。阻值太大信号上升沿变缓可能影响通信接口的时序余量。我一般先用示波器看信号质量确保上升沿在可接受范围内再确定最终阻值。4.3 方案三芯片内部PDN的去耦优化内置时钟的谐波通过PDN耦合到IO口所以降低PDN阻抗也能起到抑制作用。PDN阻抗主要取决于去耦电容的布局和容值组合。很多工程师习惯在芯片电源脚旁边放一颗100nF电容就完事了这对于低频去耦够用但对于内置时钟的高次谐波几十MHz到几百MHz100nF电容的等效串联电感ESL已经让它的阻抗变得很高了。正确的做法是用多颗小容值电容并联比如100nF、1nF、100pF组合分别对应不同的频率段。更重要的是布局。去耦电容的接地回路要尽可能短最好直接打在芯片的地焊盘上。我见过很多板子电容放在芯片旁边但接地线绕了一大圈才到地平面这个回路电感直接把电容的高频去耦效果废掉了。这个案子里我把芯片背面的地焊盘上直接打了四个过孔然后在背面放了三颗电容100nF、1nF、100pF每颗电容的接地端直接连到过孔上。改完后64MHz处的辐射又降了3dB。4.4 方案四IO口走线的天线化抑制即使做了前面三步IO口走线仍然可能像天线一样把残余的谐波辐射出去。这时候需要对IO口走线做“去天线化”处理。具体手段包括走线尽量短、尽量靠近地平面、避免形成长回路。如果IO口要连接到连接器或者排线在靠近芯片的一端串一个磁珠或者共模电感把高频谐波拦在走线之前。这个案子里PWM输出脚到LED驱动器的走线有8cm长而且没有地平面参考形成了一个典型的偶极子天线。我在走线中间串了一颗0603封装的磁珠型号是Murata的BLM18系列在64MHz处的阻抗大约60Ω辐射立刻降了5dB。四个方案叠加后的效果我整理了一个对比表整改措施64MHz处降幅96MHz处降幅128MHz处降幅展频时钟开启8dB7dB6dBIO驱动降级串阻6dB5dB4dBPDN去耦优化3dB3dB2dBIO走线串磁珠5dB4dB3dB四项叠加18dB16dB14dB最终测试结果30MHz到230MHz频段内所有峰值都降到了限值线以下至少4dB顺利通过认证。5. 常见问题与排查技巧实录5.1 为什么加了滤波反而辐射更严重了这个问题我遇到过不止一次。有个案子工程师在电源线上加了一颗共模电感结果RE测试反而超得更厉害了。原因是他选的共模电感自谐振频率比较低在超标频段上呈现容性相当于给高频干扰提供了一条低阻抗通路把干扰从电源线耦合到了信号线上。选共模电感的时候一定要看自谐振频率。对于30MHz到230MHz的RE测试共模电感的自谐振频率至少要高于300MHz最好在500MHz以上。如果拿不准可以用网络分析仪测一下电感的阻抗曲线确保在超标频段上呈现感性。5.2 内置时钟的RE问题能不能靠屏蔽解决能但代价很大。屏蔽罩可以把芯片的辐射挡住但前提是屏蔽罩要完整、接地良好。我试过用0.2mm厚的铜箔把芯片区域完全包起来边缘用导电胶粘到地平面上64MHz处的辐射降了10dB左右。但问题是屏蔽罩增加了成本和组装工序而且如果屏蔽罩上有缝隙或者接地不良效果会大打折扣。对于成本敏感的产品屏蔽罩通常是最后的选择。优先考虑源端抑制方案实在压不下去再上屏蔽。5.3 展频功能开了之后通信误码率上升怎么办展频的本质是让时钟频率抖动这会影响所有依赖时钟精度的外设比如UART、SPI、I2C。如果展频深度太大通信接口的时序余量会被吃掉导致误码。我的经验是展频深度控制在0.5%到1%之间对大多数通信接口是安全的。如果误码率还是上升可以尝试降低展频的调制频率让频率变化更缓慢给通信接口的时钟恢复电路更多时间跟踪。另外如果系统里有对时钟精度要求极高的外设比如USB展频可能会直接导致功能异常。这种情况下只能把展频关掉改用其他方案。5.4 近场探头测出来的幅度跟暗室测试结果对不上近场探头的测量结果是相对值不是绝对值跟暗室测试的场强没有直接的换算关系。近场扫描的目的是定位辐射源和对比不同位置的相对强度不是预测暗室测试的绝对值。如果你需要预估暗室测试结果可以用近场探头做相对比较整改前测一个基准值整改后再测看降了多少dB。这个降幅跟暗室测试的降幅通常有比较好的相关性但绝对值对不上是正常的。5.5 常见问题速查表现象可能原因排查方法解决措施电源线加滤波后RE更差滤波器自谐振频率低用网分测滤波器阻抗曲线换高自谐振频率的滤波器超标频率不随时钟变化干扰源不是内置时钟切换时钟源观察频率是否移动排查其他干扰源展频开启后通信误码展频深度太大逐步降低展频深度深度控制在0.5%-1%IO口串阻后信号异常阻值太大影响时序示波器看上升沿减小阻值或换磁珠屏蔽罩效果不明显屏蔽罩接地不良检查屏蔽罩与地平面连接增加导电衬垫或螺钉6. 我在这个案子里踩过的坑和总结的经验这个案子做完之后我复盘了一下有几个坑是之前没遇到过的值得记下来。第一个坑是过早下结论。一开始看到RE超标我下意识认为是电源滤波不够花了三天时间在电源线上折腾换了好几种滤波方案效果都不好。后来用近场探头一扫才发现方向完全错了。如果一开始就做近场扫描至少能省两天时间。所以现在我的习惯是RE超标先扫近场定位辐射源之后再动手整改。第二个坑是忽略了IO口翻转频率的影响。这个案子里PWM输出脚的辐射比其他IO口高了8dB我一开始没注意到这个细节。后来把PWM频率从1kHz改成100Hz辐射立刻降了3dB。这说明IO口的翻转频率对辐射强度有直接影响。如果应用允许尽量降低IO口的翻转频率或者在不影响功能的前提下让IO口保持静态。第三个坑是去耦电容的接地回路。我之前一直觉得去耦电容只要容值对、位置近就行接地回路长一点没关系。但这个案子让我改变了看法。芯片背面的地焊盘上直接打过孔跟电容接地端绕一圈再到地平面高频去耦效果差了将近一倍。现在我的PCB布局规则里去耦电容的接地端必须直接连到芯片地焊盘上的过孔不允许绕线。第四个坑是展频功能的兼容性。不是所有STM32型号都支持HSI展频我在选型阶段没注意这个细节导致第一版方案没法用展频。后来换了一个支持展频的型号才解决。所以如果你打算用展频来压RE选型的时候一定要查参考手册确认芯片支持这个功能。最后分享一个我觉得挺有用的小技巧在PCB设计阶段可以预留一些“整改位”。比如在IO口走线上预留一个0603的磁珠焊盘在电源脚旁边预留几颗不同容值的电容焊盘。这样即使RE测试超标也有地方可以动手不用飞线或者割线。这个习惯让我在好几个案子里省了重新打板的时间。这个案子的完整整改周期是五天其中近场扫描定位花了一天方案验证花了两天最终测试和微调花了两天。如果一开始就按正确的流程走三天应该能搞定。希望这篇内容能帮你少走我走过的弯路。
阅读完成 · 觉得有帮助?
咨询建站