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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.