ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

晶振原理、选型与硬件设计调试实战指南

晶振原理、选型与硬件设计调试实战指南 在硬件行业干了十多年我见过太多“功能死活调不通”的项目最后定位到根因十有八九跟时钟有关。要么是晶振没起振要么是频偏超了规格导致通信误码要么是布局太随意被相邻信号干扰。时钟是整个硬件系统的心脏而晶振就是心脏的起搏器。这篇内容基于我实际调试和选型的经验把晶振从原理到选型、从布局到排查完整梳理一遍里面有大量文档里不会写、但实际项目中一定会踩的坑。1. 时钟到底在硬件系统里扮演什么角色1.1 为什么所有芯片都离不开时钟源先说个最朴素的问题为什么每个MCU、FPGA、以太网PHY、USB Hub甚至一个简单的串口芯片统统需要时钟数字电路的本质是“在确定的节拍下完成状态跳转”。CPU取指令需要节拍UART采样数据需要节拍DDR读写需要节拍MIPI传输差分信号需要节拍。没有时钟寄存器不知道什么时候该锁存数据触发器不知道什么时候该翻转整个系统就是一堆没有指挥的乐器。这个节拍来源绝大多数情况下就是晶振。我在项目里常跟刚入行的同事打一个比方晶振就像是交响乐团的指挥棒CPU、总线、外设都是乐手指挥棒挥动的节奏准不准直接决定整场演奏能不能听。指挥棒快了CPU超频跑飞指挥棒慢了串口波特率对不上通信全是乱码指挥棒时快时慢系统偶尔正常偶尔抽风排查起来最要命。1.2 时钟信号质量直接决定系统稳定性时钟信号的质量不只是“能不能跑”的问题它直接决定系统能不能稳定跑、能在多恶劣的环境下跑。举个实际案例。之前做一块带MIPI接口的摄像头采集板用的传感器和主控之间是MIPI CSI-2协议MIPI时钟走的是差分对频率通常在200MHz到1GHz之间。板子打样回来图像偶尔出现花屏和撕裂。示波器测量MIPI时钟信号波形之后发现差分对的边沿存在比较明显的抖动同时时钟信号的上升沿附近叠加了小幅振铃。顺着链路往前查罪魁祸首是给传感器供电的LDO输出纹波偏大纹波耦合到晶振电源引脚导致参考时钟抖动最终体现在MIPI信号上。这让我养成了一个习惯凡是涉及高速接口的设计对晶振电源的干净程度要求从来不妥协。MIPI时钟示波器波形但凡测出来边沿毛糙、抖动偏大先查供电再查晶振这是优先级顺序。在现代SoC和MCU里内部还有PLL锁相环对晶振提供的低频参考时钟做倍频。PLL可以把12MHz倍频到480MHz甚至更高但它有一个致命弱点是放大了参考输入的抖动。晶振输出端的抖动是1经过PLL倍频之后可能变成10甚至更多。所以晶振是源头源头脏了后面怎么滤波都救不回来。1.3 一个时钟、三大质量指标实际工程里衡量时钟好坏只看频率准不准远远不够。业界把时钟质量拆成频偏、抖动、漂移三个维度很多人直到面试才想起来问但在项目里随时都会遇到。指标定义典型影响关注场景频率偏差频偏实际频率与标称频率之间的差值通常用ppm表示串口波特率偏差、RTC计时误差、载波频偏导致通信质量下降无线通信、RTC、串口、CAN抖动Jitter时钟边沿在时间轴上的短期偏移分为周期抖动、相位抖动等高速接口建立/保持时间余量不足、ADC采样孔径误差DDR、MIPI、PCIe、USB、ADC漂移Drift频率随时间和温度发生缓慢变化老化和温度漂移长时间运行后的通信失步、高精度授时累积误差GPS授时、同步采集、EEPROM时间戳系统频偏和抖动是完全不同的概念很多人混为一谈。频偏是“快了多少”或者“慢了多少”是个平均值抖动是“每一拍之间的时间间隔有多不匀”是个瞬时值。一块晶振标称20MHz、频偏10ppm意思是它实际输出频率在19.9998MHz到20.0002MHz之间反映的是长期平均准确性。而抖动是在这20MHz的每一个周期边沿出现位置的随机起伏跟平均值无关哪怕平均值完全等于20MHz抖动也可能很大。项目调试串口乱码首先要看的不是示波器上波形好不好看而是先算波特率频偏有没有超限项目做PCIe或MIPI反而要重点关注抖动因为协议里的眼图余量直接跟抖动挂钩。2. 晶振的微观原理石英晶体是怎么“凭空”产生频率的2.1 压电效应晶振工作的物理基础要理解晶振怎么工作得先搞懂石英晶体的压电效应。这个知识点不复杂但非常重要。石英晶体二氧化硅单晶有一种特性在特定晶向切割成薄片后如果在它两个面上施加机械压力晶体表面会产生电荷这叫正压电效应。反过来如果在两个面上施加交变电场晶体会发生与电场频率一致的机械形变这叫逆压电效应。晶振能振荡靠的就是逆压电效应。给石英晶体通上电它会规律地膨胀和收缩就像一个以极高精度做机械振动的微型音叉。这里有个关键点石英晶体的谐振频率几乎由物理尺寸决定而石英材料的化学和物理性质极其稳定受温度影响途径很规律。所以晶振能获得比RC振荡器精度高好几个数量级的频率稳定度。2.2 为什么晶振频率总是那些“奇怪”的数字用晶振的人会注意到市场上常见的频率是8MHz、12MHz、16MHz、25MHz、27.12MHz、32.768kHz这些。这些数字不是拍脑袋定的背后有两股力量博弈。第一是系统需求USB要求480Mbps常用的做法是用24MHz晶振做参考PLL去倍频以太网100Mbps要求的参考时钟是25MHz串口波特率希望晶振频率能被波特率整除11.0592MHz就是专门为串口波特率服务的一个经典频率因为用它可以准确分频出9600、115200这些标准波特率而不产生累积误差。51单片机电子时钟很多人选11.0592MHz就是为了串口与定时器同时兼顾。第二是晶振厂家的切割工艺和生产成本AT切晶体容易加工、温漂特性好覆盖1MHz到几百MHz的范围所以市面上绝大多数高频晶振都是AT切。32.768kHz是32768Hz刚好是2的15次方用15级二分频就能得到1Hz的秒脉冲RTC万年历之所以普遍选它就是因为分频电路实在太简单、太省电了。2.3 从等效电路看晶振的本质很多人看晶振的数据手册看到那几个电路参数就发怵。实际上晶振在电学上可以等价成一个RLC串联谐振回路再并联一个电容核心参数是动态电阻R1、动态电容C1、动态电感L1和并联电容C0。晶振之所以稳定是因为它的Q值非常高。什么概念普通的LC振荡回路Q值能做到几十到几百已经不错了石英晶振的Q值动辄几万到几十万。高Q值意味着选频特性极好偏离谐振频率一点点阻抗就会剧烈变化。这就像一个极其苛刻的窄带滤波器只允许一个非常精确的频率通过。所以晶振电路一旦振荡频率就被晶体牢牢“锁定”不太容易受外围元件参数温漂影响。R1等效串联电阻ESR在数据手册里也会标注通常叫做ESR。这个参数在电路设计时直接决定振荡裕量够不够后面讲负性阻抗的时候会再提到。3. 无源晶振与有源晶振千万别选错不然哭都来不及3.1 半只引脚判断方法不是看外观经常有人问我无源晶振和有源晶振怎么区分。最直观的办法无源晶振只有两个引脚或者外加外壳接地脚有源晶振通常是四个引脚。所以有时候你会听到“aw328是单脚晶振还是双脚晶振”之类的问题问的就是封装和引脚结构。但核心差异绝对不只是引脚数量。无源晶振本质是一个石英谐振器它自己不会振荡必须配合芯片内部的振荡器电路才能产生时钟。它需要芯片内部提供偏置和增益外部再接两个负载电容。有源晶振则是一个完整的振荡器模块内部集成了放大电路、反馈网络和石英晶体通电直接输出方波或正弦波不需要芯片内部任何配合。判断项目该用哪种直接看主芯片的时钟输入引脚如果引脚标记为OSC_IN和OSC_OUT说明芯片内置振荡器电路接无源晶振如果只有一个CLK_IN引脚说明必须从外部输入已经振荡好的时钟信号接有源晶振。STM32F103系列就是典型的内置振荡器结构OSC_IN/OSC_OUT之间接8MHz无源晶振加两个20pF左右负载电容是教科书式设计。3.2 有源晶振的优势与代价有源晶振的优点非常明显输出信号质量好不需要依赖芯片内部的振荡器设计驱动能力强频率范围可以做得更宽。对时钟质量要求极高的场合比如以太网PHY的25MHz参考时钟、PCIe的100MHz差分时钟很多工程师干脆直接选用有源晶振省去一大堆匹配计算的麻烦。但它有三个代价价格更高、功耗更大、还需要多一个供电引脚。有些低功耗产品对静态电流极其敏感哪怕多几百微安的电流都心疼。这种场景如果主芯片允许用无源晶振优先用无源方案。有源晶振的输出电平类型要注意匹配。常见的是CMOS输出也有的集成了LVPECL、LVDS、HCSL差分输出尤其用于高速SerDes参考时钟。不同输出电平的接口标准、端接方式完全不同网上搜索问“有源晶振选型”时一定要注意输出电平这一栏不然买回来引脚电平不兼容信号根本采不进去。3.3 NXP、瑞萨这些芯片的典型搭配思路做过车载和工控项目的都知道不同芯片平台的时钟方案有明显偏好。比如NXP的MPC5748G这类车规MCU外部通常推荐接8MHz到40MHz的无源晶振配合内部PLL倍频系统主频可以跑到200MHz以上。MCP2518FD这个CAN FD控制器我实测用40MHz晶振比较多它支持的最大晶振频率就是40MHz内部没有集成振荡器就必须外部提供时钟。做嵌入式Linux平台的时候很多人喜欢直接用有源晶振给主控提供参考时钟省去负载电容计算、起振时间调整这些麻烦。但是这样做有一个潜在问题有源晶振输出的方波边沿非常陡峭会带来更多的谐波和EMI对布局布线要求反而更高了。所以到底选无源还是有源不是越贵越好而是要回归系统架构去权衡。4. 晶振电路硬件设计负载电容、负性阻抗和起振条件4.1 负载电容到底怎么算无源晶振电路里面最核心的无源器件就是那两个负载电容。很多新手直接抄参考设计用了两个22pF然后频率偏了也不知道怎么回事。晶振手册上会标注一个负载电容CL比如常见的8MHz晶振CL20pF。这个CL不是指某一个电容的值而是从晶振两端看进去的整个电路等效电容。典型电路里晶振两端各接一个电容到地假设两个电容都是C1和C2通常相等芯片引脚还有寄生电容Cstray走线、焊盘、引脚本身一般估3到7pF。实际配置时计算公式为$$CL \frac{C1 \times C2}{C1 C2} Cstray$$如果C1C2C则公式变成$$CL \frac{C}{2} Cstray$$实例需要CL20pF估算Cstray5pF则C/2 5 20解得C30pF。实际就近取标称值用两个27pF或33pF都可以差别不大调试时用频率计实测微调。好多时候我用两个27pF之后测出来频偏完全在可接受范围就没必要抠到极致。4.2 负性阻抗和振荡裕量很多工程师不知道晶振起振靠的是振荡器电路的负性阻抗来抵消晶振本身的等效串联电阻ESR。芯片数据手册或者晶振应用笔记里会提到负性阻抗或振荡裕量。负性阻抗的测试方法是串联一个可变电阻在晶振回路里从小到大调整直到电路停止振荡这时候的串联电阻值就是振荡器的负性阻抗。从这个电阻值反推实际工作时的增益余量。工程经验是负性阻抗至少要是晶振ESR的3到5倍否则起振不可靠。举个例子某8MHz晶振ESR典型值50Ω振荡器负性阻抗如果只有100Ω只有2倍余量低温下尤其是-40℃时很可能起振困难。如果负性阻抗能做到250ΩESR又只有50Ω那5倍余量这个方案就比较稳。我见过一些低功耗MCU在低温下间歇性无法启动排查之后发现就是振荡裕量不足。解决思路是降低两个负载电容值电容越大反馈能量消耗越多负性阻抗会越低提高MCU振荡器驱动等级如果可配置换成ESR更小的晶振。4.3 晶振布局和包地的完整规范晶振布局是整个硬件设计中“小器件大学问”的典型。在画PCB时晶振相关走线面积很小但处理不好就是大问题。以下是我在多个量产项目里验证过的规则晶振位置尽量靠近主芯片的OSC_IN和OSC_OUT引脚走线越短越好。通常要求晶振到芯片的距离不要超过5mm长了容易引入干扰和寄生电容导致频偏和起振不稳。晶振走线禁止换层不要打过孔。过孔的寄生电感和寄生电容会改变振荡环路参数可能导致不起振或者辐射增大。晶振下方铺地。把晶振正下方的平面铺成完整地平面不要走其他信号线。这样地平面可以充当屏蔽层隔离晶振与底层其他信号的耦合。但注意不要在晶振正下方的地平面上开槽。晶振包地是什么很多人误解为用一根环形地线把晶振围起来就是包地。形式上确实是一圈地过孔加地线但包地的真正目的是为高频谐波提供一个低阻抗回流路径。晶振工作时会产生基频及其谐波这些谐波电流如果没有就近的地回路就会通过空间辐射出去变成EMI问题。所以包地的本质是布置一圈地过孔距离晶振本体2mm以内过孔间距尽量小相当于给晶振画了一个“法拉第笼”。晶振周围不要走高速信号线。特别是时钟线、数据线这类频繁翻转的信号离晶振至少3mm以上。MIPI差分对、USB差分对、以太网差分对统统要远离晶振。我实测过一块板子USB差分线从晶振旁边2mm处经过USB高速模式直接掉到全速模式眼图质量惨不忍睹最后重新改板拉开距离才解决。晶振与晶振之间也要留距离。有些板子同时有32.768kHz RTC晶振和8MHz主晶振两者间距尽量超过10mm否则可能出现串扰拍频现象两个频率搅在一起产生差频干扰导致RTC走时不准或者主时钟不稳。4.4 匹配电容的温度特性和精度选择负载电容建议选择NP0/C0G材质的MLCC这种材质温度稳定性非常好容量随温度漂移极小。千万不要用X5R、X7R甚至Y5V介质的电容做晶振负载电容那些材质在高温下容值可能掉20%甚至更多会导致晶振频偏随温度明显恶化。精度选择方面一般用5%精度的NP0电容足够了。如果你做的是高精度授时、高精度ADC采样时钟可以考虑用1%精度成本差异不大但一致性更优。实际量产时如果发现同一批板子频偏一致性差先怀疑负载电容的贴片精度和介质类型再去怀疑晶振本身。5. 晶振的三大敌人负载电容选错、电磁干扰、电源噪声5.1 电源噪声对晶振的隐性影响无源晶振工作时有源器件其实在芯片内部外部不太需要直接关心晶振的供电问题。但有源晶振是直接供电的而且它对电源噪声极其敏感。有源晶振内部虽然有稳压或者整形电路但一个纹波很大的电源依然会以直接调制的形式串到输出时钟上导致抖动恶化。实测过一款50MHz有源晶振供电用普通LDO时输出时钟抖动约3ps RMS换成同一个型号但供电加了LC滤波之后抖动降到了1.5ps RMS。对PCIe这类要求总抖动小于几十ps的系统来说这1.5ps的改善极其宝贵。所以凡是用有源晶振我习惯在电源引脚附近放一个磁珠加两个电容的π形滤波低频噪声靠大电容高频噪声靠小电容加磁珠。另外有源晶振的电源引脚必须加去耦电容位置尽量靠近电源引脚小于1mm为好电容值一般100nF并联1μF到10μF。注意电容的谐振点100nF的贴片电容谐振频率在几十MHz能滤掉这个频段再加一个大容值电容滤低频两个配合才能覆盖宽频段。5.2 电磁干扰来袭晶振被干扰的三种典型场景场景一PCB板上有一个大功率开关电源DCDC开关频率2MHz电感在晶振附近磁场耦合进晶振环路。晶振输出频率没有明显变化但示波器观察时发现时钟边沿出现周期性抖动。这种干扰很难从晶振本身解决最好的办法是拉开距离或者加屏蔽罩。场景二系统里有一个发射模块比如4G模组发射时瞬时电流很大地电位被拉偏晶振的地和芯片的地之间存在地弹电压。表现为晶振在模组发射瞬间频率跳变严重时通信直接失败。解决办法是加强地平面完整性晶振下方和芯片下方形成无缝地平面不要有过孔割裂地平面。场景三FPC排线或者长走线携带快速翻转信号平行穿过晶振附近。串扰能量通过空间耦合到晶振走线引起杂散调制。解决办法是改走线层或者加宽与晶振的距离。5.3 地弹与回流路径晶振地为什么不能浮空无源晶振通常有一个金属外壳引脚有些封装没有这个引脚最好接地不要悬空。金属外壳本身是导体不接地就是一个悬浮的“天线”会接收空间电磁波然后通过外壳与内部引线之间的寄生电容耦合到信号路径里反而成了干扰入口。晶体下方打地孔接底层地让外壳与大面积地平面良好接触。有的工程师为了减少寄生电容故意把晶振外壳接地引脚不接这样做表面看减少了寄生电容实际上引入了更多EMI风险得不偿失。地弹问题很多时候是参考地造成的。如果晶振的电流回流路径经过一个高阻抗缝隙或割裂区域地电位局部起伏晶振看到的参考地就不再干净输出频率会被调制。所以晶振布局不仅要考虑晶振本身的位置还要检查它正下方和周围是否有被切割的地平面。6. 晶振选型AQL、ppm、温漂、老化这些参数怎么读6.1 频率精度ppm和温漂的工程意义晶振选型时最常接触的指标是频率容差也就是常温下的最大频偏通常标为±10ppm、±20ppm、±30ppm。另外还有温度稳定度是指在整个工作温度范围内比如-40℃到85℃频率偏离常温标称值的最大值。ppm是什么概念1ppm等于百万分之一。如果系统时钟是100MHz100MHz的10ppm就是1000Hz。看起来1000Hz对100MHz来说很小但用在通信上就不一样了。比如一个2.4GHz的无线产品频偏10ppm意味着载波可能偏了24kHz。某些协议窄带信道带宽可能只有几十kHz24kHz的频偏几乎可以吃掉整个信道直接导致通信距离缩短或者连不上。RTC场景就更容易理解了32.768kHz的晶体如果频偏是20ppm一天误差就是24小时×3600秒×20ppm1.728秒一个月误差约52秒。这就是为什么普通消费电子里的RTC一个月能差几十秒而一些高精度设备会选用温补晶振TCXO把频偏压到0.5ppm甚至更低同时用软件周期校准。6.2 有源晶振内部的TCXO和OCXO有源晶振也分三六九等。最普通的是普通XOCrystal Oscillator精度一般±10ppm到±50ppm。再往上走是TCXO温度补偿晶振内部用温度传感器加补偿网络抵消温漂精度可以做到±0.1ppm到±2ppmGPS模块、基站、高精度授时经常看到它。最高端的是OCXO恒温晶振内部有加热器把晶体恒定在一个温度点温度变化对频率的影响几乎可以忽略精度能到ppb级别十亿分之一但是功耗大、体积大、成本高一般在通信基站和测试仪器里才舍得用。选型时别只看标称精度还要看温度稳定度、年老化率、启动时间。OCXO启动需要几分钟才能达到稳定温度这在某些需要快速开机的设备里是不可接受的。TCXO启动快但精度比OCXO差一个量级。没有全能的晶振只要搞清楚系统需求到底落在哪个量级选型就不难。6.3 从企业实际需求反推晶振等级我之前在工业仪表项目里用到过GPS授时同步的功能多台设备需要同一时刻采样采样时间差要求小于几百纳秒。这背后要求的是所有设备的参考时钟频率误差足够小并且相位误差不随时间累积。这种情况下普通晶振根本没法用频偏是不确定的每台设备之间频率都略有差异时钟会越走越偏。最后方案改用了TCXO把频偏控制在±0.5ppm以内配合GPS的PPS信号定期校准才真正做到长时间同步精度可控。做EtherCAT DC时钟同步类项目的人一定理解我说的意思——分布时钟同步要求每个从站的本地时钟误差控制在纳秒级别晶振的ppm等级直接决定同步保持时间的长短。对量产产品来说晶振选型还要考虑AQL接收质量限和供货一致性。同一型号不同批次的晶振频偏分布如果差异很大会增加产线校准的成本。正规晶振厂商会提供每批的频率分布测试报告采购时可以让供应商提供。成熟的硬件工程师在看到一颗晶振样品后会顺手问三个问题年老化率多少焊接回流后频偏变化能保证多少有没有车规级版本这些问题直接关系到产品能不能过认证、能不能长期稳定运行。7. 从晶振到时钟树MCU内部时钟怎么一步步长出来7.1 STM32、GD32的经典时钟树结构一个晶振只是时钟系统的起点真正重要的是它在芯片内部怎么分配、分频、倍频。以STM32F103为例外部8MHz晶振作为HSE高速外部时钟经过PLL倍频到72MHz作为系统主频SYSCLK然后经过AHB预分频器、APB1预分频器、APB2预分频器分别给不同外设提供时钟。内部还有一个LSI低速内部时钟和LSE低速外部时钟通常接32.768kHz。这就是经典的“时钟树”概念。很多人刚学时就被时钟树搞晕其实核心只有几条路径CPU和总线吃的是SYSCLK分频后的时钟定时器吃的是APB1或APB2倍频后的时钟ADC吃的是APB2分频后的时钟RTC吃的是LSE或者LSI。每条外设的时钟快慢直接决定它的工作频率上限比如STM32F103的APB1最高36MHz定时器如果想跑72MHz需要在APB1预分频为2的情况下使用定时器时钟倍频功能。GD32F303的APB1最高时钟能跑到60MHz比STM32F103宽裕不少这也是很多人选GD替代STM32的一个原因。7.2 时钟树配置错了会有什么后果时钟树配错最常见的后果是串口波特率不对。串口外设的时钟源来自APB总线时钟如果APB预分频系数配错UART的波特率发生器算出来的实际波特率就会偏离设定值导致收发双方数据错乱。这种问题用示波器抓UART TX引脚波形就能发现波形的位宽跟理论值对不上。另一种典型问题是定时器溢出时间不对。很多人从标准库移植到HAL库发现定时器中断频率跟计算值完全不一致检查了半天代码最后发现是时钟树初始化时PLL倍频系数设错系统主频根本没跑到标称值。所以在调试系统级异常时第一个动作往往是检查主频是不是预期值方法很简单用一个定时器翻转GPIO用示波器测翻转频率反推系统时钟。或者直接读RCC寄存器确认当前使用的时钟源和分频值。7.3 跨时钟域当一颗晶振不够用的时候系统越来越大之后一颗晶振往往不够用。主控运行48MHz以太网PHY需要25MHzUSB需要24MHzWiFi模组需要32.768kHz休眠时钟这些频率可能来自不同晶振。不同时钟源之间天然存在频率差异和相位差异当信号从一个时钟域传到另一个时钟域时如果不做处理就会产生亚稳态问题。跨时钟域处理是硬件和FPGA设计里的经典话题常见手段有打拍同步、异步FIFO、握手协议。在FPGA设计里如果两个时钟域频率接近但不同步直接传信号会导致偶发性的数据错误而且这种错误很难复现、很难排查从单一晶振派的时钟信号难以解决。硬件层面能做的优化是尽量让系统内相关时钟参考同一个源。比如USB PHY的时钟和MCU的时钟如果能够通过PLL从一个晶振派生出来就不存在两个独立时钟域的同步问题。有些平台宁愿用一个高频率晶振然后在内部PLL分频出各个外设时钟就是为了尽量减少独立时钟源数量降低跨时钟域同步的复杂性。8. 晶振调试与排查不起振、频偏大、波形异常怎么办8.1 不起振的完整排查链路晶振不起振是硬件调试里最常见的问题之一我把排查链路分成五个步骤每一步都有明确的操作和判断标准。第一步检查电源和芯片工作状态。先确认主芯片供电正常程序有没有跑起来因为有些芯片默认用内部RC时钟启动程序里不初始化外部晶振就不会起振。用万用表测一下VDD是否正常用示波器看芯片有没有运行现象。第二步检查晶振引脚波形。用示波器高阻探头有源探头更好分别测量OSC_IN和OSC_OUT引脚的波形。起振状态下OSC_OUT通常会看到比较明显的正弦波幅度大概在几百毫伏到电源电压之间OSC_IN幅度会小一些。两个引脚如果完全是一条直线基本就是没起振。注意探头寄生电容会影响振荡频率甚至导致停振所以尽可能用低压摆率低的探头必要时可以在探头串一个小电阻。第三步检查外围电路。确认负载电容有没有焊错、虚焊容值是否跟设计一致。有些板子用了排阻或者不合适的封装导致电容实际根本没接上。第四步检查晶振本身。用手头已知完好的同型号晶振替换排除晶振个体损坏或者批次问题。晶振跌落、过温焊接时间过长、超声清洗不当都可能导致晶体内部损伤出现不起振或者频偏超标。第五步回看PCB设计。如果样机没问题、量产部分板卡不起振高度怀疑是贴片工艺问题或者PCB加工偏差。有些晶振在焊接时因为焊料过量外壳与地之间形成了短路或者严重寄生改变了振荡条件。查看焊接质量和封装一致性。8.2 频率偏差超标的排查思路如果起振了但是频率偏差超标先确认测量条件。频率是用频率计还是示波器测的示波器测频率精度本来就不高测10MHz可能误差就有几十Hz甚至更多要看准确频率最好用频率计或者带高精度频率测量功能的仪器。如果确认是实际频率偏差大顺着下面几个方向排查负载电容是不是匹配晶振规格。前面算过CL不匹配会导致振荡频率偏离标称值。很多“频偏大”问题的根源其实是负载电容选错不是晶振质量差。测量环境温度是否接近晶振的参考温度。晶振频率以25℃为基准如果调试环境特别热或特别冷频偏大可能是正常的温漂现象。对比同一颗晶振在常温下的频率可以判断是温漂还是真故障。晶振焊接是否过度加热。回流焊温度曲线如果太激进石英晶体的切割角度可能发生微小变化导致频率偏移永久性超过规格。成熟的代工厂会严格控制晶振这类敏感器件的过炉温度和时间焊接后测试发现频偏超标可以查焊接温度曲线。8.3 晶振波形异常和相位噪声问题晶振输出波形不干净也要看具体是哪种异常。如果波形幅度太小可能是振荡器驱动不足、振荡环路损耗过大或者测量探头负载过重导致信号被拉低。如果是给后端芯片输入用的信号幅度不足可能导致芯片时钟输入无法达到逻辑阈值系统工作不稳定。无源晶振输出信号通常就是几百毫伏到1V左右的正弦这很正常芯片内部有整形电路会把它转成方波不用强行要求晶振引脚上是标准方波。如果波形叠加了高频毛刺或振铃大概率是测量方式的问题探头地线太长形成环路拾取干扰或者是布局布线上晶振输出走线与某条快速信号线靠得太近。测量时尽量把探头的地线弹簧尽可能短地接到芯片地不要用长长的鳄鱼夹线否则看到的高频毛刺很多是假象。如果波形边沿有明显抖动重点关注电源噪声和附近干扰源。这时候可以做实验断开或屏蔽可疑干扰源看波形是否干净。如果关掉某个DCDC后抖动变小说明DCDC是干扰源对策是加大晶振供电滤波、拉远距离或加屏蔽。8.4 高速接口场景下晶振抖动如何测在做MIPI、USB、PCIe这类高速接口时单纯看示波器波形已经不够了需要使用示波器自带的抖动分析功能或者实时眼图功能。可以设置示波器对时钟信号做无限余辉观察边沿重叠的厚度抖动的信号会呈现模糊的边带。要定量分析就用示波器的抖动测量功能能直接测出周期抖动、相位抖动以及TIE时间间隔误差。实际项目里如果MIPI时钟信号波形呈现明显的边沿不清晰、眼图闭合在确保差分走线阻抗匹配的情况下剩下的重点就是检查参考时钟的抖动。MIPI协议对参考时钟有明确的抖动上限要求超出之后接收端误码率明显上升。调试时可以摸一下给晶振供电的LDO温度如果发热大说明电源损耗大、纹波可能偏高加剧抖动的概率很高。9. 工程实战经验从晶振到完整时钟方案的把控思路9.1 设计阶段的时钟方案评审清单在原理图评审阶段我有一套固定的晶振评审项分享出来可以直接抄作业时钟源类型是否明确。无源还是有源主芯片的时钟输入结构是否符合OSC_IN/OSC_OUT还是CLK_IN。负载电容值是否经过计算而不是照抄参考设计。Cstray的估算是否留了余量。晶振的频偏、温漂指标是否匹配系统需求。RTC用20ppm还是5ppm通信系统用10ppm还是2ppm环境温度范围是否覆盖。有源晶振的输出电平类型与接收端是否匹配。CMOS和差分输出不能混用。电源去耦是否到位。有源晶振供电是否有磁珠加电容滤波无源晶振是否有去耦电容保证芯片内部振荡器电源干净。晶振与主芯片的相对位置是否合理PCB布局时是否方便做到短走线、包地、远离高速信号。9.2 量产阶段晶振的管控要点量产阶段晶振往往是“不起眼但出事率很高”的器件。低端晶振市场的供应商鱼龙混杂同样标称20ppm的晶振不同批次实测差异可能很大。采购时要求供应商提供每批的频率测试数据通常是出厂测试报告有条件的话可以让贴片厂对晶振做来料抽测测试项目包括频率、ESR、静态电容。产线的贴装工艺也要注意晶振属于对机械应力和温度敏感的器件不能采用过激的贴装压力回流焊温度曲线要控制在晶振规格书要求的峰值温度以内。在量产测试环节加入频率检测项用MCU的定时器外部捕获或者专门的频率计自动测试可以在烧录环节顺便完成不用额外增加工序成本。9.3 遗留一个常用排查技巧示波器测时钟的隐藏坑最后分享一个很多人踩过的坑示波器探头输入电容通常在10pF到15pF左右测量晶振引脚时这个电容会直接并联在振荡回路上改变谐振状态导致测量到的频率与实际工作频率有偏差极端情况下甚至会让振荡器停振。所以测晶振时优先使用低电容探头有源探头可以做到1pF以下或者用10倍衰减探头并串联一个1kΩ到10kΩ的电阻再接触测试点能减轻负载影响。数字示波器本身噪声也不小测毫伏级别的晶振波形时要把带宽限制打开到20MHz或适应当前频率的低带宽能滤掉很多高频噪声获得更真实的波形。另外一个经验是批量板卡出现频率问题时不要只看一两块板就下结论。拿十块板子测一下同一颗晶振引脚的频率分布如果离散性很大再测一下负载电容两端的实际电容值如果没贴错但离散依然大就要怀疑晶振批次一致性了。用数据说话不要在个别现象上反复折腾。
返回列表