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.