调试一块带实时时钟的板子时,我遇到了一个非常诡异的现象:串口波特率设成115200,实测却变成了114xxx,拿示波器看波形,每个字节的位宽都长了那么一点点。查了一圈,最后锁定在板载的32.768kHz晶振上——它实际输出的是32.781kHz。也就是这次排查,让我开始认真对待晶振频率测量这件事,也让我意识到一个专门为晶振测量设计的模块,到底应该把力气花在哪些地方。这篇文章想聊的,就是我在搭建这样一个频率测量模块时的完整思路:为什么电源隔离不是可选项,多功能测量背后是什么原理,以及从选型到调试再到避坑的整个链路。如果你正在做时钟精度相关的硬件设计、需要批量筛选晶振、或者单纯想把频率测量做到"心里有数",这篇应该能给你一些参考。
1. 频率基准不准,整个系统都在替你背锅
1.1 我遇到的那次波特率异常排查
先说那个项目。板卡上用的是某款带USB转串口的芯片,外部挂了一颗无源晶振做时钟源。串口通信偶发乱码,一开始我怀疑是接地问题、怀疑是固件配置问题,翻来覆去折腾了半天,最后用示波器对比了两块板子的串口波形,才发现是时钟偏差。
示波器本身测频率是可以的,但有两个问题:一是示波器的时基精度有限,测MHz级别的信号凑合,测32.768kHz这种低频又要求高精度的场景,读数后几位基本不可信;二是示波器探头一搭上去,探头的寄生电容会直接影响振荡电路的工作点,测出来的频率本身就可能是"被测量行为改变后的频率"。
所以搞硬件的人,手头最好有一个专门用来测频率的模块——准确说,是"能把晶振信号干净地读出来"的模块。它可以是一台频率计,也可以是一块自己搭的测量板。但自己搭和直接买成品不一样,你必须清楚每个环节在做什么。
1.2 晶振测量模块真正在解决什么:3类典型场景
结合我自己的实践,晶振频率测量模块主要解决三类问题:
第一类,晶振筛选。批量采购的晶振,标称频率是12.000MHz,实际可能落在12.000MHz±30ppm内。30ppm听着小,但对于需要长期同步的设备,累积误差会非常可观。筛选出偏移较大的个体,在入库前直接退掉,比焊上去之后再拆下来划算得多。
第二类,频率校准。设备里的RTC芯片、无线模块、以太网PHY,对参考时钟的精度要求各不相同。把板子上的晶振频率测出来,再在固件里做软件补偿,可以让设备精度提升一个量级。比如32.768kHz的晶振,实测偏了20ppm,软件里每天补偿1.7秒左右,RTC就能走得准很多。
第三类,时钟评估。测的不只是频率绝对值,还有短稳、温漂等。这需要测量模块有足够的分辨率和稳定的参考基准,能分辨出频率的微小变化。此时模块本身反而成了系统的"标尺",标尺不准,测谁都没用。
顺便说一个容易被忽略的点:晶振测量模块测量的是晶振所在振荡电路的真实工作频率,不是晶振单独的参数。晶振必须配合负载电容、驱动电路才能起振,所以测到的总是"这个电路环境下的频率"。这正是模块需要多功能的原因之一——测量时最好能顺便告诉你电路状态正不正常。
2. 电源隔离不是玄学:地环路如何毁掉一次测量
2.1 共地测量时到底发生了什么
很多人一开始会用开发板直接飞线测量:晶振信号接一个引脚,开发板的地和被测板的地一连接,完事。我最初也这么干。但测出来的数据隔几秒跳一下,甚至出现明显偏低的现象,一开始还以为是测量算法写得不对。
后来想明白了,问题出在地环路上。
被测电路和测量电路共地之后,两者之间会形成一个闭合回路。只要两边的地电位不完全一致(实际上几乎不可能完全一致),回路里就会流过电流,产生一个小的地线压差。这个压差本身不大,但晶振信号本身也不大——很多无源晶振电路输出的振荡信号幅度只有几百毫伏。在地线上叠加的高频噪声,可能会直接淹没信号,或者让整形电路在错误的电平上反复翻转,导致计数器多计、漏计。
更麻烦的是,共地连接还可能改变振荡电路的工作状态。很多振荡电路对电源和地的噪声很敏感,测量设备接入后,等于给振荡电路引入了一个额外的噪声源和负载。频率测出来偏了,你说这是晶振的问题还是测量系统的问题?这是共地测量的根本困境:测量行为污染了被测对象。
2.2 隔离方案的三种实现路径与取舍
解决思路很直接:让测量前端与被测系统之间没有电气上的直流通路,也就是电源隔离。
具体有三种常见路径:
第一种,隔离电源模块 + 数字隔离器。测量前端用隔离电源供电,被测信号进来之后经过隔离栅(数字隔离器或磁耦)再送到后端的计数器。这是最常用、隔离效果最好的一种方案,也是我最终选择的路线。
第二种,电池供电 + 光耦输出。前端电路用电池供电,天然地和被测系统没有共地关系,测到的信号通过光耦传到后端。这种方案的优点是电源极度干净,缺点是光耦的速度和一致性有限,测高频信号容易失真,且电池需要定期更换,不适合长时间无人值守的测量。
第三种,差分测量。用差分探头读取晶振两端的信号,通过仪表放大器转换成单端信号,再做隔离处理。优点是能直接看到晶振两端的真实波形,缺点是电路复杂,成本高,一般用于实验室分析,不太适合做"模块"。
三种方案的核心取舍在于:隔离做得好不好,电源干不干净,信号链路的带宽够不够。前面那些"测不准"的问题,绝大多数出在顺序上——先加了数字隔离器,但前端电源没隔离,共地问题照样存在。
2.3 隔离之后的电源纹波,才是第一个隐藏雷
隔离电源并不是一装上就万事大吉。隔离电源模块的输出端不可避免地会有开关噪声和纹波,尤其是一些便宜的升压型隔离电源,纹波能到几十毫伏甚至上百毫伏。这个噪声如果直接进入前端整形电路,会让比较器反复翻转,计数结果一片混乱。
所以隔离电源输出之后,必须再做一级线性稳压,把纹波压下来。我当时用的是一级隔离后再加低压差线性稳压器(LDO),输出端的噪声控制到1mV以下,再配合去耦电容,才让计数稳定下来。
这一步的成本比想象中低很多,但效果极其明显。如果你的测量模块出现了"频率值四处飘、毫无规律"的情况,先别急着怀疑算法,拿示波器看一下隔离电源输出端的纹波,往往真相就在这里。
3. 多功能测量的本质:计数法、测周法与通道结构
3.1 测频法、测周法、等精度测量的适用边界
"多功能测量"这个词听起来很玄,其实核心就是在不同的频率范围和精度要求下,选择不同的测量策略。说穿了就三个方法。
测频法:在固定闸门时间T内对待测信号计数,测到的频率就是计数值N除以T。精度取决于闸门时间——闸门越长,计数值越大,分辨率越高。但低频信号用测频法就很吃亏,测量1Hz的信号用1秒闸门,只能得到1个计数,误差直接到50%。
测周法:反过来,用高频参考时钟去测量待测信号的一个周期。精度取决于参考时钟频率和待测频率的比值。这个方法适合低频信号,高频信号用一个周期测量,分辨力反而下降。
等精度测量:把两种方法揉在一起。它不固定闸门时间,而是让闸门和待测信号同步——实际记录的是"待测信号过了N个周期",同时用高频参考时钟数出这段时间的参考脉冲数M。频率就等于N × Fref / M。这样测量精度和待测频率高低基本无关,取决于参考时钟本身准不准。
我做模块时直接选了等精度测量作为核心逻辑。原因很简单:晶振测量的频率范围可能从32.768kHz到几十MHz,跨了好几个数量级。如果用固定闸门的测频法,低频分辨率惨不忍睹;用测周法,高频又吃力。等精度测量用一片中等规模的单片机就能实现,逻辑不复杂,收益却很大。
3.2 双通道结构怎么设计:测量通道与参考通道各司其职
等精度测量需要一个高质量的高频参考时钟,这块我用了一颗温补晶振(TCXO)作为参考源,频率是10MHz,后文会详细说选型。但测量模块不能只接受一个信号输入——实际使用中,经常需要同时观察"晶振输出"和"参考输出",或者对比两颗晶振的频率差异。
所以我将模块设计成双通道:
- 测量通道A:接被测晶振信号,经过整形后进入计数器的外部时钟端。
- 参考通道B:内部10MHz TCXO信号,经过缓冲后进入计数器的高频时钟端。
等精度测量的闸门信号由A通道的信号边沿触发,闸门开启和关闭都对齐A通道的上升沿;在闸门打开期间,数据寄存器同时记录A通道的脉冲数和B通道的参考脉冲数。这样一次测量结束,两个计数值做除法,得到的就是A通道频率对B通道频率的比值。
双通道的好处是可以做频率比测量:把通道B改为外部输入,就能直接得出两颗晶振的频率偏差,这对配对筛选尤其有用。比如需要选择两颗频率偏差小于1ppm的晶振用在差分时钟电路,双通道同时测,一次就能出结果。
3.3 从频率到占空比、脉宽、计数的扩展思路
频率只是第一步。晶振测量模块的"多功能",通常在频率之外还要有:
- 周期:频率的倒数,低频时直接读周期更直观。
- 脉宽:利用计数器的高频时钟,测量一个脉冲高电平持续的时间。
- 占空比:分别数一个周期内高电平和低电平时间,做除法。
- 累计计数:当测量对象是某个事件流而不是周期信号时,比如光电编码器的脉冲计数,模块要能当计数器用。
这些功能在硬件上不需要太多额外成本。脉宽测量就是测量两个边沿之间的参考时钟数;累计计数就是把闸门逻辑关掉,让计数器自由跑。真正的工程点在软件层如何切换测量模式而不丢失计数,以及不同模式下引脚分配会不会冲突。我在设计时就提前把模式切换放在固件菜单里,而不是改跳线,实际用下来省了很多事。
4. 核心元件选型:每个环节为什么是它
4.1 前端整形:波形好不好,直接决定计数稳不稳
晶振输出的信号往往不是干净的方波——无源晶振电路出来的通常是正弦或削顶正弦,有源晶振输出的接近方波但边沿仍有抖动。计数器芯片或单片机的外部时钟引脚通常需要数字电平触发,所以前端必须做信号整形。
我用的是施密特触发器非门,型号是74HC14。选它有几个原因:
- 施密特触发器自带迟滞,输入电平在上升和下降时分别有不同的阈值,能够有效抑制边沿附近的噪声,避免一个边沿被误触成两个。
- 74HC14是六路封装,一个芯片能同时处理多个输入信号,面积小。
- 工作电压范围宽,接3.3V或5V都没问题,方便和不同电平的被测电路对接。
如果在更严苛的场合——比如信号幅度极小,或者需要精确控制触发阈值——我会改用高速比较器,比如常见的LM393或者更高速的型号,把晶振信号先经过衰减网络调到比较器的参考电平附近,再触发。但74HC14对付绝大多数晶振信号已经足够,性价比最高。
还有一个细节:信号输入端必须加钳位保护。被测晶振电路可能有不同的电压域,如果测量模块是3.3V供电,被测信号却是5V电平,直接接进去会损坏施密特触发器。我在输入端加了一对二极管钳位到电源轨,再串一个电阻限流,基本能扛住大多数误接情况。
4.2 隔离电源模块与数字隔离器:电气隔离的两件事
隔离要做两件事:电源隔离和信号隔离。
电源隔离我用的是5V转5V的隔离电源模块,这一类的典型封装是DIP-8,两侧各出两个引脚,中间有隔离带。选型时我最看重的是隔离耐压和纹波:隔离耐压至少1kV DC,输出纹波尽量小。到手之后先拿示波器实测纹波,如果超过预期,后面就必须加LDO。
信号隔离我用的是数字隔离器。最初也考虑过光耦,但光耦有两个问题:传输延迟大且随温度变化,高速信号整形之后经过光耦,边沿容易变形;另外光耦的电流传输比(CTR)一致性差,批量做模块时每一路都需要微调。数字隔离器用二氧化硅绝缘栅做隔离,延迟在几纳秒到十几纳秒量级,边沿陡峭,方向也灵活。我用的是一路带使能的型号,单向传输,正好匹配"被测信号 -> 隔离 -> 计数器"的路径。
顺带提一句:数字隔离器需要两侧分别供电。如果前端供电直接取自被测系统,那隔离就白做了。我让前端侧电源完全来自隔离电源模块的输出,绝不从后端借电,这是电源隔离的关键纪律。
4.3 测量基准时钟:TCXO为什么比普通晶振更适合做参考
等精度测量的精度上限,直接取决于参考时钟。如果参考时钟本身偏差20ppm,不管测量算法多精确,结果的上限就锁死在那里。
普通的无源晶振加负载电容,频率稳定度通常在±10ppm到±30ppm之间,并且随温度变化明显,做产品级测量模块的基准远远不够。我选的是温补晶振(TCXO),标称频率10MHz,频率稳定度±0.5ppm左右,工作温度范围内温漂控制在很小范围。还有更好的恒温晶振(OCXO),那玩意儿启动预热就得几分钟甚至十几分钟,功耗也高,作为一个便携测量模块用不上。
TCXO在模块里的角色是"测量标尺"。为了减小负载变动对TCXO频率的影响,我在它输出后面加了一级缓冲门,先把信号隔离出来,再分两路:一路给计数器做参考时钟,一路给面板上的测试点做自检信号。这样调试时不用外接仪器就能验证模块自身的基准是否正常。
5. 从零搭一个可复用的频率测量模块
5.1 模块拆分与信号流向
整个模块我拆成四个功能区:
- 前端信号调理区:BNC(或排针)输入,钳位保护,74HC14施密特整形。
- 隔离区:被测信号经过数字隔离器后进入后端系统;同时隔离电源模块为前端单独供电。
- 计数核心区:单片机的一组定时器/计数器通道,分别接被测信号和10MHz参考信号。
- 交互与输出区:OLED显示屏,按键,以及一个串口输出,方便接电脑记录数据。
信号流向是:被测晶振输出 -> 钳位保护 -> 施密特整形 -> 数字隔离器 -> 单片机计数器输入;参考TCXO -> 缓冲门 -> 单片机另一引脚。两边在计数器内部对齐采样。
5.2 元器件清单与关键参数一览
| 类别 | 主要器件/参数 | 说明 |
|---|---|---|
| 前端整形 | 74HC14施密特触发器 | 六路,两路并联提高驱动 |
| 钳位保护 | 二极管对 + 1kΩ串联电阻 | 防止误接高压 |
| 隔离电源 | 5V转5V隔离模块,纹波尽量小 | 输入端加π型滤波 |
| 信号隔离 | 数字隔离器,单向,延时<20ns | 避免光耦一致性差的问题 |
| 参考时钟 | 10MHz TCXO,±0.5ppm | 做等精度测量的时间基准 |
| 后端稳压 | 3.3V LDO | 隔离输出经LDO给前端整形电路供电 |
| 主控 | 普通Cortex-M系列单片机 | 内置计数器/定时器,主频≥72MHz |
| 显示 | 0.96寸OLED | 显示频率、周期、占空比等 |
参数上有两个容易忽略的点:一是主控的主频必须高于参考时钟频率,这样才能保证计数不丢;二是74HC14在实际使用中,两路并联输入可以降低信号源的负载效应,但并联之后输入电容会加倍,对晶振电路的影响也会变大,所以我在输入级只用一路,不做并联。
5.3 调试顺序:供电验证、隔离验证、测量验证
硬件焊接完成之后,我按下面的顺序调试,基本可以快速定位问题:
- 供电压差检查:不焊接任何晶振输入,先测量隔离电源两端的电压、后端LDO的输出电压。如果后端电压正常但前端电压不准,大概率是隔离电源负载没接对。
- 隔离验证:用万用表测前端地和后端地之间的阻抗,正常应该开路。如果测出短路,说明PCB布局里隔离区的地被连到一起了,这种情况必须返工,级别是灾难性的。
- 自检模式:把TCXO信号通过另一个通道引到施密特触发器的输出端,让单片机测自己的参考时钟。如果测出的频率不等于10MHz,先检查TCXO是否正常起振,再检查缓冲门和布线。
- 实际测量:接一个已知频率的信号源,比如用开发板输出一个精准的8MHz时钟,先验证模块读数;再接实际的晶振电路测量。
这个顺序的核心逻辑是:先证明电源系统干净,再证明隔离有效,最后才信计数结果。顺序反了,数据永远是矛盾的。
5.4 固件里的等精度测量实现骨架
固件实现等精度测量的思路不复杂,关键是中断里处理计数溢出。下面是一个C语言骨架,以Cortex-M的定时器为例:
// 简化版等精度测量逻辑 volatile uint32_t measure_pulses = 0; // 被测信号计数 volatile uint32_t ref_pulses = 0; // 参考时钟计数 volatile uint8_t gate_status = 0; // 0=空闲 1=测量中 void EXTI_IRQHandler(void) { // 被测信号上升沿触发 if (gate_status == 1) { measure_pulses++; ref_pulses = TIM2_GetCounter(); // 读取参考时钟计数值 // 如果闸门已到设定边沿数,关闭闸门 if (measure_pulses >= GATE_EDGES) { gate_status = 0; // 计算频率 = measure_pulses * Fref / ref_pulses } } }实际工程中,参考时钟计数值要处理定时器溢出翻转,一般用32位计数器并开启溢出中断,把高16位和低16位拼接起来。闸门结束的判断不是按时间,而是按被测信号的边沿数——这正是等精度测量的核心:闸门开启到关闭,恰好包含了整数个被测信号周期,所以测量不存在周期截断误差。
我实测下来,10MHz参考时钟 + 1000个被测信号边沿的闸门,分辨率可以做到大约1Hz@1MHz输入,也就是对1MHz信号能分辨到1ppm级别。这对晶振筛选已经完全够用了。
6. 校准与实测数据:隔离前后结果差多少
6.1 先建立参考:用标准频率源完成粗调
模块装好之后,第一件事不是测晶振,而是校准模块本身。我用一台信号发生器输出10MHz标准频率,直接接到模块输入端。如果模块读数不是10.000000MHz,就说明参考时钟、计数器链路有问题。
此时要分清两个环节:
- 如果读数偏了固定比例,比如读出来是9.999000MHz,差1000ppm,说明参考TCXO频率偏了。可以用信号发生器做基准,在固件里写入一个修正系数。
- 如果读数跳来跳去不稳定,说明计数链路有问题,需要回到第5.3节的调试步骤重查。
粗调之后,再用GPS驯服钟或者铷钟输出的标准10MHz做精调。没有这些设备的话,至少用信号发生器配合频率计校准一次,也能达到足够的精度。关键是校准要定期做,TCXO虽然温漂小,但长时间使用后频率仍会缓慢偏移。
6.2 误差来源逐项拆解
等精度测量的误差来源主要有三个:
- 参考时钟误差:这是系统误差的上限。TCXO标称±0.5ppm,实际使用中还随温度和年老化漂移,手册上通常给出"年老化±1ppm"这一项。如果长时间不做校准,模块整体精度会被老化拖累。
- 触发误差:被测信号边沿带有噪声时,整形电路触发的时刻会抖动,导致闸门开启和关闭时刻对应到的边沿不完全精确。噪声越大,触发抖动越大。
- 量化误差:虽然等精度测量消除了周期截断误差,但参考时钟的计数本身仍然有±1个脉冲的量化误差。这个误差与闸门时间成反比,所以实际使用中闸门边沿数不能取得太少。
还有一个容易被忽略的误差源是温度漂移。模块长时间通电,TCXO和模拟器件发热后特性变化,读数会缓慢偏移。所以批量测量晶振时,我习惯把模块先预热十五分钟再开始量,数据稳定很多。
6.3 三组实测数据对比表
为了验证隔离的作用,我用同一颗标称12.000MHz的无源晶振做了三组测量:
| 测量条件 | 测量结果 | 分辩率 | 现象 |
|---|---|---|---|
| 直接共地,开发板电源 | 11.9984MHz,跳动 | ±几十Hz | 读数每秒漂,不稳定 |
| 共地但增加去耦电容 | 11.9991MHz,稍稳 | ±10Hz左右 | 仍周期性跳动 |
| 隔离电源 + 隔离信号 | 11.99932MHz,稳定 | ±2Hz左右 | 连续读30分钟,末位小幅变化 |
同样一颗晶振,隔离前后读数差了接近1kHz,这是一个很震撼的结果。说明之前的测量误差主要来自测量系统对振荡电路的干扰,而不是晶振本身偏移。后来把这颗晶振放到恒温环境下用高精度频率计复核,读数约11.99931MHz,与隔离测量结果高度吻合。
其实想想也能理解:在共地状态下,测量模块的开关噪声和被测量电路的负载效应叠加到振荡电路上,让晶振的实际振荡频率发生了偏移。测量模块如果不能做到和被测量电路的"低干扰耦合",那它读到的一切数据都值得怀疑。
7. 踩过的坑:从跳数到漂移的完整排查链路
7.1 探头一搭上去频率就掉几十赫兹
第一个遇到的坑,是模块自带的前端电路做成了一根短引线,直接用这个引线去搭晶振引脚。结果晶振振荡频率立刻掉了,怎么调补偿都没用,读数也非线性地变。
原因很简单:任何测量前端电路都有输入电容。晶振振荡电路对负载电容极其敏感,外部电路每多接入1pF,振荡频率都会不同程度地向低偏移。对于一个原本设计负载电容为20pF的晶振电路来说,引线加芯片引脚的几pF寄生电容,可能引入几十甚至上百ppm的偏差。
解决办法是测量时尽量减小前端和被测点的耦合:输入端做成非常短小的焊点,或者直接用细探针点测;如果要更精确地测晶振的固有频率,不能直接搭在振荡电路上,而是通过缓冲输出端取信号,很多晶振设计的振荡电路后面本来就有一个缓冲输出脚。
7.2 计数结果"跳舞":罪魁是隔离电源纹波
另一个坑,是模块刚做好时,测量结果一直在预定值附近 ±30Hz 波动。我一开始怀疑是等精度测量的闸门时间不够,把闸门边沿数从1000提到10000,结果波动依旧,说明不是量化问题。
拿示波器去看前端施密特触发器的输出波形,发现每个上升沿附近都有一段"毛刺"抖动。再看隔离电源输出端,纹波峰峰值接近80mV,频率约几百kHz。这些纹波通过供电网络耦合到整形电路,使输入信号的触发电平边缘出现多脉冲。
解决方法是两级滤波:隔离电源输出先过π型LC滤波(几十μH的电感和几十μF的电容),再进LDO,LDO出去之后再就近放一个0.1μF的高频去耦电容。改完之后纹波降到1mV以下,跳数现象立刻消失。
7.3 排针接触不良导致偶尔多计一个数
还有一次,测量结果偶尔会跳出一个异常大的数据,比如正常读数旁边突然出现一个多出几十kHz的值。一开始怀疑是干扰,但用示波器也没抓到明显的异常毛刺。
后来发现是信号输入通道用的排针插座接触不良。排针和杜邦线之间氧化、虚接,导致信号在松动的时候瞬间断开,等精度测量的闸门逻辑被破坏,计数结果自然就错了。换成焊接直连之后,这种情况再没出现过。
这个坑告诉我,测量模块作为"标尺",自身的连接可靠性必须高于被测系统。任何连接件都要考虑氧化、振动这些因素,锁紧端子比排针可靠得多。
7.4 系统性地排查:一段一段隔离,一层一层换数据
最后分享一个通用排查方法。遇到"读数对不上"的问题,我的习惯是按下述链路逐级排查:
- 自检:先测模块自己的参考时钟,不准就查TCXO和相关电路。
- 旁路隔离:临时把数字隔离器改成直连,如果读数变好,说明隔离环节没做好,往往是前端供电不干净;如果读数不变,说明问题在后端计数。
- 换基准:用信号发生器替代被测晶振输出,如果信号发生器输出已知准确的频率而模块仍然报偏差,参考时钟校准。
- 缩短链路:拿一根短粗的导线把被测信号直连到整形输入,绕过所有接插件和长走线,如果数据变稳定,接插件和走线是怀疑对象。
整个过程唯一的原则就是:每次只改一个变量。硬件调试最忌讳同时改两三处,否则出了问题你根本不知道是哪一步引入的。我踩过这个坑,改完隔离又动了一下软件参数,结果数字还是不对,排查了整整一个下午,最后发现是软件里一个数组越界把基准频率变量改掉了——这完全是浪费时间的教训。
做晶振频率测量模块这件事,我最大的体会是:测频的硬件门槛其实不高,难的是让被测量对象不受测量行为的影响。电源隔离、前端整形、参考时钟选型,每一件事都在围绕一个目标——让模块变成一块诚实可信的"标尺"。模块搭好之后,我又顺手加了个串口数据输出功能,写了个简单的上位机脚本,可以批量记录晶振频率的变化曲线。温度每升高一度,频率怎么变,老化了多久漂了多少,这些数据对看晶振的真实品质非常有参考价值。如果你也想自己搭一个频率测量模块,不必照搬我的方案,但建议把电源隔离和基准时钟优先做好——这两件事决定了你的模块到底是"测到了晶振的频率"还是"测到了模块自己的噪声"。