rp2040 Initialisierung pll_sys

OP #7363901

Hallo zusammen, ich versuche inzwischen seit Stunden meinem RP2040 den Takt der PLL_SYS zu verpassen. Irgendwie bleibt der Takt immer auf der clock_ref hängen, egal in welcher Reihenfolge und Versuchen ich das probiere. IDE ist Segger Embedded Studio. Das funktioniert eigentlich sehr ordentlich zusammen mit einem JLINK Ultra. Fertige Beispiele anderer IDEs laufen mit der pll_sys. Ich initialisiere die PLL, dann den clock_sys, aber ich kann immer nur zwischen rosc und xosc umschalten auf der clock_ref. Ein Umschalten des Taktes auf die clock_sys klappt einfach nicht.

Hat vielleicht jemand eine Idee dazu, welche Abhägigkeiten dabei zu beachten sind. Die anderen clock Teile werden nicht verwendet, ebenso die pll_usb.

besten Dank an die Leser meines Textes

Schorsch

OP

Das CLR_REF_CTRL kann ich nur noch auf die pll_usb schalten (nach Datenblatt). Nach Datenblatt soll aber doch der CLK_SYS die CPUs versorgen ???

Ich stell mir das bei clk_sys so vor

das src Feld kann den Takt auf 0x0 → clk_ref 0x1 → clksrc_clk_sys_aux

legen. Und das clksrc_clk_sys_aux kann mit dem Feld AUXSRC auf 0x0 → clksrc_pll_sys 0x1 → clksrc_pll_usb 0x2 → rosc_clksrc 0x3 → xosc_clksrc 0x4 → clksrc_gpin0 0x5 → clksrc_gpin1 gestellt werden. Ich hab daher folgendes gemacht:

CLOCKS->CLK_SYS_CTRL = 0x41; // aux=rosc, aux CLOCKS->CLK_SYS_DIV = 0x100; CLOCKS->CLK_SYS_CTRL = 0x01; // aux=pllsys, aux

Der Takt wird aber immer noch vom CLK_REF an die CPU geliefert. Diese kann ich zwischen rosc und xosc umschalten. Imm Datenblatt wird irgendwas von einem Enable gefaselt, aber im SYS_CTRL Register ist davon nicht angegeben. Und irgendwie wird immer mal wieder das CLK_GPOUT0 erwähnt. Mir ist nicht klar, was das damit zu tun haben soll ???

OP

Wenn ich das CLK_SYS_DIV Register verstelle passiert nix, aber wenn ich CLK_REF_DIV verstelle. Muss ich denn auf irgendetwas warten beim umschalten , z.B. dass das CLK_SYS_SELECTED Register verstellt ist. Ich vermute, dass die Zeit reichen sollte, wenn ich im single step durch mein Programm laufe ???

OP

Hallo Mi N., ich hab deine Initialisierung mal angesehen und nachvollzogen. Damit klappt es offenbar. Jetzt ist der CLK_SYS der Versorger der CPU und ensprechend einstellbar. Ich bin nicht sicher, ob alles andere passt, aber das sieht schon gut aus. Vielen, vielen Dank für deine Hilfe.

Ich hab nur immer noch keine Idee, was ich anders mache. Evtl. ist es einfach die Reihenfolge.

Besten Dank für Eure Anregungen und Hilfe. Mal sehen, ob das so weiter funktioniert. :-)

Schorsch

Schorsch X. schrieb:

Wenn ich das CLK_SYS_DIV Register verstelle passiert nix, aber wenn ich CLK_REF_DIV verstelle.

Die PLLs haben mehr als nur zwei einstellbare Größen. Es sind insgesamt im Wesentlichen fünf. Und alle fünf müssen sinnvoll eingestellt werden. Und man kann sie nur dann umkonfigurieren, wenn die PLL gerade nicht aktiv ist (insbesondere natürlich nicht als Quelle for CLK_SYS).

Vielleicht liest du einfach mal die Datenblätter, bevor du sinnlos rumhackst.

Mi N. schrieb:

Das FBDIC_INT Register von PLL_SYS kann man zur Laufzeit prima verstellen. Und POSTDIV1 und POSTDIV2 natürlich auch, solange man nicht zu hoch übertaktet.

Ja, machen kann man eine Menge, was durch die Hardware nicht explizit verhindert wird. Aber ob das auch sinnvoll ist, steht auf einem ganz anderen Blatt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.