STM32F405 clocktree und USART

Gast #4703240
Lesenswert?

Liebe kundige ARM Kenner,

ich dachte immer laut ARM Cortex Reference manual figure 21, der USART1 
clock hängt über den AHB- und APB-prescaler an der SYSCLK.

Falls ich an der PLL rumschraube ändert sich SYSCLK und die Timerclocks 
aber USART1 läuft nach wie vor super.

Umgekehrt: Falls ich HSE ändere und die SYSCLK über die PLL konstant 
lasse passt die Baudrate nicht mehr. Der USART1 clock scheint also an 
HSE und nicht an SYSCLK zu hängen.

Das steht im Referance manual anders.
Wo ist denn da mein Verständnisproblem?

THX
Cheers
Detlef
#4703761
Lesenswert?

Hallo,

hier mal die Initialisierung des UART1, habe ich irgendwoher adaptiert, 
geht auch. Ebenfalls der clock tree aus dem Reference Manual angehängt. 
USART1 hängt festverdrahtet an APB2 und der fest an SYSCLK, USART clock 
dürfte sich also nicht ändern falls sich SYSCLK nicht ändert, tut er 
aber.

AHB1 muss man auch noch bespielen, warum verstehe ich nicht richtig, 
aber der hängt ja auch an SYSCLK.

Ja, CubeMX, lohnt sich die Einarbeitung.

hmhm
Cheers
Detlef
Angehängte Dateien:
#4704240
Lesenswert?

Hi,

>>Woran machst Du die Aussage fest? Per Oscar/LA?

An der SYSCLK hängt auch noch ein Zähler, der Interrupts generiert. Wenn 
ich dann HSE ändere ( 10MHz TCXO statt 8MHz Q ) aber SYSCLK gleich 
bleibt ( weil ich die PLL modde ), dann kommen die Interrupts in der 
gleichen Frequenz. Nur der UART gibt in einer anderen Baudrate aus, 
72kBd statt 57.6kBd vorher, also der passende Faktor.

Habs' inzwischen umschifft, indem ich die Baudrate entsprechend ändere. 
Verstanden ist das allerdings nicht, beunruhigend.

THX
Cheers
Detlef
Gast #4704265
Lesenswert?

Hm,
änderst du denn auch die HSE-Frequenz in der system_32f4xx.c? Denn 
zumindest bei den Treibern für den F407 (STM32-discovery) rechnet sich
  USART_Init(USART1, &USART_InitStruct);
die Teilerfaktoren für die Baudratenregister aus den Angaben in der 
system_32f4xx.c aus. Wenn du also in dieser Datei an den PLL-Teilern 
spielst, wird das bei der Initialisierung des USARTS berücksichtigt. 
Wenn du einfach einen anderen HSE dranlötest und das nicht in der Datei 
änderst, stimmen die Baudraten nicht mehr.

Hätte ja sein können
bbb

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren