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
from common.config_loader import load_jig_registers
from drivers.eload import Eload
from drivers.jig import Jig, Position
from drivers.rpu import Rpu
from drivers.tpu import Tpu
@@ -33,6 +34,7 @@ FREQ_CAL_POLL_INTERVAL_S = 1
TARGET_CURRENT_A = 30.0
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
# which frequency-calibration handshake the firmware expects
@@ -58,16 +60,18 @@ class AlignmentContext:
jig: Jig
tpu: Tpu
rpu: Rpu
eload: Eload
@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 = Jig(jig_port, jig_registers)
tpu = Tpu(tpu_port, extra_datasets=["frequency_calibration"])
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.wait_until_config_writable()
@@ -95,6 +99,7 @@ def alignment(jig_port, tpu_port, rpu_port):
jig.close()
tpu.close()
rpu.close()
eload.disconnect()
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")
def test_alignment_sweep(alignment):
@pytest.mark.parametrize("veload", SWEEP_VELOADS)
def test_alignment_sweep(alignment, veload):
jig = alignment.jig
tpu = alignment.tpu
rpu = alignment.rpu
eload = alignment.eload
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)
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:
with open(csv_path, "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
@@ -236,6 +248,8 @@ def test_alignment_sweep(alignment):
finally:
rpu.set_charging(False)
eload.output_off()
eload.set_local()
jig.move_to_position(DEFAULT_POSITION, wait_time=DEFAULT_MOVE_WAIT_S)
print(f"Saved to {csv_path}")