Forum: Mikrocontroller und Digitale Elektronik STM32F4 Clocks


von Moritz M. (avrprogger)


Lesenswert?

Hallo,

also ich hab mal ein paar Fragen zu den Clocks der STM32F4.
Nach dem Reset wird der Interne Takt verwendet also alle Clocks = 16MHz?
Was passiert wenn ich ausversehen die aktuelle Clock-Source abschalte? 
Läuft er dann wieder mit internem Takt weiter (ClockException-Handler?)
Was ist HCLK?

Wäre sehr hilfreich wenn ihr mir die Fragen beantworten könntet.

Moritz

von Phantomix X. (phantomix)


Lesenswert?

Moritz M. schrieb:
> Nach dem Reset wird der Interne Takt verwendet also alle Clocks = 16MHz?

Nach dem Reset ist der HSI aktiv (High Speed, intern).

> Was passiert wenn ich ausversehen die aktuelle Clock-Source abschalte?
> Läuft er dann wieder mit internem Takt weiter (ClockException-Handler?)

So ist der Plan. Das habe ich zwar noch nicht getestet, aber für solche 
Fälle gibt es diese Exception. Ob sie auftritt, wenn du es 
softwareseitig umschaltest, oder nur wenn der Quarz ausfällt, weiss ich 
gerade nicht.

> Was ist HCLK?

High speed clock
HCLK ist dein Systemtakt, der aus HSI, HSE, PLL... gewonnen wird, je 
nach Konfiguration.

> Wäre sehr hilfreich wenn ihr mir die Fragen beantworten könntet.

Kein Problem.

von jochen (Gast)


Lesenswert?

Hallo Moritz,

lies Dir mal, wenn du magst, die Kommentare in folgender Datei durch

https://github.com/jkerdels/stm32edu/blob/master/src/rcc.c

Dort geht es Schritt für Schritt durch die Initialisierung des 
Clock-Trees...

Viele Grüße,
Jochen

von jochen (Gast)


Lesenswert?

Kurze Ergänzung:

Die dort angegebenen Referenzen in eckigen Klammern sind hier

https://github.com/jkerdels/stm32edu/blob/master/src/main.c

definiert.

Grüße,
Jochen

von Michael N. (much)


Lesenswert?

Hi,

im "Reference Manual" ab Seite 84 sind die clocks beschrieben. Auf Seite 
85 ist der "Clock Tree" auch graphisch dargestellt. Anhand dessen kann 
man die clocks des Controllers finde ich ganz gut verstehen (Bei mir 
wars jedenfalls so, allderdings beim STM32F1).

lg much

edit: hier der link zum manual: 
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/DM00031020.pdf

von Matthias K. (matthiask)


Lesenswert?

Von STM gibt es ein ganz brauchbares Tool für die F4-Clocks 
(Excel-Tabelle):
http://www.st.com/internet/com/SOFTWARE_RESOURCES/TOOL/CONFIGURATION_UTILITY/stm32f4_clockconfig.zip

Es kann auch gleich die passende "system_stm32f4xx.c" erzeugen.

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

also ich hab einfach mal ein bisschen rumprobiert. Anscheinend geht es 
nicht, dass man einfach den Takt abdreht. Ich hab es einfach mit 
folgendem Programm mal getestet:
1
#include "stm32f4xx.h"
2
3
int main(void)
4
{
5
  SystemInit();
6
//Hier läuft der Controller mit 168MHz durch PLL und externem HSE-Quarz von 8MHz
7
8
  RCC_HSEConfig(RCC_HSE_OFF);
9
10
  SystemCoreClockUpdate();
11
12
  RCC_ClocksTypeDef RCC_Clocks;
13
  RCC_GetClocksFreq(&RCC_Clocks);
14
//Hier sind es immer noch 168MHz
15
    while(1)
16
    {
17
    }
18
}

von holger (Gast)


Lesenswert?

>also ich hab einfach mal ein bisschen rumprobiert. Anscheinend geht es
>nicht, dass man einfach den Takt abdreht. Ich hab es einfach mit
>folgendem Programm mal getestet:

Schliess doch mal den Quarz kurz;)

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

>> Schliess doch mal den Quarz kurz;)

also mir geht es erstmal nur um die Software.



Ist HCLK = AHB1, AHB2, AHB3 ??
Im Datenblatt steht nichts von HCLK.
HCLK ist nicht der Systemtakt, da HCLK = SYSCLK / Div_XX
und SYSCLK ist der Systemtakt.

Moritz

von Moritz M. (avrprogger)


Lesenswert?

Hallo,


also ich hab jetzt raus gefunden, dass HCLK = AHBx ist.

Moritz

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.