1. 光模块测试为什么要把供电单独拎出来
光模块测试台上,最容易被忽视的不是误码仪也不是眼图仪,而是给模块供电的那台可编程直流电源。AT66333A 这类三路可编程直流电源,看起来只是把 3.3V 送到模块 Vcc 脚,实际却决定了上电时序、限流保护、功耗测量、批量老化能不能做得干净。我在光模块产线和实验室之间来回跑过几年,见过太多因为电源设定粗放导致的误判:眼图边界漂、灵敏度测试重复性差、DDM 读数跳变,最后追到电源纹波或线损上。这篇就按我实际搭过的一套方案,把 AT66333A 可编程直流电源在光模块测试中的应用拆开讲,从通道分配、接线、限流计算,到自动化脚本和排查表,尽量让刚入行的测试工程师也能照着复现。
很多测试工程师第一次上手光模块测试,注意力都放在光功率计、衰减器、误码仪和示波器上,电源往往只被当成“给电的盒子”。可光模块内部并不是一块纯数字芯片,它同时有激光驱动器、跨阻放大器、时钟数据恢复、MCU、温度传感器、DC-DC 转换,有些型号还有半导体制冷器。Vcc 上的任何纹波、压降、慢上电、浪涌,都可能被这些模拟环节放大,最后表现在消光比、接收灵敏度、告警门限或者 DDM 精度上。所以供电方案不是附属环节,而是光模块测试结果可信度的一部分。
1.1 光模块内部对电源的真实敏感点
光模块的供电标称通常是 3.3V,容差常见在正负 5% 左右,看上去很宽松,但测试时不能只看静态电压。激光器偏置电流由内部电路控制,Vcc 抖动会调制光输出;接收端 TIA 的供电噪声会直接影响小信号放大,灵敏度测试时尤其明显;CDR 和 MCU 对上电斜率有要求,上电太快、太慢、掉电不干净,都可能让模块进入异常状态。更麻烦的是,这些异常不一定会立刻报错,有时只是误码率曲线差 0.3dB,或者 DDM 里 Vcc 读数跳来跳去。
模块上电瞬间还有浪涌。内部电容充电、DC-DC 启动、激光器使能,都会让输入电流在短时间内冲到额定值的一到两倍。如果电源限流设得太紧,AT66333A 会进入恒流模式,Vcc 被拉低,模块反复复位。如果限流设得太松,真短路时又可能烧治具、烧模块。这个平衡点要靠模块最大功耗、最低工作电压和启动特性来算,不能凭感觉拍一个 1A 或 2A。
另外,光模块测试经常要测功耗。有人用电源显示电流乘以设定电压,直接写进测试结论。这个做法在低电流、短脉冲、带线损的场景下误差很大。电源设定 3.3V,模块端可能只有 3.22V;电源读数分辨率 10mA,小电流模块就只有几十个跳字。要想把功耗测准,要么用 AT66333A 的远程回读功能并把采样窗口做长,要么外接分流器和高精度万用表,再和电源电流做交叉验证。
1.2 AT66333A 在这套测试里承担的角色
我手上这台 AT66333A 属于三路输出可编程直流电源,常见配置是两路 0-30V/0-3A 加一路 0-6V/0-3A 或类似,不同批次面板和手册标注会有差异,借用或采购前一定先看铭牌和编程手册。这里按三路独立可调、支持电压电流回读、带 OVP/OCP 保护、支持 SCPI 程控的机器来讲。它在光模块测试里主要干四件事:给模块主电、给测试治具辅助电、做限流保护、做电流监测。
第一路通常给光模块 Vcc 主电,设在 3.3V,限流按模块功耗计算。第二路可以给 I2C 上拉、电平转换、状态指示或者测试治具的辅助逻辑供电,电压可能是 3.3V 或 1.8V,具体看治具设计。第三路可以给风扇、TEC、测试板或者温箱接口供电,也可能是 5V 或 12V。三路共地是前提,但每路的输出端滤波和接地路径要单独考虑,否则辅助电的开关噪声会串到主电上。
AT66333A 的编程能力很适合塞进自动化测试序列。测试脚本先设电压、再设限流、再开输出,等模块初始化,然后读 I2C、切光衰减、跑误码,最后关输出、读掉电电流。整个过程不需要人手拧旋钮,测试节拍和重复性都会好很多。对于批量测试,电源还能记录每次上电的电流曲线,用这条曲线做模块“指纹”,比只看单点电流更容易发现早期异常。
1.3 和普通台式电源、电源板卡的区别
普通台式电源也能给光模块供电,但常见问题是旋钮设定、没有精细回读、限流响应慢、纹波偏大。手动测试时工程师容易忘记先设限流再开输出,一旦治具短路,模块和电源一起遭殃。AT66333A 这种可编程电源的优势在于设定值、保护值、回读值都能进脚本,测试流程可以锁死,避免人为漏项。
电源板卡集成度高,适合大规模产线,但灵活度不如台式可编程电源。实验室阶段要测不同封装、不同功耗、不同上电时序的模块,AT66333A 三路独立输出更容易临时改线。比如今天测 SFP+,明天测 QSFP-DD,主电都是 3.3V,但限流、上电斜率、辅助电配置可能不同,可编程电源改几个参数就能切换。我的做法是给每个模块型号建一个电源配置文件,测试时按型号调用,减少现场手改。
当然,可编程电源也不是没有短板。它前面板显示精度通常够用,但要做微安级漏电、毫欧级线损分析,还是得靠外部仪表。AT66333A 的定位是测试台主供电和序列控制,不是替代高精度源表。把它的边界搞清楚,方案才不会走偏。
2. 方案总体设计与通道分配思路
光模块测试系统可以简单,也可以复杂。简单到一块评估板、一台电源、一台光功率计就能测发射光功率;复杂到温箱、误码仪、光开关、可调衰减器、示波器、I2C 主机全部上阵。AT66333A 在不同规模里都能找到位置,但通道分配和保护参数必须提前设计,不能等设备都连好了再临时想。
我一般的做法是先画一张供电拓扑图,标出模块主电、辅助电、治具电、风扇电分别从哪里来,再标出每个节点的电压、最大电流、上电顺序和掉电顺序。拓扑图不需要多漂亮,手画也行,关键是把“谁先上电、谁后上电、谁给谁做保护”写清楚。光模块测试里最怕的就是主电还没到位,I2C 主机先给上拉电压,电流从 IO 脚灌进模块,轻则读不到寄存器,重则损坏内部 ESD 结构。
2.1 典型测试连接拓扑
一套常见的光模块测试连接是这样的:AT66333A 第一路输出接治具主电输入,经过治具上的滤波和采样电阻后送到模块 Vcc 和金手指电源脚;第二路输出接治具的 I2C 上拉和电平转换;第三路按需接风扇或温箱接口。模块光口通过光纤接可调光衰减器,衰减器另一端接误码仪接收端;模块发射端接光功率计或示波器光口。I2C 主机接模块 SDA/SCL,读取 DDM 和寄存器。温箱或温控台给模块提供温度条件。
这个拓扑里,AT66333A 是电源中心,但不等于所有地都随便接。光功率计、误码仪、示波器、温箱可能各自有接地参考,治具金属壳又和模块金手指地相连。如果接地路径形成环,电源电流的回流会经过信号地,眼图和灵敏度测试就容易出现无法解释的噪声。我的习惯是让电源回路线尽量短、尽量粗,直接回电源端子,不借道信号地。治具和仪器之间的地参考只在一点连接,能用光纤隔离的信号路就保持光纤隔离。
如果测试对象是 QSFP-DD、OSFP 这类高功耗模块,治具上还要考虑压降和散热。模块 3.3V 输入电流可能到 4A 以上,普通杜邦线、鳄鱼夹根本不行,接触电阻几个毫欧都会变成几十毫伏压降。AT66333A 输出端子到治具之间要用短而粗的线,最好用带四线制 sense 的治具,直接把模块电源脚处的电压反馈给电源,让电源补偿线路压降。
2.2 三路输出的分配原则
三路输出分配没有唯一答案,但有几条经验原则。第一,主电单独占一路,不要让主电和风扇、指示灯共用,否则风扇一启动,主电回读电流就跳。第二,辅助电和主电共地但不共输出,I2C 上拉、电平转换、复位信号都走辅助路,方便单独限流。第三,如果用第三路给 TEC 或加热片供电,必须算清最大电流,并在脚本里做温度闭环,不能让它一直满功率输出。
对于只测 SFP+ 的场景,模块通常只需要 3.3V 主电和 I2C 上拉,三路可能用不满。我会把第一路设 3.3V 主电,第二路设 3.3V 但限流设很小给上拉,第三路关掉或备用。对于 QSFP28、QSFP-DD,除了 3.3V 主电,有些测试板需要 5V 或 12V 给风扇、转接芯片,第三路就派上用场。所有通道上电前先确认模块和治具的地已经连通,避免地电位差从 IO 脚找路径。
还有一点,AT66333A 三路输出的回读精度和量程有关。小电流测试尽量别用大电流档满量程读,误差会大。如果第二路只给 I2C 上拉,电流可能只有几十毫安,可以把显示和回读量程调到合适范围,或者外接万用表监测。主电电流大,电源回读相对可信,但也要注意采样率和滤波设置。
2.3 上电时序、限流与保护参数计算
上电时序要按模块规格和治具设计来。一般顺序是:先共地,再上辅助电,再上主电,最后释放 I2C 主机或复位信号。有些模块要求主电先上,再给 IO,这时要按数据手册来。AT66333A 可以设置每路输出延时,脚本里也可以用sleep控制,但延时不能只靠软件,硬件上也要保证没有反灌路径。
限流值计算可以按这个思路:先找模块最大功耗Pmax,再找模块最低工作电压Vmin,算出最大工作电流Imax = Pmax / Vmin,限流设成Imax的 1.2 到 1.5 倍。比如一个 QSFP28 模块最大功耗 3.5W,最低工作电压 3.135V,最大电流约 1.12A,限流可以设 1.5A 左右。如果模块启动浪涌明显,可以用电源的软启动或输出斜率功能,把浪涌压下去,而不是一味放大限流。对于 QSFP-DD 14W 模块,3.3V 下电流约 4.24A,限流至少 5.5A 到 6A,这时要确认 AT66333A 单路能不能吃下,线径和端子是否够。
OVP 过压保护也要设。主电 3.3V,OVP 可以设 3.6V 到 3.8V,不要设太高,否则真过压时保护来不及。OCP 过流保护可以设得比限流略高,作为第二道防线。有些电源的 OCP 是延时触发,适合扛启动浪涌;有些是立即触发,就要配合软启动。我的习惯是先在假负载上验证限流点和 OVP 点,再接真模块,避免第一次上电就拿模块试保护。
下表是我常用的一组参考值,实际要以模块手册和电源能力为准:
| 模块类型 | 主电电压 | 典型最大功耗 | 估算最大电流 | 建议限流 | OVP 参考 |
|---|---|---|---|---|---|
| SFP+ | 3.3V | 1.5W | 0.48A | 0.8A | 3.6V |
| QSFP28 | 3.3V | 3.5W | 1.12A | 1.5A | 3.6V |
| QSFP-DD | 3.3V | 14W | 4.24A | 5.5A 到 6A | 3.6V |
| OSFP 高功耗 | 3.3V | 16W 以上 | 5A 以上 | 按电源和线材定 | 3.6V |
注意,这个表只是估算,不能代替模块数据手册。限流设太低会导致上电失败,设太高会失去保护意义。最好的办法是先用一只良品模块测完整上电电流波形,看到峰值和持续时间,再定限流和软启动参数。
3. 接线细节与电源参数配置实操
接线是光模块测试里最容易翻车的地方。很多人把 AT66333A 输出端用鳄鱼夹夹到治具排针上,觉得通电就行。等到测灵敏度时发现噪声大,测功耗时发现电压对不上,就开始怀疑电源、怀疑模块,其实问题在线损和接地。把接线做扎实,后面的测试会省很多时间。
我一般先把治具供电入口、模块金手指电源脚、I2C 上拉电源、风扇电源分别标出来,再决定用几根线、多粗的线、是否走四线制。主电和地一定要用单独的粗线,不要和信号线共用排线。I2C 上拉电源可以用细线,但也要远离高频信号。电源输出端到治具之间尽量不要加开关、保险座、转接板,这些都会增加接触电阻和噪声。
3.1 治具供电接口与四线制补偿
AT66333A 如果支持远程 sense,主电一定要用四线制。具体接法是:电源输出正负端接治具主电输入,sense 正负端接模块电源脚附近,或者接治具上靠近模块的测试点。这样电源调节的是模块端电压,而不是电源端子电压。线损和接触电阻造成的压降会被补偿掉,模块实际看到的电压更接近设定值。
四线制也有坑。sense 线如果接反、接断、接触不良,电源可能认为负载端电压异常,输出会往上冲,触发 OVP 或者把模块过压。所以每次改线后先用假负载或电子负载确认 sense 环路正常。sense 线不需要很粗,但要可靠,最好用带锁扣的端子。治具上可以预留测试孔,方便万用表交叉验证模块端电压。
线径和长度也要算。假设用 24AWG 线,来回 1 米电阻约 50 毫欧,主电 1A 时压降 50mV;如果 3A,压降 150mV。3.3V 模块只剩 3.15V,已经接近下限,灵敏度测试肯定受影响。换成 20AWG 线,来回 1 米电阻约 20 毫欧,1A 压降 20mV,3A 压降 60mV,会好很多。如果不用四线制,至少要把线缩短、加粗,并定期检查端子氧化。
3.2 电压、电流、OVP/OCP 设定步骤
我通常按下面这个顺序配置 AT66333A,避免上电瞬间误保护:
- 先关闭所有输出,电压设定值归零或设成目标值,但限流先设小。
- 接好主电、辅助电和地,用万用表确认没有短路。
- 打开主电输出,缓慢把电压升到 3.3V,观察电流是否正常。
- 如果电流异常大,立即关输出,查治具和模块。
- 电压正常后,把限流升到计算值,再开输出。
- 设置 OVP 为 3.6V 到 3.8V,OCP 略高于限流。
- 用电子负载验证限流点和 OVP 点。
- 最后接模块,跑一次上电电流波形,确认浪涌没有触发保护。
这个顺序看起来啰嗦,但能避免限流太低或太高带来的误判。尤其批量测试时,脚本里也要按这个逻辑写,不能直接:OUTP ON然后立刻读数据。上电后至少等模块初始化时间,常见 200ms 到 500ms,有些模块要 1s 以上。等 I2C 能读到正确寄存器后,再开始光测试。
辅助电设定同样要小心。I2C 上拉电压一般和主电相同,但要在主电起来之后再加,避免 IO 灌电流。如果治具上有电平转换芯片,它的供电顺序按芯片手册来。第三路如果给风扇,可以设成 5V 或 12V,限流按风扇额定电流的 1.5 倍设,防止堵转。风扇启动时电流会冲一下,脚本里不要用这一路的电流判断模块状态。
3.3 纹波、地环路与线损处理
可编程电源的输出纹波通常不大,但光模块对高频噪声敏感。如果眼图测试发现模板余量小,先别急着换模块,用示波器测模块电源脚纹波。探头要用短地弹簧,不要用长地线夹,否则测到的是环路噪声。实测纹波如果超过 50mVpp,可以在治具上加 LC 滤波:一个磁珠或几微亨电感,加 100uF 到 470uF 低 ESR 电容,再并联 0.1uF 和 1nF 去耦。具体值要看模块电流和允许压降,不能随便堆大电容,否则上电浪涌会变大。
地环路是另一个隐形问题。AT66333A、误码仪、示波器、温箱如果都接同一个插排,地线之间可能有小电位差。电源回流电流大,会在地线上产生噪声,串进误码仪输入。我的做法是让电源回流线单独走,尽量短,直接回电源端子;治具地和仪器地只在一点连接;能用光纤隔离的信号路保持光纤隔离;示波器测电信号时用差分探头或隔离探头,避免把地环引进测试点。
线损处理除了四线制,还可以在治具上做电压监测。用高精度万用表长期监测模块电源脚电压,把电源回读值和万用表值做对比,偏差超过 20mV 就检查端子和线材。批量测试时,电压偏差会直接影响功耗和灵敏度,不能只依赖电源前面板显示。尤其是低电压大电流模块,线损占比更高,四线制几乎是必选项。
4. 程控自动化:让 AT66333A 进入测试序列
如果只做几只模块,手动拧旋钮也能凑合。但只要进入批量测试、老化测试、温循测试,AT66333A 就必须程控。程控不只是省人力,更重要的是让每次上电、延时、读值、保护的顺序完全一致。光模块测试里很多偶发失败,最后查出来都是人为操作差异:有人先开输出再设限流,有人忘了等初始化,有人读电流时没等稳定。脚本把这些动作固定下来,测试结论才有可比性。
AT66333A 常见支持 USB、LAN、RS232 或 GPIB 选件,具体以机器后面板和手册为准。我习惯用 LAN 或 USB,配 PyVISA 写 Python 脚本。注意不同厂商 SCPI 指令不完全一样,下面代码是按常见可编程电源风格写的,实际要替换成 AT66333A 手册里的命令。脚本里不要写死 IP,放到配置文件,避免换台电脑就改代码。
4.1 SCPI 控制基本框架
先装 PyVISA 和对应后端,然后用资源字符串打开仪器。常见资源字符串如USB0::0x1234::0x5678::...或TCPIP0::192.168.1.50::INSTR。打开后先查*IDN?确认连的是 AT66333A,不要连错设备。然后设置超时、读写终止符,很多脚本超时就是因为终止符不匹配。
import pyvisa import time rm = pyvisa.ResourceManager() inst = rm.open_resource("TCPIP0::192.168.1.50::INSTR") inst.timeout = 5000 inst.read_termination = "\n" inst.write_termination = "\n" print(inst.query("*IDN?")) # 以主电通道为例,具体通道命令按 AT66333A 手册替换 inst.write(":INST CH1") inst.write(":VOLT 3.3") inst.write(":CURR 0.8") inst.write(":VOLT:PROT 3.7") inst.write(":OUTP ON") time.sleep(0.5) v = float(inst.query(":MEAS:VOLT?")) i = float(inst.query(":MEAS:CURR?")) print("模块端主电估算:", v, "电流:", i) inst.write(":OUTP OFF") inst.close()这段代码只是骨架,实际还要加异常处理、重试、日志和通道切换。比如读取失败时不要直接退出,先重试两次,再记录仪器状态。批量测试时,每测完一只模块都要关输出、放电、等电流降到接近零,再换下一只。否则治具上的电容还带电,热插拔可能打火。
4.2 光模块上电与电流监测脚本
光模块上电脚本要包含几个阶段:准备阶段、上电阶段、初始化等待、工作电流读取、测试阶段、下电阶段。准备阶段先设电压、限流、OVP,输出保持关闭;上电阶段按顺序开辅助电和主电;初始化等待按模块手册给 300ms 到 1s;工作电流读取要在模块进入正常状态后采样多次,取平均或中位数,避免瞬间跳变;测试阶段保持电源参数不变;下电阶段先关主电再关辅助电,最后等电流归零。
下面是一个更贴近实际的采样片段,重点在于多次读值并记录上电电流峰值:
def power_on_and_measure(inst, samples=20, interval=0.05): inst.write(":INST CH1") inst.write(":VOLT 3.3") inst.write(":CURR 1.5") inst.write(":OUTP ON") currents = [] start = time.time() for _ in range(samples): try: i = float(inst.query(":MEAS:CURR?")) v = float(inst.query(":MEAS:VOLT?")) currents.append((time.time() - start, v, i)) except Exception as e: print("读数异常:", e) time.sleep(interval) peak = max(currents, key=lambda x: x[2]) avg = sum(x[2] for x in currents[-5:]) / 5 print("上电峰值电流:", peak, "后段平均电流:", avg) return currents实际光模块上电峰值可能只持续几毫秒,电源回读速度不一定抓得到。要抓真实浪涌,最好用示波器配电流探头,或者电源的高采样模式。脚本回读主要用于判断模块是否启动、工作电流是否在范围内。如果脚本读到的平均电流和模块 DDM 里的电流差太多,先查线损、量程和采样时间,不要直接判定模块坏。
4.3 测试序列中的电源切换与数据记录
完整测试序列里,AT66333A 通常不频繁切换电压,而是保持主电,配合光衰减器、误码仪、温箱做测试。需要电源动作的地方包括:上电初始化、读功耗、切低功耗模式、复位模块、温循前后上电下电、老化循环。每次电源动作都要记录时间戳、设定值、回读值、模块 DDM 值,方便后面做测试结论追溯。
数据记录我一般用 CSV,每行包含模块序列号、测试时间、温度、电压设定、电压回读、电流回读、光功率、灵敏度、误码率、DDM 原始值。电源回读值不要只记一个平均值,最好记上电峰值、稳定后平均值、测试结束时值。这样出现异常时,能看出是上电就异常,还是测试中途电源被拉低。对于老化测试,每轮循环都记录一次电流,最后画成趋势图,比只看通过失败更有价值。
脚本里还要加保护逻辑。比如电流超过限流值持续 100ms,立即关输出并标记失败;电压低于 3.0V,立即关输出;I2C 连续读失败三次,关输出并提示检查治具。这些保护不能只靠电源硬件,软件也要有第二层判断。批量测试时,一只模块短路可能拖垮整条测试线,脚本必须能快速切断并报警。
5. 关键测试项落地与判读
AT66333A 在光模块测试中的价值,最终要落到具体测试项上。发射光功率、消光比、眼图、接收灵敏度、误码率、DDM、功耗、温循老化,每一项都和供电质量有关。下面按发射端、接收端、DDM 和老化三块讲,重点说电源参数怎么设、数据怎么判、异常怎么追。
5.1 发射端:光功率、消光比、眼图
发射端测试时,AT66333A 主电保持 3.3V,限流按模块功耗设。先上电等初始化,再用 I2C 或测试板让模块进入发射状态。光功率计读平均光功率,示波器或眼图仪读消光比和眼图模板。电源纹波、电压偏差会直接影响激光器偏置和调制,尤其是低功率模块,电源噪声可能让光功率跳动 0.2dB 以上。
判读时不要只看单次值。同一只模块连续读十次光功率,波动应该在仪器精度范围内。如果每次上电后光功率都往一个方向漂,查电源电压是否被线损拉低,或者模块端电压是否随温度变化。消光比异常时,先确认模块端 3.3V 是否准确,再看 I2C 偏置电流是否在范围。眼图模板余量小,除了查电源纹波,还要查地环路和光纤端面。很多时候换一根短粗电源线,眼图余量就能回来一点。
我习惯在发射测试前做一次电源电压扫描:3.25V、3.30V、3.35V 各测一次光功率和消光比,看模块对电源的敏感度。如果 3.25V 就明显掉性能,说明模块余量不足或者治具线损太大。这个扫描不一定要写进量产测试,但在工程验证阶段很有用,能提前发现设计问题。
5.2 接收端:灵敏度、BER、告警
接收灵敏度测试对电源噪声最敏感。测试时 AT66333A 主电要干净,辅助电和风扇尽量关掉或单独供电,避免开关噪声串到模块。误码仪发码,光衰减器逐步加大衰减,记录 BER 到目标值时的接收光功率。电源纹波大、地环路重、I2C 上拉噪声大,都会让灵敏度变差,甚至出现误码率曲线台阶。
灵敏度测试判读要看曲线,不是单点。正常模块的 BER 随衰减增加平滑上升,如果某个衰减点突然跳变,先查电源电流是否跳、电压是否掉、I2C 是否在轮询。轮询 I2C 本身也可能干扰接收测试,尤其是低速上拉和长线。我的做法是灵敏度测试期间暂停非必要 I2C 轮询,只保留电源监测,等测试完再读 DDM。
告警测试也跟电源有关。模块内部有 Vcc 告警门限,电源电压偏低时,模块可能报低压告警,误码仪还没到灵敏度门限。这时要区分是电源设定不对,还是线损导致模块端低压。用万用表测模块电源脚,如果电源显示 3.3V 但模块端只有 3.1V,就是线损问题,不是模块告警门限错。把四线制接好,或者加粗缩短电源线,告警就会消失。
5.3 DDM、功耗与温循老化
DDM 里一般有 Vcc、温度、偏置电流、发射光功率、接收光功率等监控值。AT66333A 的电压电流回读可以和 DDM 做交叉校验。如果电源显示 3.3V、0.8A,DDM 显示 Vcc 3.2V、偏置电流正常,但功耗算出来对不上,先查电源回读精度和采样时间。DDM 的 Vcc 采样通常在模块内部,精度有限,不能当高精度表用,但可以用来发现大偏差。
功耗测试要区分静态功耗和动态功耗。发射使能、CDR 锁定、温度变化都会让电流变。测试时先让模块进入目标状态,等电流平稳后采样。AT66333A 的回读电流可以做趋势判断,但精确功耗建议用外部分流器。我的做法是电源电流用于监控和异常判断,高精度功耗数据用分流器加万用表采,两者记录在同一时间戳下,方便对比。
温循老化时,AT66333A 要配合温箱和脚本做循环上电下电。高温下模块功耗可能上升,限流要留足余量;低温下启动电流可能变大,软启动要调好。每轮循环记录上电峰值电流、工作电流、DDM 温度、误码是否异常。老化测试最怕电源保护误触发导致模块反复重启,最后把所有模块都判坏。所以老化前一定要在高温和低温各做一次上电波形验证,确认限流和 OVP 不会误动作。
6. 常见问题与排查技巧实录
光模块测试的异常,很多都能从电源侧找到线索。下面这些情况是我在实际项目里反复遇到的,整理成排查表,方便现场快速定位。先看现象,再按优先级查,不要一上来就换模块。
| 现象 | 优先排查 | 可能原因 | 处理办法 |
|---|---|---|---|
| 模块不上电,电流接近零 | 线缆、极性、输出开关 | 断线、接触不良、输出未开 | 查通断,确认:OUTP ON,用万用表测模块脚 |
| 上电即过流,电源进恒流 | 限流、治具短路、模块短路 | 限流太低,治具电容大,模块损坏 | 假负载验证,调软启动,查模块输入阻抗 |
| 电压设定 3.3V,模块端偏低 | 线损、端子、未四线 | 线太细、太长、接触电阻大 | 改四线制,加粗缩短线,清理端子 |
| 眼图余量小,灵敏度差 | 纹波、地环路、电源线 | 开关噪声、地线回流、去耦不足 | 测模块脚纹波,加 LC 滤波,改单点接地 |
| I2C 读不到或时好时坏 | 上电时序、上拉、地址 | 辅助电先上、上拉缺失、速率高 | 主电先上,加上拉,降速到 100kHz |
| DDM Vcc 与电源显示差大 | 线损、采样点、回读精度 | 电源回读在端子,模块端有压降 | 用四线制,万用表交叉测模块脚 |
| 脚本超时、仪器掉线 | 网络、终止符、超时 | IP 变、终止符不匹配、缓冲未清 | 查*IDN?,设读写终止符,加重试 |
| 老化中随机重启 | 限流、温升、接触 | OCP 误触发、线材过热、端子氧化 | 看电流波形,调限流,换高温线材 |
6.1 上电异常、OCP 误触发、模块不启动
上电异常最常见的原因是限流设得太低。模块内部有大电容,上电瞬间充电电流可能超过额定工作电流,电源一进恒流,Vcc 就上不去,模块反复复位。表现是电源电压在 1V 到 3V 之间跳,电流在限流值附近,I2C 时有时无。处理办法不是直接关保护,而是先用示波器看模块端电压和电流波形,确认浪涌幅值和持续时间,再决定加软启动还是提高限流。
另一种情况是治具短路。电源一开就恒流,电压接近零,模块完全不亮。这时要断开模块,只接治具,看电流是否还在。如果治具空载也过流,查治具上的电容、焊接、转接座。不要反复上电试,短路电流久了会烧线。AT66333A 的 OCP 如果设得比限流低,可能限流还没到就先触发 OCP,输出直接关。设置时确认 OCP 高于限流,或者关掉 OCP 只用限流保护。
模块不启动还可能是上电顺序不对。辅助电先上,主电后上,IO 脚可能通过上拉电阻向模块内部灌电流,导致主电还没到 3.3V,内部电路已经半启动。按手册顺序改过来,或者给 IO 加电源开关。如果模块需要复位信号,确认复位释放时间在主电之后。
6.2 数据跳动、眼图恶化、I2C 失败
数据跳动多数和噪声、接地、采样有关。先看电源回读电流是否跳。如果电源电流本身在跳,可能是模块功耗真的在变,或者限流边缘震荡。把限流提高一点,离开保护边界。再看模块端纹波,用短地弹簧探头测,如果纹波超过 50mVpp,加滤波。注意滤波电容不要太大,否则上电浪涌增加,OCP 又可能误触发。
眼图恶化要区分是电噪声还是光路问题。把光纤盘好,清洁端面,换参考跳线,再看眼图。如果还是差,测模块电源脚噪声和地噪声。地环路严重时,示波器探头地夹在治具上就能看到开关频率的尖峰。处理办法包括:电源回流线单独走、仪器单点接地、示波器用差分探头、I2C 线远离电源线。很多时候眼图问题不是电源本身,而是电源回流路径设计不对。
I2C 失败常见原因是上拉电压和主电不同步、上拉电阻太大或太小、总线电容大、速率高。光模块 I2C 地址一般是 0x50 和 0x51,读之前确认模块已经上电初始化。用示波器看 SDA/SCL 波形,如果上升沿很慢,减小上拉电阻或缩短线。如果波形有毛刺,远离电源开关节点。批量测试时 I2C 失败还要查治具接触,金手指氧化会导致时好时坏。
6.3 程控掉线、脚本超时、批量测试不一致
程控掉线先查物理连接和网络。LAN 控制时 ping 一下仪器,确认 IP 没变;USB 控制时查设备管理器,看是否掉驱动。脚本里*IDN?要能稳定返回,如果偶尔超时,把超时时间加长,读写终止符改成和手册一致。有些电源返回带\r\n,只设\n会读取异常。每次读写前清一下缓冲,避免上一条命令的返回残留。
脚本超时还可能是因为查询太频繁。电源回读需要时间,尤其在自动量程切换时。连续快速查询电压电流,仪器可能来不及响应。加sleep或降低采样率,或者用一次性读取多个参数的指令。批量测试不一致,先看脚本有没有在每只模块前复位电源状态。如果上一只模块测试时改了电压或限流,下一只没重新设置,数据肯定乱。我的习惯是每个测试函数开头都调用一次set_power_default(),把电压、限流、OVP 全部设回默认,不管上一状态是什么。
日志也很关键。脚本要记录每次仪器命令和返回,尤其是失败时。现场排查时,看日志比凭记忆快得多。如果发现某台电脑、某个 USB 口、某根网线容易掉线,直接换掉,不要和它较劲。
7. 实操心得与扩展方案
AT66333A 用在光模块测试里,本身不是最贵的仪器,但往往是最影响测试节拍和重复性的设备。把它用顺了,测试线会安静很多。下面分享几个我在实际项目里总结的扩展玩法,适合已经能跑通单只测试、想进一步提高效率的人。
7.1 批量老化与自动重试
批量老化时,AT66333A 可以给多只模块轮流供电,也可以每只模块独立供电。如果电源通道不够,可以用矩阵开关扩展,但开关接触电阻和压降要算清楚。老化脚本一般做循环:上电、等初始化、读电流、跑误码或光功率、下电、等放电、记录。每轮记录电流趋势,如果某只模块电流逐渐变大或变小,即使误码还没超限,也值得标记出来。
自动重试要谨慎。光模块测试里有些失败是接触问题,重试一次可能就过;有些失败是模块真异常,重试会掩盖问题。我的做法是只对 I2C 读取失败、仪器超时、上电电流略超限这类可恢复异常做一次重试,并且记录重试原因。对误码率超限、光功率超限、短路过流,不自动重试,直接标记失败。重试次数和条件写进测试规范,不能由脚本随意决定。
老化时还要注意电源和线材温升。大电流长时间输出,端子和线材会发热,接触电阻变大,压降变大,模块端电压下降。可以在治具上贴温度标签,或者用热像仪定期看。线材选耐温等级高一点的,端子定期紧固。AT66333A 本身有风扇,注意通风口不要堵。
7.2 校准、维护与安全边界
可编程电源也要校准。电压回读和设定值偏差大,会直接影响功耗和测试判读。建议每年至少校准一次,或者按公司计量规范来。日常可以用高精度万用表抽检:设 3.3V,空载测输出端;接假负载 1A,测模块端;和电源回读对比。偏差超过允差就送校。四线制 sense 端子也要检查,氧化会导致补偿异常。
维护方面,定期清理风扇滤网,检查输出端子有没有松动、氧化、打火痕迹。测试治具的金手指座要定期更换,接触电阻变大后,电源补偿再准也没用。光模块测试涉及激光,任何时候不要直视光口,哪怕模块显示没发光。拔插光纤前先关光输出或把模块下电。电源和治具接地要可靠,防静电手环、防静电台垫按实验室规范用。
安全边界还包括电源能力边界。AT66333A 单路电流有限,不要为了测高功耗模块长期满量程输出。看手册的连续输出功率和温度降额曲线,高温环境下留余量。如果模块短路,电源保护动作后,先关输出再查线,不要带电拔插。最后再分享一个小技巧:我现在的习惯是每批模块先抽三只,用 AT66333A 记录完整上电电流曲线,再和良品指纹库比一遍,很多早期批次问题在进眼图测试前就能看出来。