feat: add 50V/60V eload sweep cases to alignment test
This commit is contained in:
+18
-4
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user