Ich muss vorweg sagen, es ist das erste Mal, dass ich einen ST-Mikrocontroller programmiere, vorher habe ich nur mit TI-Controllern gearbeitet. Problem: Habe mit einem Oszilloskop am Quarz gemessen, der schwingt nicht. Woran kann das liegen? Hardware: Ich habe eine Platine mit dem Controller STM32G474VET6 aufgebaut. Als Quarz habe ich den XRCGB24M000FAN00R0 (24 MHz) gewählt. Parallel gegen GND hängt jeweils ein Kondensator mit 6 pF. Der Quarz ist angeschlossen an den Pins 12 und 13 (PF0 OSC IN, PF1 OSC OUT). Software: In CubeMX sind die beiden Pins als "RCC_OSC_IN" und "RCC_OSC_OUT" konfiguriert. Unter "System Core -> RCC" wird mir ein Ausrufezeichen angezeigt, allerdings weil "LSCO Clock Output" nicht auswählbar ist, da PA2 anderweitig belegt ist, aber die Option möchte ich auch gar nicht nutzen. Gebe ich PA2 frei, ist die Warnung weg, aber es ändert sich nichts. Die Konfiguration in "Clock Configuration" ist dem angehängten Bild zu entnehmen. Nun hätte ich erwartet, dass damit alles Nötige eingestellt ist, aber scheinbar ist dem nicht so. Kann mir jemand sagen, was hier fehlt? Vielen Dank. Edit: Ach ja, der Controller läuft aber trotzdem, weshalb ich davon ausgehe, er verwendet als Rückfalllösung wieder den internen Takt.
:
Bearbeitet durch User
Der Tastkopf kann (muss nicht, aber ...) den Oszillator zu stark belasten, so dass er halt nicht mehr schwingt. Die Einstellungen per HAL können fehlerhaft sein (wär' nicht das erste Mal, dass CubeMX da einen Bug hat). Alles etwas Herumgestochere im Nebel ... Zuverlässige Diagose geht wohl nur, indem man mittels Debugger in RCC_CR nachsieht, insbesondere HSERDY ist da wichtig. Aber auch die anderen Bits und die weiteren Register, RCC_CFGR, RCC_PLLCFGR sollte man Bit für Bit anhand RM kontrollieren. Andere Möglichkeit: MCO passend konfigurieren und da mit Oszi kontrollieren. Das gibt aber halt nur "geht" oder "geht nicht" ...
Besten Dank für die Antwort. Ein Screenshot mit den Registern ist angehängt. Sind die Register irgendwo dokumentiert? Bisher konnte ich kein Dokument bei ST finden, in dem irgendein Register beschrieben wird. Hab das Gefühl man wird dazu genötigt nur die HAL-Bibliotheken zu nutzen und man soll bloß nicht in Kontakt mit Registern kommen. Für mich erscheinen die Werte widersprüchlich. PLLSYSRDY ist auf 0, aber PLLSYSON ist auf 1. Da HSERDY und HSEON beide auf 1 sind, gehe ich davon aus, alles ist in Ordnung. Sehe ich das richtig? Um herauszufinden, ob der Quarz beim Messen aufhört zu schwingen, habe ich testweise den Tastkopf die ganze Zeit an OSC_OUT gelassen, den Controller programmiert, es kam nie eine Schwingung, die beiden Register sind aber trotzdem auf 1 gesetzt. Die Register sagen "alles in Ordnung", das Oszilloskop das Gegenteil. Ich könnte natürlich versuchen zu testen, ob der interne oder der externe Takt genutzt wird. Da kenne ich als Möglichkeit eine PWM zu erzeugen und bei starker Temperaturänderung (Kältespray) gucken, ob die Flanke wegläuft. Das werde ich wohl auch so machen, wenn sich sonst nichts weiter auftut.
Terence S. schrieb: > Sind die Register irgendwo dokumentiert? Bisher konnte ich kein Dokument > bei ST finden, in dem irgendein Register beschrieben wird. Die Registerbeschreibungen finden sich bei ST - im Gegensatz etwa zu TI - nicht im "datasheet", sondern im "reference manual". A. B. schrieb: > MCO passend konfigurieren und da mit Oszi kontrollieren. Würde ich auch empfehlen.
Christopher J. schrieb: > Terence S. schrieb: >> Sind die Register irgendwo dokumentiert? Bisher konnte ich kein Dokument >> bei ST finden, in dem irgendein Register beschrieben wird. > > Die Registerbeschreibungen finden sich bei ST - im Gegensatz etwa zu TI > - nicht im "datasheet", sondern im "reference manual". > Sind "nur" 2127 Seiten auf denen jedes Bit beschrieben ist:-) https://www.st.com/en/microcontrollers-microprocessors/stm32g474ve.html#documentation Und die anderen gut 100 Dokumente mit weiteren Tausenden von Seiten dort sollte man wenigstens von den Überschriften her mal gesehen haben und wenn man mit den jeweiligen Themen zu tun hat durchaus mal reinschauen.
Ich denke, "HSE" muss erst noch eingeschaltet werden. Der ist noch ausgegraut.
Dass HSE ausgegraut ist, ist normal, wichtig ist, dass "Input Frequency" blau ist. Zugegeben etwas irritierend ... Aber sonst sehen die PLL-Register (Teiler etc.) richtig aus, nur dass SW (und damit auch SWS) auf '01' stehen, d. h. HSI16 als Systemtakt. Anscheinend wird nie versucht, auf PLL-Takt umzuschalten, denn SW ist ja auf 01, vermutlich weil PLLRDY auf 0 ist/bleibt. Allerdings widersprechen sich HSERDY = 1, PLLON = 1 und PLLRDY = 0 irgendwie. Wenn PLL richtig konfiguriert, eingeschaltet und HSERDY = 1 ist, müsste eigentlich PLLRDY auf 1 gehen. Es sei denn, HSE ist weit außerhalb des erwarteten Bereichs (d. h. die PLL rastet deshalb nicht ein). Da fallen mir nur zwei mögliche Ursachen ein: 1) Hardware-Defekt, sei es Quarz defekt oder ungeeignet, Layout-Fehler, Lötstellen ... Da empfiehlt sich ein Blick in AN2867. 2) Voltage-Scaling, zwar sagt das RM, dass die PLL direkt von VDD versorgt wird (Fig. 12) und damit unabhängig von VOS sein sollte, aber Table 50 passt nicht dazu oder ist zumindest mißverständlich.
Fragt hier niemand nach der Messmethode? - Welches Oszilloskop? Kann das überhaupt diese ("hohe") Frequenz darstellen? - Messaufbau, Bezugsmasse ... - ein 24 MHz Ausgangssignal hat keine Rechteckform von 3.3V Amplitude, da muss man sich mit deutlich weniger zufrieden geben und seine Einstellungen (Empfindlichkeit, Triggerschwelle ...) entsprechend anpassen. Am OSC_IN Pin darf man natürlich nicht unbedingt ein Signal erwarten, an OSC_OUT sollte dagegen der interne Treiber einen ausreichenden Pegel auch für Messungen liefern. Terence S. schrieb: > Habe mit einem Oszilloskop am Quarz gemessen Wenn man die Fähigkeiten des TO nicht kennt bzw dieser nichts zur Messung schreibt darf bei diesen Aspekten schon mal gezweifelt werden.
Messknecht schrieb: > n OSC_OUT sollte dagegen der interne Treiber einen > ausreichenden Pegel auch für Messungen liefern. Blöd nur das die Kapazität des Tastkopfes die Schaltung total verstimmt. Daher ist eine Messung nicht vernünftig druchführbar. Deshalb hat der µC i.d.R. einen extra Clock Ausgang. Da liegt dann aber nicht der Sinus vom Quarz dran sondern ein Rechteck. Insbesondere hat der OP auch die Lastkapazitäten verdammt klein gewählt - ich komme auf eher so 9 oder 10pF für C311 und C312. Bei 6pF muss der Quarz nicht mehr zuverlässig anlaufen IMHO.
Hallo, in der Quarz-Beschreibung steht "Betriebsmodus : Erste Harmonische", was auf einen Oberwellen-Quarz hindeutet. Ist meines Wissens für ST mit der Standard-Beschaltung nicht geeignet - die ist für Grundwellen-Quarze.
FWSM schrieb: > Ist meines Wissens für ST mit der > Standard-Beschaltung nicht geeignet - die ist für Grundwellen-Quarze. Dieser Punkt interessiert mich. Die Schaltung von ST befindet sich ja auch in den AVR Mikrocontrollern. Worin unterscheidet sich dieser einfache Oszillator von denen für Oberwellen? Und: Kann man nicht theoretisch jeden Quarz auf einer Oberwelle schwingen lassen?
Beitrag #6611927 wurde vom Autor gelöscht.
Du musst alles ausser der gewünschten Oberwelle herausfiltern. Meist mit Schwingkreis, seltener mit Saugkreis. Schau mal bei Beitrag "Wie Quarz auf die 5.te Oberwelle zwingen"
Stefan ⛄ F. schrieb: > Kann man nicht theoretisch jeden Quarz auf einer Oberwelle > schwingen lassen? Dazu muss man dafür sorgen, dass für die Grundwelle die Rückkopplungsbedingung nicht erfüllt ist, das geht i.d.R. nicht mit der einfachen Beschaltung mit 2 Kapazitäten wie bei µControllern üblich. Siehe auch FWSM. Georg
>Blöd nur das die Kapazität des Tastkopfes die Schaltung total verstimmt. >Daher ist eine Messung nicht vernünftig druchführbar. Es reicht üblicherweise, den Tastkopf in die Nähe zu bringen. Eine Aussage über Amplitude kann man dann nicht machen, aber ob er schwingt und die Frequenz sieht man dann sehr genau.
Jim M. schrieb: > Blöd nur das die Kapazität des Tastkopfes die Schaltung total verstimmt. > Daher ist eine Messung nicht vernünftig druchführbar. Käse. Ein Nachweis der Schwingung ist auf jeden Fall mit Tastkopf möglich, es muss die Frequenz ja nicht aufs Hz genau stimmen. Der Frequenzversatz durch zusätzliche Belastung ist ein paar ppm und das stört beim Nachweis der Schwingung überhaupt nicht.
Erst einmal vielen Dank für die zahlreichen und auch hilfreichen Antworten. Christopher J. schrieb: > Die Registerbeschreibungen finden sich bei ST - im Gegensatz etwa zu TI > - nicht im "datasheet", sondern im "reference manual". Jetzt fühle ich mich ein wenig dämlich. GENAU das habe ich ewig gesucht und ... scheinbar auch schon einmal gefunden, denn es lag schon auf der Festplatte. Oh Mann, was war denn da mit mir los? Das ist eigentlich sogar sehr ähnlich zu den TI-Dokumenten, da gibt es neben dem Datasheet auch ein großes Dokument wie dieses, früher für jedes Modul ein eigenes Dokument. Danke, jetzt kann ich mich endlich richtig mit dem Controller auseinandersetzen. neuer PIC Freund schrieb im Beitrag #6611744: > Bei über 150MHz: R1MODE auch bedient? (1.28V anstatt 1.2V) Nein, das war mir neu, habe's aber im Manual gefunden. Der Einfachheit halber ist SYSCLK nun auf 120 MHz gestellt, keine Änderung. Aber guter Hinweis, das muss ich später natürlich beachten. A. B. schrieb: > 1) Hardware-Defekt, sei es Quarz defekt oder ungeeignet, Layout-Fehler, > Lötstellen ... Da empfiehlt sich ein Blick in AN2867. Das AN2867 hatte ich mir vorher schon angesehen, das sollte alles passen. Als Referenz habe ich zudem noch ST-Boards herangezogen. Layout-Fehler habe ich geprüft, die Anschlüsse am Quarz passen. Anbei auch noch einmal das Layout, Raster ist auf 0,5 mm eingestellt. Den Quarz werde ich nachher mal tauschen. Messknecht schrieb: > Fragt hier niemand nach der Messmethode? > > - Welches Oszilloskop? Kann das überhaupt diese ("hohe") > Frequenz darstellen? > > - Messaufbau, Bezugsmasse ... Das Oszilloskop ist ein Siglent SDS 1104X-E (100 MHz), Tastkopf ist ein Testec MF 312 (250 MHz). Hielt ich nicht für Relevant, welches Oszi das genau ist. Zur Messmethode und Bezugsmasse habe ich ein Bild angehängt. Messknecht schrieb: > Wenn man die Fähigkeiten des TO nicht kennt [...] > darf bei diesen Aspekten schon mal gezweifelt werden. Das stimmt natürlich. Messknecht schrieb: > Ein Nachweis der Schwingung ist auf jeden Fall mit Tastkopf > möglich, es muss die Frequenz ja nicht aufs Hz genau stimmen. > > Der Frequenzversatz durch zusätzliche Belastung ist ein paar > ppm und das stört beim Nachweis der Schwingung überhaupt nicht. Danke, das war bisher auch mein Stand und zeigte sich in der Praxis bisher auch immer.
=== Quarz schwingt! === Habe ihn getauscht, nun geht's. Periodendauer liegt rund 42 ns, passt. Das ist mir auch noch nicht passiert. Der trivialste Fehler war es. Hat mich aber trotzdem an anderer Stelle auch weitergebracht, danke.
Terence S. schrieb: > Habe ihn getauscht, nun geht's. Wird wohl ein Lötfehler bzw. Lötproblem gewesen sein. Kann mir nicht vorstellen dass der Quarz selbst kaputt ist. Vielleich noch ein kleines Toleranzproblem oder eventuell mag auch dies (in Verbindung mit Toleranzen) zutreffen: Jim M. schrieb: > Insbesondere hat der OP auch die Lastkapazitäten verdammt klein gewählt
Terence S. schrieb: > Hielt ich nicht für Relevant, welches Oszi das genau ist. Das ist halt dann relevant wenn das Oszilloskop bei weitem nicht die Bandbreite hat um die gewünschte Frequenz nachzuweisen. Und wenn die Daten im Thread zunächst nicht zur Verfügung stehen muss man auch daran mal zweifeln. Man jat ja schon Pferde vor der Apotheke kotzen sehen .... Terence S. schrieb: > Das stimmt natürlich. Dank für nicht vorhandene Beratungsresistenz.
Terence S. schrieb: > === Quarz schwingt! === > Habe ihn getauscht, nun geht's. Das ist doch schonmal viel Wert ;) Wenn du mit CubeMX/HAL arbeiten willst empfehle ich dir unbedingt noch das "stm32g4 hal user manual". Ohne das hat man meiner Meinung nach fast keine Chance aus den HAL-Funktionen schlau zu werden, selbst dann nicht wenn man das reference manual auswendig kennt.
Ich würde sogar sagen, dass beide manuals zusammen verwendet werden sollten. Gilt für alle STM32 Serien.
Messknecht schrieb: > Wird wohl ein Lötfehler bzw. Lötproblem gewesen sein. Gut getippt, ein Pad ist tatsächlich nicht verzinnt. Der wurde nachträglich aufgelötet und das mit nicht wirklich passendem Werkzeug. Christopher J. schrieb: > Wenn du mit CubeMX/HAL arbeiten willst [...] Langfristig nicht, ich habe auf diese extreme Abstraktion eigentlich keine Lust, daher bin ich sehr froh endlich eine vernünftige Dokumentation an der Hand zu haben. Vorerst werde ich aber wohl mit HAL arbeiten und hoffen, dass es erst mal reicht, da ich jetzt einmal ein wenig drin bin. Werde aber bei Bedarf da mal reinschauen. Nun noch mal zur Lastkapazität, denn das wurde ja wirklich häufig thematisiert. Messknecht schrieb: > Vielleich noch ein kleines Toleranzproblem oder eventuell > mag auch dies (in Verbindung mit Toleranzen) zutreffen: > > Jim M. schrieb: >> Insbesondere hat der OP auch die Lastkapazitäten verdammt klein gewählt Im Datenblatt des Quarzes steht, dass die Lastkapazität 6 pF groß sein soll. In AN2867 ist die parasitäre Kapazität für die Eingänge nicht einzeln angegeben, aber da wird als Summe für die Kapazität der Eingänge und die des Layouts 5 pF angenommen. Den Wert habe ich übernommen. Meine beiden 6-pF-Kapazitäten ergeben zusammen 3 pF, sind insgesamt mit denen des Layouts und der Eingänge 8 pF, also schon 2 pF zu viel. Nur fand ich es albern da 2 pF aufzulöten, also habe ich was zwischen 2 und 10 pF genommen, nämlich 6 und habe drauf gehofft, dass entweder a) das Layout weniger kapazitiv ist als angenommen oder b) es einfach egal ist, da es auf die Genauigkeit der Frequenz hier sowieso nicht so ankommt. Aber habe ich da irgendwo einen Denkfehler, dass es wirklich mehr sein sollten als die verwendeten 6 pF? Und noch eine andere Frage. Ich habe erst im Nachhinein in CubeMX gesehen, dass die PLL am Eingang maximal 16 MHz verträgt, ich muss die 24 MHz also erst herunterteilen. Sehe ich das richtig, dass es da besser wäre gleich mit 16 MHz reinzugehen und nicht mit mehr, wenn es um Genauigkeit geht? Habe mich mit der Wahl von Quarzen jetzt noch nie so unglaublich ausgiebig beschäftigt.
:
Bearbeitet durch User
Terence S. schrieb: > Sehe ich das richtig, dass es da besser > wäre gleich mit 16 MHz reinzugehen und nicht mit mehr, wenn es um > Genauigkeit geht? Mit der Genauigkeit hat das erst mal nichts zu tun, aber eine niedrigere Ausgangsfrequenz ist natürlich schaltungstechnisch leichter zu handhaben (du hast das aber sehr gut im Layout gemacht). Sonst gibt es keine Vorzüge - eine gelockte PLL ist immer frequenzgenau. Nur haben niedrige HSE Frequenzen den Nachteil die PLL für die hohen Takte mehr jittern zu lassen was für manche Anwendungen von Bedeutung ist. Auch bestimmt in gewissen Grenzen der HSE die maximal erreichbare Takt- frequenz für den Core. Einfach mal mit dem CubeMX Clock Tool spielen .... Die meisten Designs die ich kenne verwenden wohl einen Quarz von 8 MHz - gefühlsmässig vielleicht eine günstige Wahl und ein guter Kompromiss um möglichst viele verschiedene Takt- konfigurationen abzudecken.
Messknecht schrieb: > Nur haben niedrige HSE Frequenzen den > Nachteil die PLL für die hohen Takte mehr jittern zu lassen > was für manche Anwendungen von Bedeutung ist. Das dachte ich auch, und da ich die Frequenz erst herunterteilen muss (PLLM) und natürlich nur ganzzahlige Teiler möglich sind, lande ich bei 12 MHz Eingangsfrequenz (24 MHz /2) statt möglichen 16 MHz. Daraus schloss ich, entweder 16 MHz verwenden, oder aber gleich 32 MHz, was mir jedoch keinen Vorteil brächte, nur Nachteile, also gleich 16 MHz. Gut, das ist hierbei nicht kriegsentscheidend, aber beim nächsten Mal kann ich mir den schnelleren Quarz sparen. Danke für die Einschätzung.
Terence S. schrieb: > Aber habe ich da irgendwo einen Denkfehler Ich denke nicht. Der geringe Kapazitätswert ist dennoch ungewöhnlich, die meisten Quarze brauchen deutlich mehr. Aber dafür kannst du ja nichts.
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.