TCXO 温度补偿记录:TJ X3 38.4MHz
这篇记录 TJ X3 晶体(38.4 MHz)七点温补到目前为止最好的一次结果:10/20 换上的第三批(一次项调小的晶体)5 颗,
先用七温采集数据按原来的最小二乘目标(相对 25°C 钉零)算了一套寄存器并验证,然后用同一份采集数据、把最小二乘改成
允许直流偏移(free_dc)重算寄存器,再上机做了一次单独的 EFOF 回调 + 升温验证。下文以 free_dc 那次为主。
1. 概况
| 项目 | 内容 |
|---|---|
| 晶体 | TJ X3,F0 = 38.4 MHz,工作范围 −30~85°C(配置名/输出目录沿用 KDS26M,实际不是 KDS 晶体) |
| 芯片 | 第三批 5 颗,CH1~CH5(晶体一次项调小,VCCAL 跨度 0.31~0.45 V,前两批 0.5~0.8 V) |
| 日期 | 2026-10-20 |
| 七温采集 run_id | 20261020_113152_405846(tcxo_buchang_7ch_data_20261020_113152_405846.csv) |
| 原算法验证 | 同 run:tcxo_buchang_7ch_validation_20261020_113152_405846.csv(least_squares_reference = anchor_25) |
| free_dc 验证(主体) | run_id 20261020_205518_382448:efof_trim_20261020_205518_382448.csv + tcxo_efof_validation_20261020_205518_382448.csv |
| 采集温度点 | −30 / −20 / 5 / 25 / 60 / 75 / 85°C,自适应保温(VC 和频率都稳定才采) |
| 验证方式 | 写入寄存器 → 25°C 用 EFOF 把频率拉回 F0 → 升温验证 2°C/min,−30→85°C,ppm 相对 25°C |
关键配置:
- 芯片设置:EIOS = 0x05,EVRF = 0x02,EROF 在 25°C 逐颗调(初值 0x30)。
- 算法入口
_calibrate_channel_extended:least_squares_reference = free_dc:最小二乘带常数项,直流偏移留给 25°C EFOF 回调去消,ET0C 按峰峰值选;
旧做法 anchor_25 是把 25°C 误差钉成 0。register_search_radius = 0:连续解直接四舍五入取整,不做 ±N 码整数搜索。- ET0C 温移:
et0c_shift_model = table_u,温移表et0c_shift_table_KDS26M_7ch_20261014.csv
(候选码 0x14~0x3C),U 表et0c_u_KDS26M_7ch_20261014.csv。 - 虚拟点模板:
vpoint_template_KDS26M_full_20261018.csv(−15~65°C 共 14 点,含低温段)。
7 个采集点拟合出各分量后叠加模板,得到虚拟点,和采集点一起参与最小二乘。 - 码响应:共用码响应表
code_response_table_TJX3_20261017.csv(旧批 7 颗平均,芯片间标准差 ≤2.5 mV),
不逐颗采码响应,采集省约 3.3 小时。 - exog_gain 1.0147,五阶拟合,f1 形状修正不开。
2. 补偿结果

升温验证(2°C/min),频率误差相对 25°C,5 颗叠在一张图上。
| 通道 | 全温峰峰 (ppm) | 5~60°C 峰峰 (ppm) | 最大 |误差| (ppm) |
|---|---|---|---|
| CH1 | 0.34 | 0.22 | 0.24 |
| CH2 | 0.64 | 0.54 | 0.37 |
| CH3 | 0.49 | 0.27 | 0.36 |
| CH4 | 0.33 | 0.30 | 0.22 |
| CH5 | 0.41 | 0.37 | 0.21 |
| 平均 | 0.44 | 0.34 | 0.28 |
同一份采集数据,旧目标 anchor_25 和 free_dc 的验证对比如下:

