Hallo, per Default wird der Core Clocj ja auf 180 Mhz Vollgas eingestellt. Nun komme ich aus der PIC Welt wo man die Frequenz nach Belieben mal eben ändern kann. Beim LPC23xx wurde daraus schon ein kleines Drama die Parameter zu berechnen jund beim M4 habe ich das Gefühl es wird ein Chaos. Vorsichtige Frage: Ist es einfach möglich den Core Takt (SYSCLK) auf andere Werte einzustellen wo auch die Peripherels noch funktionieren? Betrieben wird die CPU durch einen 8Mhz Quarz. Würde reichen in 3-4 Schritten bis 180 Mhz. Habe das Gefühl dass zig andere Takte auch davon abhängen und die Peripherie dann nicht mehr funktioniert, zb die Uart. Das Core Tool von STM habe ich schon ausprobiert aber so richtig erschliesst sich mir nicht wie das zu benutzen ist. Gruss, Christian
Ja das geht und ist detailliert im Reference Manual beschrieben. Bitte dort nachlesen (Kapitel "RCC"). Das STM32CubeMX Tool hilft beim Berechnen der Vorteiler/Multiplikatoren etc.
Such mal nach der Funktion in der das RCC->PLLCFGR Register und einige andere damit zusammenhängende Register initialisiert werden. Das was diese Funktion tut (in allen Einzelheiten und unter Zuhilfenahme des Reference Manuals [ja, das dauert ein paar Stunden, aber danach bist Du schlauer]) wird Dir zur Macht verhelfen die Taktfrequenzen nach Herzenslust (im Rahmen der Möglichkeiten) einzustellen.
:
Bearbeitet durch User
Hallo, danke für die Info. Ich sehe ohne viel Lesen geht es hier wohl nicht. Allerdings habe ich das beim LPC2368 auch selbst zusammen gekriegt ohne Vorlagen und es lief sogar hinterher. Schätze nur hier wird es einiges aufwendiger die gangschaltung ins Projekt einzubauen :-( Möchte nämlich den Idle Mode stromsprend haben und nur bei Sprung ins Programm soll er Vollgas geben.
Beim STM3232F4: Die PLL hat Clock-Quellen, die man aus wählt. z.B. die HSE = Hi Speed External, also der Quarz. Dann gibt es ein Mutiplikationsregister und ein Divisonsregister. Den Quarz multipliziert man auf 200..422 MHz. Anschließend dividiert man die auf max 180 MHz wieder runter. Die PLL muss aktiviert werden und dann schaltet man die PLL für den Betrieb mit der CPU um, also von der internen HSI Clock Quelle auf die PLL. Anhand der Statusregister sieht man ob die PLL korrekt läuft und man umschalten darf. Das ganze steht in wenigen Registern der RCC Einheit drin. Das ganze steht auch in der Datei "system_stm32f4xx.c" der ST Library. So der Ablauf. PS: Das CubeMX Tool errechnet zum Teil falsche (zu große) zwischenwerte nach der Multiplikation! Es kamen mal 800MHz raus und der Kollege wunderte sich warum sein Chip nicht richtig lief. Hier im Artikel kann dies auch nachgelesen werden: http://www.mikrocontroller.net/articles/STM32_CooCox_Installation#Clock_auf_168MHz_einstellen
:
Bearbeitet durch User
Hi Markus, danke, ich kriege grad einen Schreck bei meinem 429 Disco Board, dort steht in der stm32fxx.h ein weert von 25 Mhz fuer den Quarz, verbaut ist aber ein 8 Mhz. Und es läuft. Muss ich den jetzt ändern? Ich weiss leider nicht wie ich die Global Defintionen abfragen kann in der IDE welche alle definiert sind. Mit #error sehe ich dass beide ausgeführt werden, also HSE Value letzlich auf 16 Mhz steht. Seltsam. Ich habe die Version 1.4.0 von 2014. Blöderweise weiss ich nicht wie ich HSE_VALUE bei EmBlocks global definieren kann, unter Compiler Defines klappt es nicht. Dann kommt ein Fehler. /** * @brief In the following line adjust the value of External High Speed oscillator (HSE) used in your application Tip: To avoid modifying this file each time you need to use different HSE, you can define the HSE value in your toolchain compiler preprocessor. */ #if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ #endif /* HSE_VALUE */ /** * @brief In the following line adjust the External High Speed oscillator (HSE) Startup Timeout value */ #if !defined (HSE_STARTUP_TIMEOUT) #define HSE_STARTUP_TIMEOUT ((uint16_t)0x05000) /*!< Time out for HSE start up */ #endif /* HSE_STARTUP_TIMEOUT */ #if !defined (HSI_VALUE) #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ #endif /* HSI_VALUE */
Christian J. schrieb: > Blöderweise weiss ich nicht wie ich HSE_VALUE bei EmBlocks global > definieren kann, unter Compiler Defines klappt es nicht. Dann kommt ein > Fehler. Project/Build Options/Compiler Settings/#defines HSE_VALUE=8000000 eingeben. Das klappt nicht? Schneller ist "ALT+F7"
m.n. schrieb: > Project/Build Options/Compiler Settings/#defines > HSE_VALUE=8000000 > eingeben. Das klappt nicht? Schneller ist "ALT+F7" Doch..... wenn ich das = Zeichen enfüge geht es :-) Trotzdem muss auch stm32fxx.h modifiziert werden da dort PLL_M immer noch auf 25 steht und nicht auf 8. Tja, seitddem läuft er schneller, ca doppelt so schnell würde ich sagen. War vorher falsch eingestellt. Aber Led Blinken erzeugt mir jetzt auch Helligkeitsunterschiede im LCD, da der Spritverbrauch ja auch höher ist.
Christian J. schrieb: > Aber Led Blinken erzeugt mir jetzt auch Helligkeitsunterschiede im LCD, > da der Spritverbrauch ja auch höher ist. Schuld daran ist die Schottky Diode D3, die die Versorgung aus dem eigentlichen 3,3V Regler U1 um weitere 0,2-0,3V zusammenbrechen lässt. Wenn du den externen 3V Eingang nicht benutzt (also 5V über USB oder Pfostenleiste einspeist), ist es problemlos möglich, die Diode zu überbrücken. Dann werden alle Bausteine mit den richtigen 3,3V gespeist, und das Bild des TFT ist wesentlich heller und schöner. Ausserdem ist die Versorgung nicht mehr so mit Spikes belastet.
Matthias Sch. schrieb: > Schuld daran ist die Schottky Diode D3, Leute, was ihr nicht alles wisst :-) Ich werf dann mal den Lötkolben an.... edit: Wieso BF 0603 wenn auch 0402 geht? Grrrr. Padvon D3 abgelöst, mit 0,1mm Draht gerettet. Aber das Flackern ist wenigstens weg und es ist heller.
Christian J. schrieb: >> Schuld daran ist die Schottky Diode D3, > > Leute, was ihr nicht alles wisst :-) Ich werf dann mal den Lötkolben > an.... Das ist kein grosses Geheimnis. Drauf gekommen bin ich, nachdem ich das Mini-Oszi von Uwe B. auf die Kiste geflasht hatte und enorme Störungen aufm Schirm hatte. Das Oszi hat mir dann von der unruhigen Betriebsspannung berichtet. Alle Bausteine kommen gut mit 3,3V zurecht, ist also kein Grund zur Sorge. Noch ein Hinweis zur Core Clock, falls du mal mit Digitalaudio (I2S) zu tun hast. Die normalen Konfigurationen stellen die I2S PLL auf 1 MHz, empfohlen werden aber von ST 2MHz. Das betrifft allerdings eher den Disco F407 als den F429, auf dem ja nicht so viel Audiozeugs ist.
:
Bearbeitet durch User
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.