Hallo zusammen, ich beginne mich gerade in den STM32 einzuarbeiten. Kurze und bündige Frage hierzu wie schafft man es auf eine Taktfrequenz von den 168MHz des STM32F429 Disovery zu kommen? Soweit ich es richtig verstanden habe kann ich dazu 3 verschiedene Taktgeber benutzen. Nehmen wir mal an HSI (8MHZ) und PLL, wie sieht derer beiden zusammenspiel aus um auf die 168MHz zu kommen ? Beste Grüße
STLover schrieb: > Nehmen wir mal an HSI (8MHZ) HSI sollte aber 16 MHz sein und sonst: /M = /16 *N = *336 /P = /2 hätte sich aber mit CubeMX sehr schnell selber rausfinden lassen...
Schau dir den Clocktree im RM0090 Reference Manual der STMF4 Serie mal genauer an, auf Seite 150/1713 die Fig. 16. Das Disco F429 hat den 8Mhz Quarz am HSE, so das das vermutlich die beste Oszillatorwahl ist. Das HSE Signal teilt sich nun auf die AHB (Highspeed), APB (PeripheralClock 1 und 2) und die Master PLL mit den M und N Teilern auf. Das ganze wird dann durch den Faktor P geteilt, klingt zuerst etwas kompliziert. Du möchtest 168 Mhz, es kommt also nur die PLLCLK in Frage. Der Clocktree wird in 'system_stm32f4xx.c' konfiguriert. Die Konstanten entsprechen dabei den Teilern in der PLL, also
1 | /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
|
2 | #define PLL_M 4
|
3 | #define PLL_N 168
|
4 | |
5 | /* SYSCLK = PLL_VCO / PLL_P */
|
6 | #define PLL_P 2
|
Verfolgen wir das mal: 8Mhz aus dem Quarz werden zuerst durch M=4 geteilt, am Eingang der PLL stehen also 2MHz. Der Faktor N wirkt als Multiplikator, also ist die interne PLL Frequenz 2*168 = 336 Mhz. Am Ausgang der PLL wird dann durch P geteilt: 336/2 = 168Mhz. So läuft das für die anderen PLLs auch. Dabei ist zu beachten, das du innerhalb der Grenzen des Systems bleibst, das wird auf der folgenden Seite im Reference Manual beschrieben. Also nicht mehr als 180Mhz auf AHB, nicht mehr als 90Mhz auf APB2 und nicht mehr als 45 Mhz auf APB1.
Darauf bin ich auch gerade gekommen :-) Danke. Gehe ich richtig der Annahme dass es sich bei /M und /P um Prescaler handelt ? Bei was handelt es sich um *N ? Ich weiss ein Teil vom PLL aber wie gesagt ich bin gerade dabei mir das wissen anzueignen. Und noch eine Frage Wenn ich HSI = 16MHz einstelle M : /8 N : *336 P : /2 bekomme ich eine SYSCLK von 336 MHz, was augenscheinlich nicht geht da rot gekennzeichnet, was mich interessiert warum geht dies im theoretischen & praktischen nicht, wie komme ich auf mein Limit ?
Matthias S. schrieb: > Das HSE Signal teilt sich nun auf die AHB > (Highspeed), APB (PeripheralClock 1 und 2) und die Master PLL mit den M > und N Teilern auf. Stimmt hier nicht ganz, du hast die Wahl zwischen HSI, HSE und PLLCLK. PLLCLK ist die einzige sinnvolle Wahl.
Stark! Danke Matthias! Aber an welchen Kritieren wähle ich denn meine M,N,P Parameter aus ?
STLover schrieb: > Aber an welchen Kritieren wähle ich denn meine > M,N,P Parameter aus ? Du wirst immer von der Taktquelle ausgehen müssen, die du hast, wie z.B. beim Disco der 8MHz Quarz. Ab dann heisst es eigentlich 'so schnell wie möglich und so langsam wie nötig', das heisst, du musst dich innerhalb der von der Hardware gesetzten Grenzen bewegen. Das heisst z.B., das du nicht mehr als 180Mhz SYSCLK benutzen darfst und das die interne Master PLL nicht höher als wie im jeweiligen Datenblatt beschrieben, getaktet werden darf. Praktisch sind die 168Mhz, weil sich daraus alle anderen Clocks mit dem maximal möglichen Frequenzen ableiten lassen.
:
Bearbeitet durch User
Super! Und die M,N & P Parameter wähle ich so aus damit ich diese Grenzwerte einhalte ?
STLover schrieb: > Wenn ich HSI = 16MHz einstelle > > M : /8 > > N : *336 > > P : /2 > > bekomme ich eine SYSCLK von 336 MHz, was augenscheinlich nicht geht da > rot gekennzeichnet, was mich interessiert warum geht dies im > theoretischen & praktischen nicht, wie komme ich auf mein Limit ? Genau, SYSCLK darf eben maximal 180Mhz sein. Du setzt also entweder M = 16 oder P = 4, wobei P = 4 die bessere Wahl ist, weil ein 2Mhz Takt weniger jittert als ein 1 Mhz Takt - das ist vor allem für die I2S Clock wichtig, die dich im Moment noch nicht so interessiert. Nimm aber immer besser den HSE als den HSI Oszillator, denn der Quarz ist ja schon auf dem Board und wesentlich stabiler als der HSI RC Oszillator.
:
Bearbeitet durch User
Jup, wieder mal was gelernt, nochmals danke. Behalte mir das jittern im Hinterkopf.
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.