| 通道 | anchor_25 全温 / 中温 / 最大 | free_dc 全温 / 中温 / 最大 |
|---|---|---|
| CH1 | 0.32 / 0.28 / 0.23 | 0.34 / 0.22 / 0.24 |
| CH2 | 0.65 / 0.52 / 0.36 | 0.64 / 0.54 / 0.37 |
| CH3 | 0.54 / 0.35 / 0.29 | 0.49 / 0.27 / 0.36 |
| CH4 | 0.68 / 0.57 / 0.41 | 0.33 / 0.30 / 0.22 |
| CH5 | 0.44 / 0.44 / 0.30 | 0.41 / 0.37 / 0.21 |
| 平均 | 0.53 / 0.43 / 0.32 | 0.44 / 0.34 / 0.28 |
和之前几次验证(各批平均)放在一起比:
| 验证 | 全温峰峰 | 5~60°C 峰峰 | 最大 |误差| |
|---|---|---|---|
| 10/19 旧批,全温模板 + 四舍五入 | 0.62 | 0.42 | 0.33 |
| 10/19 新批,四舍五入 + 共用码响应表 | 0.77 | 0.40 | 0.49 |
| 10/20 第三批,同一流程(anchor_25) | 0.53 | 0.43 | 0.32 |
| 10/20 第三批 + free_dc | 0.44 | 0.34 | 0.28 |
3. 七温采集数据
采集用默认寄存器,每个温度点的 VCCAL 是把频率拉回 F0 所需的 VC(V),斜率是该点的拉偏斜率(ppm/V)。
VCCAL (V)
| 温度 (°C) | CH1 | CH2 | CH3 | CH4 | CH5 |
|---|---|---|---|---|---|
| −30 | 0.5447 | 0.4303 | 0.5840 | 0.5335 | 0.6436 |
| −20 | 0.3673 | 0.2788 | 0.3902 | 0.3601 | 0.4340 |
| 5 | 0.2690 | 0.2245 | 0.2734 | 0.2656 | 0.2990 |
| 25 | 0.3945 | 0.3840 | 0.3808 | 0.3997 | 0.3971 |
| 60 | 0.6114 | 0.6712 | 0.5664 | 0.6135 | 0.5592 |
| 75 | 0.5122 | 0.5996 | 0.4583 | 0.5071 | 0.4355 |
| 85 | 0.3312 | 0.4336 | 0.2719 | 0.3217 | 0.2333 |
拉偏斜率 (ppm/V)
| 温度 (°C) | CH1 | CH2 | CH3 | CH4 | CH5 |
|---|---|---|---|---|---|
| −30 | 25.76 | 33.31 | 23.58 | 33.42 | 27.21 |
| −20 | 36.33 | 34.88 | 38.22 | 30.23 | 32.59 |
| 5 | 33.00 | 32.97 | 31.42 | 30.89 | 32.42 |
| 25 | 32.32 | 28.37 | 32.87 | 28.46 | 32.32 |
| 60 | 27.80 | 25.13 | 29.21 | 28.29 | 27.10 |
| 75 | 28.03 | 30.99 | 28.65 | 30.41 | 30.57 |
| 85 | 30.33 | 30.19 | 30.47 | 31.73 | 32.12 |
实际温度和设定值相差不超过 0.2°C,35 个点状态都是 OK,都在扫描区间内(bracketed)。

4. 计算的寄存器值
默认寄存器(采集时):EXOG 0x45、EV1G 0x31、EV4G 0x28、EV5G 0x29、ET0C 0x2E、EFOF 0x10、EIOS 0x05、EVRF 0x02、
EROF 0x30(初值,25°C 逐颗调)、EMOD 0x00、EVCC 0x00。
free_dc 寄存器(最终上机、验证用的这套),EFOF 是写入后 25°C 回调得到的:
| CH | EXOG | EV1G | EV4G | EV5G | ET0C | EFOF |
|---|---|---|---|---|---|---|
| CH1 | 0x42 | 0x20 | 0x05 | 0x2A | 0x2D | 0x12 |
| CH2 | 0x46 | 0x29 | 0x05 | 0x23 | 0x2C | 0x13 |
| CH3 | 0x40 | 0x1C | 0x02 | 0x2A | 0x2C | 0x16 |
| CH4 | 0x45 | 0x1F | 0x04 | 0x25 | 0x2A | 0x12 |
| CH5 | 0x44 | 0x17 | 0x20 | 0x27 | 0x2A | 0x13 |
作为对照,同一份采集数据用 anchor_25 算出的寄存器(tcxo_buchang_7ch_result_20261020_113152_405846.csv):
| CH | EXOG | EV1G | EV4G | EV5G | ET0C | EFOF |
|---|---|---|---|---|---|---|
| CH1 | 0x43 | 0x1F | 0x02 | 0x26 | 0x2B | 0x12 |
| CH2 | 0x44 | 0x2A | 0x06 | 0x26 | 0x2D | 0x13 |
| CH3 | 0x41 | 0x1C | 0x01 | 0x29 | 0x2B | 0x16 |
| CH4 | 0x49 | 0x1E | 0x00 | 0x01 | 0x27 | 0x14 |
| CH5 | 0x46 | 0x16 | 0x23 | 0x24 | 0x28 | 0x13 |
两套比较:大多数通道只差 1~4 码。CH4 改动最大:EXOG 0x49→0x45,EV5G 0x01→0x25,ET0C 0x27→0x2A。
它的全温峰峰也改善最多,0.68→0.33。
5. 结论
- 一次项调小的晶体最好补:VC 跨度小,原流程(anchor_25)全温平均 0.53 ppm,已经好于前两批的 0.62 / 0.77;
前两批 −10°C 附近的鼓包也消失了(−0.18~+0.07)。 - 最小二乘允许直流偏移(free_dc)有效:直流偏移交给 25°C EFOF 回调,ET0C 按峰峰值选。用同一份采集数据重算后上机,
5 颗平均全温 0.53→0.44、5~60°C 0.43→0.34、最大误差 0.32→0.28 ppm。效果和"中温加权 ×2"相当,但不用人为定权重。
机台配置已改为 free_dc。 - 剩余误差:CH2 最差(全温 0.64),−22°C 附近 −0.37、0~15°C 整体偏负、45°C +0.27;CH3 在 75~80°C 有 +0.36。
中温凹凸(10~15°C 低、40~45°C 高)的大小和 EXOG(公共增益)有关,约每码 +0.026 ppm,是模型误差,还在查。 - 升温验证本身带动态误差(旧批静态核对,报告 2.14):升温时 25°C 参考点比静态低 0.10~0.15 ppm,
以它为参考,45°C 被抬高约 +0.1。所以验证曲线上 45°C 的凸起有一部分是升温造成的。
浙公网安备 33010602011771号