Ich versuche nun schon seit geraumer Zeit an einem stm32f107 einen externen Quarz zum laufen zu bringen. Angeschlossen habe ich einen 16mHz Oszillator an den beiden Anschlüssen OSC_IN und OSC_OUT, verbunden mit zwei 22pF Kondensatoren gegen Masse. Als IDE kommt uvision4 zum Einsatz, mit einem J-Link EDU jtag. Gearbeitet wird mit der standard stm32 C Bibliothek. Das Problem tritt auf wenn ich versuche den HSE einzuschalten. Sprich das von RCC_WaitForHSEStartUp() ausgelesene Flag meldet mir keinen "Success". Wäre für jede Hilfestellung dankbar. Code: [code] ErrorStatus hse_state; /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ hse_state = RCC_WaitForHSEStartUp(); if (hse_state == SUCCESS) { . . . } /code]
Ich benutze dazu die Funktion SystemInit() aus der system_stm32f10x.c Datei.
Bei mir sieht das für einen 12Mhz Quarz so aus:
1 | void RCC_Configuration() |
2 | {
|
3 | RCC_DeInit(); |
4 | |
5 | RCC_HSEConfig(RCC_HSE_ON); |
6 | while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); |
7 | |
8 | FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); |
9 | FLASH_SetLatency(FLASH_Latency_2); |
10 | |
11 | RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6); |
12 | RCC_PLLCmd(ENABLE); |
13 | |
14 | RCC_HCLKConfig(RCC_SYSCLK_Div1); // set AHB speed |
15 | RCC_PCLK2Config(RCC_HCLK_Div1); // set high speed APB1 (72Mhz) |
16 | RCC_PCLK1Config(RCC_HCLK_Div2); // set low speed APB2 (36Mhz) |
17 | |
18 | RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); |
19 | while(RCC_GetSYSCLKSource() != 0x08); |
20 | |
21 | SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); |
22 | }
|
Nehme mal an, Du hast einen Quarz zwischen OSC_IN und OSC_OUT geschaltet. Deine beschriebenen Probleme kenne ich, wenn Quarze mit falscher Lastkapzität bestückt werden und dann nicht anschwingen. Hast Du hiernach http://www.st.com/stonline/products/literature/an/15287.pdf die Schaltung ausgelegt? HTH
Die Schaltung folgt eigentlich schon den Beschriebenen Anforderungen in der pdf. Könnte es ein Problem sein das der Controller auf einer Adapterplatine sitzt, welche mit einem Steckbrett verbunden ist auf welchem sich der Quarz befindet.
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.