Moin,
mein Problem ist, dass meine PLL nicht mit meinem HSE einrasten möchte.
Mein Code ist der folgende auf einem STM32F070CBT6:
1 | /*##### RCC #####*/
|
2 | FLASH->ACR = 1; //1 Waitstates
|
3 | RCC->CR |= RCC_CR_HSEON; //Extenen Quarz an
|
4 | while(!(RCC->CR & RCC_CR_HSERDY)); //Auf Quarz warten
|
5 | //RCC->CFGR |= RCC_CFGR_PPRE_DIV4;
|
6 | RCC->CFGR2 = RCC_CFGR2_PREDIV_DIV2; //Predivider = 2
|
7 | RCC->CFGR |= RCC_CFGR_PLLMUL12; //PLL multiplizierer * 12 = 48MHz bei 8MHZ Eingang
|
8 | RCC->CFGR |= RCC_CFGR_PLLSRC; //HSE als Source für PLL
|
9 | RCC->CR |= RCC_CR_PLLON; //PLL an
|
10 | while(!(RCC->CR & RCC_CR_PLLRDY)); //Auf PLL warten
|
11 | RCC->CFGR |= RCC_CFGR_SW_PLL; //PLL auswählen
|
12 | while(!(RCC->CFGR & RCC_CFGR_SWS_PLL)); //Auf PLL warten
|
13 | RCC->CR &= ~(RCC_CR_HSION); //HSI aus
|
Wenn ich mit "RCC_CFGR_PLLSRC" auf HSE als taktquelle für die PLL
umschalte bleibt die PLL bei "RCC_CR_PLLRDY" in einer Endlosschleife
hängen. Verwende ich den internen Oszillator, indem ich
"RCC_CFGR_PLLSRC" auskommentiere, locked die PLL (beides 8MHz).
In beiden Fällen kann ich mit dem Oszilloskop sehen, dass der externe
Quarz bei 8MHz schwingt. Ebenso kann ich den HSE statt PLL als
Taktquelle auswählen.
Was übersehe ich? PLL mit 8MHz HSi geht, mit 8MHz HSE (schwingt!) geht
nicht.
Danke!
Ich habe 18pF Kondensatoren wie laut Quarz Datenblatt.