STM32 TIM PWM Frequenz irritation

OP #6021221
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.
Gast
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.
OP
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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.