mirror of
https://github.com/NawfalMotii79/PLFM_RADAR.git
synced 2026-06-09 23:17:33 +00:00
fix(mcu): PR-V — ADF4382A Stage-5 audit fixes (F-5.1..F-5.10)
F-5.1: revert PWM scaffolding to binary DELADJ. Schematic-verified: PG7/PG13 on STM32F746ZGT7 have no TIM3 alternate function (Port G AFs are FMC/ETH/USART6/SAI2/SDMMC2 — no TIMx routes), and the FreqSynth-board DELADJ net has only a 200 kOhm pulldown (R22, R35) — no series-R + shunt-C LPF for PWM-to-DC. The3979693(Bug #5) +c466021(B15) PWM scaffolding was a false-fix; 5fbe97f's original honest TODO matched the actual hardware. Delete htim3, MX_TIM3_Init, start/stop_deladj_pwm, phase_ps_to_duty_cycle. Rewrite test_bug5 for binary; delete test_bug15. F-5.2: split ADF4382A ref_div per device. RX 10.38 GHz / 300 MHz = 34.6 is fractional mode, but ADF4382_PFD_FREQ_FRAC_MAX = 250 MHz — driver does not reject the out-of-spec config, ldwin_pw silently left at 0. Set rx_param.ref_div = 2 -> PFD = 150 MHz, in spec. TX unchanged (integer). F-5.3: free prior tx_dev/rx_dev in Manager_Init before re-allocating. The recovery dispatch on TX/RX unlock calls Manager_Init again; previous adf4382_dev allocations were leaking. Mirrors F-4.5 fix for AD9523. F-5.4: fix upstream adf4382_remove() — only freed dev struct on FAILED SPI removal (success path leaked) and always returned 0. Now: NULL guard, unconditional free, propagate ret. F-5.8: lock-detect uses register reg[0x58] LOCKED bit as authoritative. GPIO disagreement still logged via DIAG_WARN but no longer flips the result — a mis-routed GPIO LKDET would otherwise trigger false-unlock recovery loops. F-5.10: drop stale "EZSYNC" diagnostic string (post-C-14a residue). Bench-side checks for first power-on: - Scope PG13 (TX_DELADJ) and PG7 (RX_DELADJ) — both should be HIGH (3.3V) after SetPhaseShift(500,500) runs at boot. - Confirm both ADF4382A LOs lock with PFD=150 MHz on RX (was 300 MHz). Lock-time may be slightly longer; phase-noise sidebands shift. - Confirm no false-unlock storms on the recovery path — the GPIO LKDET disagreement DIAG_WARN should no longer flip the lock decision. Regression: tests/ make test 34/34 PASS (was 35/35 baseline; -1 from test_bug15 deletion as planned).
This commit is contained in:
@@ -51,8 +51,7 @@ TESTS_WITH_REAL := test_bug1_timed_sync_init_ordering \
|
||||
test_bug4_phase_shift_before_check \
|
||||
test_bug5_fine_phase_gpio_only \
|
||||
test_bug9_platform_ops_null \
|
||||
test_bug10_spi_cs_not_toggled \
|
||||
test_bug15_htim3_dangling_extern
|
||||
test_bug10_spi_cs_not_toggled
|
||||
|
||||
# Tests that only need mocks (extracted patterns / static analysis)
|
||||
TESTS_MOCK_ONLY := test_bug2_ad9523_double_setup \
|
||||
@@ -95,7 +94,7 @@ TESTS_GPS := test_um982_gps
|
||||
ALL_TESTS := $(TESTS_WITH_REAL) $(TESTS_MOCK_ONLY) $(TESTS_STANDALONE) $(TESTS_WITH_PLATFORM) $(TESTS_WITH_CXX) $(TESTS_GPS)
|
||||
|
||||
.PHONY: all build test clean \
|
||||
$(addprefix test_,bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 bug12 bug13 bug14 bug15) \
|
||||
$(addprefix test_,bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 bug12 bug13 bug14) \
|
||||
test_gap3_estop test_gap3_iwdg test_gap3_temp test_gap3_idq test_gap3_order \
|
||||
test_gap3_overtemp test_gap3_wdog
|
||||
|
||||
@@ -302,9 +301,6 @@ test_bug13: test_bug13_dac2_adc_buffer_mismatch
|
||||
test_bug14: test_bug14_diag_section_args
|
||||
./test_bug14_diag_section_args
|
||||
|
||||
test_bug15: test_bug15_htim3_dangling_extern
|
||||
./test_bug15_htim3_dangling_extern
|
||||
|
||||
test_gap3_estop: test_gap3_emergency_stop_rails
|
||||
./test_gap3_emergency_stop_rails
|
||||
|
||||
|
||||
Reference in New Issue
Block a user