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


von Curby23523 N. (Gast)


Angehängte Dateien:

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)


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


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)


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:

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.

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.