Forum: Mikrocontroller und Digitale Elektronik STM32 TIM PWM Frequenz irritation


von Julian M. (julian_m992)



Lesenswert?

Ich hab hier ein STM32 Nucleo WB55.

Ich möchte mit einem Timer einer Frequenz durchstepen im Bereich von 
130kHz.

Dabei wollte ich mal Prüfen was die Grundtakt des Timer ist.
Bisher bin ich von der SYSCLK als Grundtakt des Timers ausgegangen, 
leider messe ich am PWM Timer aber was anderes. Was mache ich falsch?

Die SYSCLK hab ich auf 64 MHz eingestellt ursprünglich von der HSE 
versorgt mittlerweile über die HSI um die HSE als Fehlerquelle 
auszuschließen.

So wie das Verstehe müssten 64Mhz beim Timer ankommen.

Den Timer hab ich anschließen so eingestellt das er PWM ausgibt.
Dabei Prescaler auf 1 Autoreload auf 2 und Pulse auf 1.
Ich bin davon ausgegangen das jetzt ein Signal erzeugt wird das um die 
Hälfte kleiner ist als der Timertakt. Erwartet hätte ich 32MHz, ich 
bekomme aber nur 10,7 MHz.

von (Gast)


Lesenswert?

Julian M. schrieb:
> Den Timer hab ich anschließen so eingestellt das er PWM ausgibt.
> Dabei Prescaler auf 1 Autoreload auf 2 und Pulse auf 1.
> Ich bin davon ausgegangen das jetzt ein Signal erzeugt wird das um die
> Hälfte kleiner ist als der Timertakt. Erwartet hätte ich 32MHz, ich
> bekomme aber nur 10,7 MHz.

Wenn 2 im Register stehen zählt er bis 3 (0 - 1 - 2 sind 3 Werte). Der 
Rest ist ein Faktor 2, das wird sich vermutlich im ClockTree finden 
lassen.

von Julian M. (julian_m992)


Lesenswert?

Danke das Hilft doch gleich.
Hab jetzt mal Prescaler auf 0 und Autoreload 1 und Pulse 1.
Mit den Werten komme ich auf 32Mhz, meinen erwarteten Wert.


Wenn ich jetzt Prescaler auf 0.
Dabei Autoreload und Pulse langsam steiger habe ich das Problem das sich 
eine Schrittgröße von ca. 500 Hz einstellt.
z.B.
ARR=450 Pulse=225 => PWM=142,4kHz
ARR=452 Pulse=226=> PWM=141,8kHz
=> delta PWM =600Hz

wünschen würde ich mir aber eher ein Schrittgröße von 100Hz.
Kann ich mit PWM eine solche Schrittgröße gar nicht erreichen?
Oder kennt jemand eine Alternative Konfigurationsmöglichkeit des Timers 
mit dem ich das umsetzen könnte?
Der STM32WB hat leider keinen DAC.

von (Gast)


Lesenswert?

Julian M. schrieb:
> wünschen würde ich mir aber eher ein Schrittgröße von 100Hz.
> Kann ich mit PWM eine solche Schrittgröße gar nicht erreichen?

Ein Zähler der mit 64MHz zählt macht Perioden die ein Vielfaches von 
1/64MHz = 15,625ns sind, und das ergibt bei 142kHz halt eine Differenz 
von ca. 315Hz.

Für höhere Auflösungen gäbs schnellere STMs die teilweise dann Timer mit 
doppeltem Takt oder überhaupt high-resolution Timer haben, wo man die 
Periode mit 100ps-Schritten verlängern kann.

Was der DAC damit zu tun hat ist mir unklar.

von m.n. (Gast)


Lesenswert?

Ein STM32 mit 202 MHz liefert die 100 Hz Auflösung.
Dafür reicht ein STM32F7xx oder auch ein übertakteter F407.

von Julian M. (julian_m992)


Lesenswert?

Mhhh den WB hab ich mir mit Absicht wegen dem BLE Modul ausgesucht.
Wenn der aber hier nicht passt muss ich mir wohl noch den BLE NRG Chip 
von ST anschauen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.