Forum: Mikrocontroller und Digitale Elektronik STM32: Timer schnellerer Takt, als System


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Curby23523 N. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich arbeite mich gerade in die STM32 ein und programmiere diese direkt 
in Register-Ebene. An sich finde ich das bisher nicht 
komplexer/komplizierter als bei bei 8bittern, zumal in der 
Initialisierung sogar alles ausgeschaltet ist und die Grundeinstellung 
wie Timer laufen lassen nicht wirklich anders ist, als bei 8bittern.

Ich frage mich jetzt jedoch, ob ich die Clock von den Timern schneller 
laufen kann, als die System CLK. Das geht mir aus der Übersicht nicht 
ganz hervor.

Ich arbeite mit STM32F3 unf F4. Hier sehe ich nur, dass zur Peripherie 
stets ein Teiler ist, wobei beim Timer im Prescaler ein x2 angegeben ist 
(siehe Bild).

Bei den ATXmega konnte ich den Timer mit x4 Füttern also z.B. System CLK 
mit 32MHz und den Timer mit 128MHz. Das fand ich sehr nützlich, um hohe 
Frequenzen mit hoher Auflösung zu erzeugen.

Danke euch.

von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nils H. schrieb:
> Ich arbeite mit STM32F3 unf F4. Hier sehe ich nur, dass zur Peripherie
> stets ein Teiler ist, wobei beim Timer im Prescaler ein x2 angegeben ist
> (siehe Bild).

Das x2 gilt aber nur, sofern der Takt des Busses (APB1/2) kleiner als 
der Systemtakt (SYSCLK) ist (steht ja auch da in dem Kästchen). Mit 
anderen Worten, die Timer sind maximal so schnell wie der Haupttakt.

von Mampf F. (mampf) Benutzerseite


Bewertung
-1 lesenswert
nicht lesenswert
Nils H. schrieb:
> Ich frage mich jetzt jedoch, ob ich die Clock von den Timern schneller
> laufen kann, als die System CLK. Das geht mir aus der Übersicht nicht
> ganz hervor.

Nein, schneller ist unmöglich.

von STM Apprentice (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nils H. schrieb:
> Das geht mir aus der Übersicht nicht ganz hervor.

Doch geht es.

Die Timer bekommen ihren Takt von APBx, und dieser Pfad ist über
AHB Prescaler und APBx Prescaler direkt vom SysClk gespeist. In
diesem Pfad ist keinerlei Vervielfachung des Clocks ersichtlich.

von Christopher J. (christopher_j23)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Mampf F. schrieb:
> Nils H. schrieb:
>> Ich frage mich jetzt jedoch, ob ich die Clock von den Timern schneller
>> laufen kann, als die System CLK. Das geht mir aus der Übersicht nicht
>> ganz hervor.
>
> Nein, schneller ist unmöglich.

So pauschal stimmt das meiner Meinung nach nicht. Bei den F4, stimmt es, 
siehe auch die Begründung von Dr. Sommer.

Bei den F3 können die Timer durchaus auch mit doppeltem Systemtakt 
laufen, d.h. z.B. die Timer laufen mit 144MHz, während die CPU mit 72MHz 
läuft. Welche Timer das können ist unterschiedlich, geht aber immer 
direkt aus dem Clocktree hervor. Bei den F303x6/x8/xB/xC sind es nur die 
Advanced-Timer, also TIM1 und ggf. TIM8. Bei F303xD/xE können sowohl die 
Advanced Timer 1,8 und 20, sowie auch die General Purpose Timer 
2,3,4,15,16 und 17 mit jeweils doppeltem Systemtakt laufen.

Damit das möglich ist, muss das entsprechende Bit im RCC_CFGR3 gesetzt 
werden, die Taktquelle des Systems muss die PLL sein und ein paar 
weitere Einschränkungen gelten, was die APB- und AHB-Clock-Divider 
betrifft (die müssen im Prinzip alle minimal, also für maximalen Takt 
eingestellt sein). Das steht aber auch in der Beschreibung des RCC_CFGR3 
nochmal drin (wenn auch leider etwas unverständlich).

Um die Clock-Config zu verstehen finde ich übrigens CubeMX wirklich sehr 
hilfreich. Man kann einzelne Werte verändern und sieht sofort wie sich 
das auswirkt und man bekommt auch direkt einen Hinweis, wenn eine 
Einstellung so nicht passt. Ob man sich dann daraus auch irgendwelchen 
Code generieren lässt ist dann ja jedem selbst überlassen.

Falls dir die 144MHz bei den F303 nicht reichen, gibt es bei den F334 
auch noch einen High-Resolution Timer, der durch ein paar Tricksereien 
nochmal jeden Taktzyklus in 32 Einzelschritte zerlegt und das Teil somit 
eine Auflösung bietet als liefe der Timer mit 4.6 GHz. Allerdings gibt 
es da Einschränkungen, weil der eben tatsächlich doch "nur" mit 144MHz 
läuft.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.