TCXO 温度补偿记录:TJ 20MHz(−40~85°C)

本文记录 TJ 20 MHz 晶体配同一颗 TCXO 补偿 IC 的补偿过程,要求从 −40°C 开始补。前后在机台上补偿、验证了 6 轮,又做了一次整夜静态重采,用来找剩余凹凸的来源。最终用第六轮:6 颗平均 全温峰峰 0.54 ppm,5~60°C 峰峰 0.36 ppm,最大误差 0.33 ppm(都相对 25°C)。

1. 概况

项目 内容
晶体 TJ 20 MHz,7 颗(CH1~CH7),10/27 上料
有效样本 CH1~CH6。CH7 多次寄存器写入失败,被隔离,不计入统计
采集温度点 −40 / −25 / 5 / 25 / 60 / 75 / 85 °C(七点,量产也只用这 7 个点)
验证 −40→85°C 升温验证(2°C/min),每颗约 90 个点,频率误差取相对 25°C 的值
关键配置 F0 = 20 MHz;EIOS = 0x04;25°C 逐颗调 EVRF 让 VREF ≈ 1.6 V;写完寄存器后在 25°C 用 EFOF 拉回 F0
默认寄存器 EXOG 0x25、EV1G 0x22、EV4G 0x28(+8)、EV5G 0x29(+9)、ET0C 0x2E
算法 _calibrate_channel_extended;最小二乘带常数项(free_dc,直流由 25°C EFOF 回调吸收);7 个采集点 + 18 个虚拟点等权;ET0C 逐码试,每个 ET0C 下解最小二乘后在 ±2 码内穷举,按峰峰值选

和 38.4 MHz 比,20 MHz 的拉偏斜率大约大一倍(42~66 ppm/V,38.4M 约 30 ppm/V)。所以 1 mV 的 VC 误差就是 0.05 ppm,5 mV 就是 0.25 ppm,对 mV 级的精度要求更高。

2. 最终结果(第六轮)

第二轮(只用 7 点 + 旧模板)和第六轮(最终方案)对比,曲线都在 25°C 归零:

第六轮逐颗(run_id 20261029_151254_485969,单位 ppm):

通道 全温峰峰 5~60°C 峰峰 最大 |误差|
CH1 0.51 0.24 0.30(−8.1°C)
CH2 0.54 0.36 0.28(−38.4°C)
CH3 0.39 0.39 0.25(46.2°C)
CH4 0.85 0.50 0.48(−37.2°C)
CH5 0.54 0.34 0.34(−6.2°C)
CH6 0.41 0.32 0.33(−7.5°C)
平均 0.54 0.36 0.33

CH4 是这一批的个例:它自己在 −37°C 有一个尖峰,又整体偏负。不算 CH4,全温平均 0.48 ppm。

第六轮寄存器:

CH EXOG EV1G EV4G EV5G ET0C
CH1 0x23 0x1F 0x21 0x02 0x2B
CH2 0x24 0x26 0x21 0x02 0x2B
CH3 0x25 0x22 0x22 0x02 0x2B
CH4 0x29 0x1F 0x24 0x03 0x27
CH5 0x23 0x22 0x01 0x01 0x2D
CH6 0x23 0x21 0x00 0x01 0x2B

(4G/5G 是带符号增益码:0x2x 为正、0x0x 为负,0x00 和 0x20 都是零。)

3. 各轮演进

轮次 改动 全温 5~60°C 最大
第二轮 7 点 + KDS26M 中温模板 0.84 0.31 0.54
第三轮 码响应偏离进最小二乘 0.97 0.31 0.65(否决)
第四轮 模板加 −37~−28°C 四个低温虚拟点 0.54 0.46 0.36
第五轮 模板 v2(只有 need)+ 搜索半径 2 0.58 0.42 0.40
第六轮 码响应表 v2(零码台阶)+ 模板 v3 0.54 0.36 0.33

  • 第二轮:−35~−28°C 有 −0.6~−1.0 ppm 的坑。这一段夹在 −40 和 −25 两个采集点之间,七点拟合看不到。
  • 第四轮:在模板里加 −37/−34/−31/−28°C 四个虚拟点的 need 修正(由前两轮验证统计),坑被填平。但中温 45°C 的鼓包变成了短板。
  • 第六轮:同一颗芯片两轮验证相减,晶体和 need 抵消,只剩寄存器模型误差(配对法)。由此查出 4G/5G 只要离开零码,VC 就多一个随温度变的"台阶":25°C 约为 0,两端 −2~−7 mV。这和零码静态探测的结果独立对上。把台阶加进码响应表后,配对误差 3.6 → 2.2 mV,need 统计的离散减半。

另外离线核对过几种思路,都排除了:

  • 全码空间按峰峰值挑码(约 29 万组):挑出来的码和第六轮完全相同,说明算法已经找到模型的全局最小。
  • ET0C 按 0.1°C 细调:全温只从 0.54 降到 0.49,−10/45°C 的鼓包不是 ET0C 没对准。
  • 寄存器连续可调(不取整):模型峰峰只从 0.41 降到 0.32,量化只占约 0.09 ppm。

