stm32 ADC Clock, Systemclock

Gast #2275808
Lesenswert?

Ich hätte mal eine Frage zum ADC Clock. Der hängt ja am PCLK2 und kann 
durch einen Vorteiler noch herunter gesetzt werden. Nun sind die 
Standardkonfiguarationen des 1007VC (wenn ich das richtig ausgelesen 
habe) so eingestellt, dass der PCLK2 mit 72 MHz läuft.

#define SYSCLK_FREQ_72MHz  72000000
    /* HCLK = SYSCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
    /* PCLK2 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;




Ein ST Beispiel (ADC) teilt diesen dann durch 4 => 18MHz.

  #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined 
(STM32F10X_HD_VL)
    // ADCCLK = PCLK2/2
    RCC_ADCCLKConfig(RCC_PCLK2_Div2);
  #else
    // ADCCLK = PCLK2/4
    RCC_ADCCLKConfig(RCC_PCLK2_Div4);
  #endif



Im Datenblatt steht als Maximale Frequenz allerdings 14 MHz. Kann ich 
den ADC jetzt höher betreiben, muss ich runter auf Teiler 6 = 12MHz oder 
wo habe ich was überlesen?



Außerdem mal noch die Frage: kann der Sysclock eigentich auf annähernd 
72Hz gebracht werden wenn ein externer 25MHz angeschlossen ist oder 
empfiehlt es sich doch eher einen 8MHz Oszillator anzuschließen?
Gast #2275816
Lesenswert?

Bin auch gerade an diesem Thema, also ich würde mich an das Datenblatt 
halten, ich betreibe ihn mit 12Mhz.

Bei einem 25MHz Quarz könntest du ihn auf 75MHz laufen lassen, dieses 
Übertakte müsste er aushalten.
Gast #2275823
Lesenswert?

Ja, ist aber halt offiziell außerhalb der Spzifikation, deswegen wundere 
ich mich, das alle Hersteller verbauen (und ich glaube irgendwo ist er 
im Datenblatt auch angepriesen). Ich meine der Takt passt ja zu gar 
nichts (außer zur maximal zulässigen Beschaltung).
Gast #2275849
Lesenswert?

Gut danke, ich habe trotzdem noch mal etwas weiter gesucht und das hier 
gefunden^^, der Aufbau scheint zu stimmen wenn ich mir das Datenblatt 
ansehe:


STM3210E what causes need of using second PLL to produce CPU 72MHz.

HSE == 25MHz   /  PREDIV2 == 5 -> 5MHz   *  PLLMUL2 == 8 ->
40MHz / PREDIV1 == 5 -> 8MHz * PLLMUL == 9 -> 72MHz = SYSCLK

It's looks ugly but above method it's used in ST source code for 
STM3210C
evaluation board.




Quelle:
http://old.nabble.com/R%3A-STM32F107-on-STM3210C-EVAL-p31261340.html
Gast #2275942
Lesenswert?

Wenn ich mich jetzt nicht vertan habe sollte ein 14Mhz ADC dann so 
funktionieren:

//  HSE ==25MHz     /  RREDIV2 == 5 -> 5MHz   *  PLLMUL2 == 14 ->
//  70MHz / PREDIV1 == 5 -> 14 MHz * PLLMUL == 5 -> 70 MHz = SYSCLK

Dadurch wird allerdings der PLL2CLK unbrauchbar, da er auf 70Mhz läuft.

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