Trace profilowania PWM DC

/parametry/trace-profilowania-pwm-dc/ ID: PWM-PROF-DC-25-031 rewizja: 1.0

Notatka laboratoryjna: profil czasu ISR i ścieżek DMA dla sterownika PWM prądu DC. Dokument techniczny, brak elementów komercyjnych.

Zakres pomiarów

Profilowano wykonanie ISR kontrolera prądu (pętla wewnętrzna) w układzie zasilanym z DC-link 48 V, sterującym obciążeniem 0,5–12 A. Badano wpływ trybu timera (edge-aligned vs. center-aligned), długości dead-time (100–240 ns), konfiguracji ADC (sync/async do PWM), włączenia DMA dla akwizycji prądu, oraz kolizji przerwań (TIM1_UP, DMA, UART). Celem było określenie budżetu czasowego ISR, jitteru i ich korelacji z ripple prądu oraz błędami regulatora.

Konfiguracja stanowiska

Mikrokontroler
ARM Cortex-M4F @ 120 MHz, FPU=ON, I-Cache=ON
PWM
fPWM=24 kHz (EA/CA), DT=120/180/240 ns
ADC
12-bit, fsamp=24 kHz sync center, OSR×2 (2 pomiary/okres)
DMA
ADC→RAM (2×16-bit), tryb kołowy
Regulator
PI (fixed-point Q1.15), anti-windup clamp ±0,9·Ilim
Obciążenie
rezystor dynamiczny 0,5–4,0 Ω, step 5→11 A @ 5 ms
Pomiary
ETM trace + znacznik GPIO, oscyloskop 500 MHz (pomiar ∆t ISR)

Metryki czasu (EA vs CA)

MEAS [PWM-PROF-DC-25-031]
Mode   DT[ns]  tISR_avg[µs]  tISR_pk[µs]  Jitter[ns]  CPU_Load[%]
EA     120     7.46          8.23         210         34
EA     180     7.58          8.30         188         35
CA     120     6.92          7.41         126         31
CA     180     7.01          7.55         118         31
CA     240     7.11          7.61         114         32

Tryb center-aligned (CA) obniża jitter okna próbkowania i skraca średni czas ISR o ~7,2% względem edge-aligned (EA), kosztem minimalnie większego czasu maksymalnego dla DT=240 ns.

Kolizje przerwań (profil)

TRACE COLLISIONS
t[ms]   SRC       Δt_preempt[µs]   Skutek
1.82    DMA_ADC   0.18             brak wpływu (coalesced)
4.07    TIM1_UP   0.51             przesunięcie próby ADC (+1 sample delay)
5.00    UART_TX   0.09             ignorowalne
7.35    TIM1_UP   0.62             pik ripple prądu +0,21 A

Preempcja TIM1_UP >0,5 µs w kluczowym oknie integracji ADC podbija ripple prądu o 0,18–0,24 A RMS.

Surowy trace ISR (skrót)

[GPIO:ISR_ENTER] t=3.125ms
ADC_ReadPair()          1.04µs
I_FilterIIR()           0.62µs
PI_Update_Q15()         1.88µs
Duty_SlewLimiter()      0.33µs
FaultCheck(OCP/UV)      0.21µs
PWM_WriteCCR()          0.27µs
[GPIO:ISR_EXIT]         tISR=4.35µs

[GPIO:ISR_ENTER] t=3.167ms
TIM1_UP preempt         0.58µs
Resume_ISR              ...
[GPIO:ISR_EXIT]         tISR=5.02µs  (pk)

Wariant z DMA dla ADC eliminuje koszty kopiowania (−0,31 µs), ale wymaga synchronizacji IDLE/half-transfer, aby nie tworzyć dodatkowego jitteru próby.

Wpływ na ripple prądu

RIPPLE CORR
Konfiguracja            Ripple_I [A RMS]
EA, DT=120, ADC async   0.92
EA, DT=180, ADC sync    0.68
CA, DT=180, ADC sync    0.53
CA, DT=180, ADC sync
 + TIM1_UP reprio       0.41

Największą poprawę uzyskano dzięki: (1) przejściu na CA, (2) synchronizacji ADC w środkowym oknie przewodzenia, (3) obniżeniu priorytetu TIM1_UP względem ISR pętli prądowej.

Nieprawidłowości i kody

Korekty konfiguracyjne (delta)

  1. Timer: CA, DT=180–200 ns; preskalery 1:1; synchronizacja ADC w centrum impulsu.
  2. ADC/DMA: DMA kołowe 2 próbki/okres; commit po EOC+TRGO; filtr IIR 2. rzędu Fc=200–250 Hz.
  3. Priorytety: ISR prądowy PRI=1, DMA PRI=2, TIM1_UP PRI=3 (lub DMA TX dla PWM).
  4. Regulator: ograniczyć tslew do 0,4–0,6 A/ms; feed-forward Vbus komp. zmian napięcia.
  5. Pomiary: stały znacznik GPIO na wej./wyj. ISR; rejestr ETM na okna awarii.

Po zmianach: tISR_avg=6,98 µs, jitter=112 ns, Ripple_I=0,41 A RMS, brak E:OCP-12 w 50 cyklach step-load.

Do potwierdzenia prawidłowości sygnałów kontrolnych profilowania wykorzystano układy i porównano logi urządzeń różnych serii.