4. 七温采集数据(第二轮,补偿用的这份)

run_id 20261028_004329_821908,实际温度和设定值相差不超过 0.2°C。

VCCAL (V)

温度 (°C) CH1 CH2 CH3 CH4 CH5 CH6
−40 0.6410 0.6131 0.6419 0.6528 0.6457 0.6547
−25 0.4321 0.4107 0.4325 0.4413 0.4348 0.4410
5 0.3351 0.3313 0.3339 0.3402 0.3338 0.3372
25 0.4125 0.4256 0.4200 0.4257 0.4164 0.4189
60 0.5496 0.5880 0.5709 0.5720 0.5632 0.5597
75 0.5102 0.5577 0.5318 0.5167 0.5255 0.5178
85 0.4193 0.4710 0.4405 0.4211 0.4363 0.4247

拉偏斜率 (ppm/V)

温度 (°C) CH1 CH2 CH3 CH4 CH5 CH6
−40 56.4 59.4 48.8 48.9 59.3 44.9
−25 53.9 49.6 56.9 48.9 43.3 56.9
5 53.2 47.2 47.2 65.9 54.2 53.4
25 53.7 47.4 56.4 47.2 48.3 47.6
60 50.7 52.1 51.8 52.4 49.6 51.9
75 47.8 46.1 52.8 51.8 49.1 51.8
85 48.6 52.9 53.2 42.1 48.3 54.1

右图黑线是模板 v3 的 need(真值 − 七点拟合),−10/45°C 各约 −5 mV。

5. 整夜静态重采:鼓包从哪里来

为了弄清 −10°C 和 45°C 的鼓包,整夜做了一次静态重采:

  • 7 个采集点按同样流程重采一遍;
  • 另加 −35、−30、−10、−5、15、35、45、50°C 八个额外点,每点用频率测 VCCAL(调 EFOF 找到 F0 时的 VC),同时读 IC 内部各分量。

采集点重复性:−25~85°C 两次差 ≤1.2 mV RMS;−40°C 系统性高 4.6 mV。−40°C 处 VCCAL 每度变化约 17 mV,4.6 mV 只相当于 0.27°C 的温度差。−40 这个采集点对温度极敏感。

晶体 VCCAL 7 点拟合在额外点上的误差(实测 − 7 点 5 阶拟合,6 颗平均,mV):

−35 −30 −10 −5 15 35 45 50
+3.1 +3.8 −2.5 −1.8 +1.6 −0.7 −0.7 +0.1

45°C 晶体本身只差 0.7 mV,解释不了约 +0.2 ppm(约 5 mV)的鼓包。

IC 分量在额外点上的误差(默认码下读 IC 内部 VC,实测 − 7 点拟合):

  • 45°C:vc31、vc4310 比拟合高约 5 mV,vc5310 高约 8 mV。
  • −10°C:vc5310 高约 13 mV。
  • 6 颗非常一致(45°C vc31 +4.7~+6.9 mV),是 IC 自身的曲线形状。

结论:算法用 7 点拟合的分量预测"这组寄存器会给出多少 VC"。在 45°C,真实分量比拟合高约 5 mV,实际 VC 就偏高,出现正鼓包。鼓包来自 IC 分量在采集点之间插值不准,不是晶体,也不是升温时晶体和 IC 的温差。 理由有两条:

  1. 低温段静态读频率和升温验证对比,差 ≤0.06 ppm。
  2. 温差造成的误差方向应和 dVCCAL/dT 相反,而 −10°C 的实际方向和它对不上。

验证这个结论:把分量偏离放进模板的分量列(模板 v4),再用前六轮验证重新统计 need。45°C need 从 −5.6 mV 变成 −0.4 mV,−10°C 从 −4.5 变成 −2.3,和静态实测的晶体 need(−0.7 / −2.5)对上了。两套独立数据得到同一个结论。

离线预测 v4 是 0.52 / 0.32 / 0.31 ppm(v3 0.54 / 0.36 / 0.33),收益太小,没有再上机。

6. 小结

  • 20 MHz 拉偏大,1 mV ≈ 0.05 ppm。7 点补偿到全温 0.5 ppm 左右,剩下的都是几个 mV 级的误差。
  • 低温坑(−35~−28°C):用模板低温虚拟点的 need 修正压平了。
  • 4G/5G 零码台阶:离开零码 VC 就多一个随温度变化的台阶。加进码响应表后,模型和 need 都更准,中温和最大误差是这一批最好的。
  • 中温鼓包(−10/45°C):根源是 IC 分量在采集点之间偏离 7 点拟合(约 5 mV,6 颗一致)。用模板可以修,但现有寄存器分量的形状组合不出这么局部的凹凸,剩余约 0.3 ppm 是这套 IC + 7 点方案的极限。
  • −40°C 采集点:0.3°C 的温度差就是 5 mV。要再提高,需要 −40°C 保温更充分或按实测温度修正。
  • 虚拟点模板和码响应表要配套,每版都另存,换晶体时重新统计。
posted @ 2026-10-30 11:14  wangxiao8998  阅读(2)  评论(0)    收藏  举报