内部校准与外部校准
光电二极管的原始输出不是 dBm,热敏电阻的原始输出也不是 °C。传感器的原始读数总要在某个环节转换成工程量值, SFF-8472 允许这一转换在模块内部完成,也允许在主机端完成,所用的常数由模块提供。这一步出错,正是交换机对一个工作完全正常的模块显示荒谬 DDM 数值的常见原因。
两种校准模式
| 模式 | 由谁声明 | 由谁换算 | 监测字节中存放的内容 |
|---|---|---|---|
| 内部校准 | A0h 字节 92 位 5 | 模块的微控制器 | 标准单位下的最终值(1/256 °C、100 µV、2 µA、0.1 µW) |
| 外部校准 | A0h 字节 92 位 4 | 主机 | 原始 A/D 计数值;主机套用 A2h 56–95 的常数 |
几乎所有现代模块都是内部校准的。外部校准的模块多是较旧或成本优化型设计,在跳过换算步骤的主机上,其数值会显示为无意义的乱码。
外部校准常数:A2h 字节 56–95
| 字节 | 常数 | 格式 | 适用对象 |
|---|---|---|---|
| 56–75 | Rx_PWR(4) … Rx_PWR(0) | 五个 IEEE-754 单精度浮点数 | Rx 功率(四阶多项式) |
| 76–77 | Tx_I slope | 无符号定点数 8.8 | Tx 偏置电流 |
| 78–79 | Tx_I offset | 有符号 16 位 | Tx 偏置电流 |
| 80–81 | Tx_PWR slope | 无符号 8.8 | Tx 功率 |
| 82–83 | Tx_PWR offset | 有符号 16 位 | Tx 功率 |
| 84–85 | T slope | 无符号 8.8 | 温度 |
| 86–87 | T offset | 有符号 16 位 | 温度 |
| 88–89 | V slope | 无符号 8.8 | Vcc |
| 90–91 | V offset | 有符号 16 位 | Vcc |
| 92–94 | 保留 | — | — |
| 95 | CC_DMI | 字节 0–94 的校验和 | — |
换算公式
Rx_PWR (µW) = Rx4·raw⁴ + Rx3·raw³ + Rx2·raw² + Rx1·raw + Rx0
Tx_I (µA) = Tx_I_slope · raw + Tx_I_offset
Tx_PWR (0.1 µW) = Tx_PWR_slope · raw + Tx_PWR_offset
T (1/256 °C)= T_slope · raw + T_offset
V (100 µV) = V_slope · raw + V_offset
内部校准的模块会忽略这些常数;不少厂商仍会填入恒等值(斜率 1.0、偏移量 0、Rx 多项式 0,0,0,1,0),这样即使主机照样套用换算,也能得到正确结果。
平均功率与 OMA
A0h 字节 92 位 3 表明 Rx 功率的表示方式:平均功率(1)或 OMA(光调制幅度,0)。绝大多数模块报告的是平均功率;OMA 出现在部分多模以太网光模块上,这类标准正是按 OMA 规定灵敏度的。把 OMA 数值与按平均功率给出的灵敏度规格相比较,最多可能相差 ~3 dB。
校准问题的表现
| 现象 | 可能原因 |
|---|---|
| 温度显示 0 °C 或 −128 °C,Vcc 显示 0.00 V | 主机未做换算,直接读取外部校准模块的原始计数值 |
| Rx 功率高得不合理(+10 dBm)或始终为 −40 dBm | 校准模式判断错误,或常数被清零 |
| 同一模块在两种交换机型号上数值差异巨大 | 一台主机遵循字节 92 的声明,另一台默认按内部校准处理 |
| 同一批次每个模块的 Tx 功率都相同 | 与校准无关,是恒定不变的 Tx 值(DDM 电平) |
CodingBox 中的呈现
CodingBox 读取字节 92,在模块声明外部校准时套用其校准常数,并同时显示原始值与换算值,这样交换机上显示异常的模块就能在工作台上得到判断。常数区 56–95 可在 EEPROM editor 中编辑,CC_DMI 会自动重新计算,适用于修复校准区被覆写的模块。