Pulse skipping mit STM32L432

OP #5487086
Lesenswert?

Hallo,

ich benötige für einen digitalen Schaltregler Pulse Skipping. Dies wird 
benötigt um auch bei kleiner Last stabil zu laufen.

Also was ich will: Zahlenwerte nur als Beispiel.

1. PWM mit 10% Duty Cycle, f=10kHz
2. PWM mit 01% Duty Cycle, f=01kHz

Jetzt möchte ich, das die ausgegebene PWM nur High ist (mit Totzeit) 
wenn beide an sind. Im Prinzip ein einfaches und-Gatter zweiter Kanäle.

Bisher verwende ich den MKE14F von NXP, da konnte man das im System 
Register einstellen. Gibt es sowas auch bei den STM32L432ern?


Danke,
-Michael
#5487322
Lesenswert?

Michael H. schrieb:
> Im Prinzip ein einfaches und-Gatter zweiter Kanäle

Man kann bei L4/F7 und bei manchen F3 ohne Probleme zwei Kanäle eines 
Timers verknüpfen. Die Funktion heißt "Combined PWM Mode". Dabei ist 
dann aber logischerweise die Frequenz der beiden Kanäle gleich und 
lediglich der Duty-Cycle kann variieren. Falls die Frequenz so niedrig 
ist wie von dir beschrieben, kannst du natürlich auch einfach in einer 
Timer-ISR das jeweilige Capture/Compare Enable Bit setzen bzw. löschen. 
Ansonsten könntest du das auch einfach rein elektrisch machen, also zwei 
Timer mit jeweils einem Ausgang konfiguriert als Open-Drain, die Pins 
miteinander verbinden und noch einen Pull-Up dran, fertig. Kostet halt 
einen Pin. Eine weitere Möglichkeit wäre die Nutzung der 
ocref_clr-Funktion. Das kostet aber nochmal einen zusätzlichen Pin 
(Komparator oder ETR-Input). Einzige Ausnahme wo eine UND-Verknüpfung 
von zwei Timern direkt besteht, ist für die Erzeugung von IR-Signalen 
mittels IRTIM (TIM15 und TIM16).
#5487377
Lesenswert?

Christopher J. schrieb:
> Falls die Frequenz so niedrig
> ist wie von dir beschrieben, kannst du natürlich auch einfach in einer
> Timer-ISR das jeweilige Capture/Compare Enable Bit setzen bzw. löschen.

Wenn Du diesen Weg gehen willst, wäre der Weg über DMA schneller und 
Ressourcenschonender als über Interrupts:

Der eine Timer für das Skipping wird als Trigger für einen DMA-Kanal 
verwendet. Der schreibt dann aus einem Ringpuffer die passenden 
Pulslängen bzw. Enable-Bits in die Register des zweiten Timers.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren