feat: add 50V/60V eload sweep cases to alignment test

This commit is contained in:
2026-08-07 14:38:55 +08:00
parent 833ae17c6e
commit 44393ccc44
+18 -4
View File
@@ -6,6 +6,7 @@ from pathlib import Path
import pytest import pytest
from common.config_loader import load_jig_registers from common.config_loader import load_jig_registers
from drivers.eload import Eload
from drivers.jig import Jig, Position from drivers.jig import Jig, Position
from drivers.rpu import Rpu from drivers.rpu import Rpu
from drivers.tpu import Tpu from drivers.tpu import Tpu
@@ -33,6 +34,7 @@ FREQ_CAL_POLL_INTERVAL_S = 1
TARGET_CURRENT_A = 30.0 TARGET_CURRENT_A = 30.0
ALIGNMENT_RAMP_MA_PER_SEC = 20000 ALIGNMENT_RAMP_MA_PER_SEC = 20000
SWEEP_VELOADS = [50.0, 60.0]
# "BLE Conn mode" (TPU: Debug dataset addr 5, RPU: sec_flash addr 142) selects # "BLE Conn mode" (TPU: Debug dataset addr 5, RPU: sec_flash addr 142) selects
# which frequency-calibration handshake the firmware expects # which frequency-calibration handshake the firmware expects
@@ -58,16 +60,18 @@ class AlignmentContext:
jig: Jig jig: Jig
tpu: Tpu tpu: Tpu
rpu: Rpu rpu: Rpu
eload: Eload
@pytest.fixture(scope="module") @pytest.fixture(scope="module")
def alignment(jig_port, tpu_port, rpu_port): def alignment(jig_port, tpu_port, rpu_port, eload_resource):
jig_registers = load_jig_registers() jig_registers = load_jig_registers()
jig = Jig(jig_port, jig_registers) jig = Jig(jig_port, jig_registers)
tpu = Tpu(tpu_port, extra_datasets=["frequency_calibration"]) tpu = Tpu(tpu_port, extra_datasets=["frequency_calibration"])
rpu = Rpu(rpu_port) rpu = Rpu(rpu_port)
eload = Eload(eload_resource)
ctx = AlignmentContext(jig=jig, tpu=tpu, rpu=rpu) ctx = AlignmentContext(jig=jig, tpu=tpu, rpu=rpu, eload=eload)
rpu.set_charging(False) rpu.set_charging(False)
rpu.wait_until_config_writable() rpu.wait_until_config_writable()
@@ -95,6 +99,7 @@ def alignment(jig_port, tpu_port, rpu_port):
jig.close() jig.close()
tpu.close() tpu.close()
rpu.close() rpu.close()
eload.disconnect()
def _wait_for_freq_cal_done(tpu, position_name, timeout_s=FREQ_CAL_TIMEOUT_S): def _wait_for_freq_cal_done(tpu, position_name, timeout_s=FREQ_CAL_TIMEOUT_S):
@@ -185,17 +190,24 @@ def test_frequency_calibration(alignment):
f"f2 (far-border) = {freq_high:.2f} kHz") f"f2 (far-border) = {freq_high:.2f} kHz")
def test_alignment_sweep(alignment): @pytest.mark.parametrize("veload", SWEEP_VELOADS)
def test_alignment_sweep(alignment, veload):
jig = alignment.jig jig = alignment.jig
tpu = alignment.tpu tpu = alignment.tpu
rpu = alignment.rpu rpu = alignment.rpu
eload = alignment.eload
RESULTS_DIR.mkdir(exist_ok=True) RESULTS_DIR.mkdir(exist_ok=True)
csv_path = RESULTS_DIR / f"alignment_sweep_{time.strftime('%Y%m%d_%H%M%S')}.csv" csv_path = RESULTS_DIR / f"alignment_sweep_{veload:.0f}V_{time.strftime('%Y%m%d_%H%M%S')}.csv"
rpu.set_charging(False) rpu.set_charging(False)
jig.move_to_position(DEFAULT_POSITION, wait_time=DEFAULT_MOVE_WAIT_S) jig.move_to_position(DEFAULT_POSITION, wait_time=DEFAULT_MOVE_WAIT_S)
eload.set_remote()
eload.set_mode_cv()
eload.set_voltage(veload)
eload.output_on()
try: try:
with open(csv_path, "w", newline="", encoding="utf-8") as f: with open(csv_path, "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f) writer = csv.writer(f)
@@ -236,6 +248,8 @@ def test_alignment_sweep(alignment):
finally: finally:
rpu.set_charging(False) rpu.set_charging(False)
eload.output_off()
eload.set_local()
jig.move_to_position(DEFAULT_POSITION, wait_time=DEFAULT_MOVE_WAIT_S) jig.move_to_position(DEFAULT_POSITION, wait_time=DEFAULT_MOVE_WAIT_S)
print(f"Saved to {csv_path}") print(f"Saved to {csv_path}")