Hallo, ich verwende in einem Projekt den STM32WL55. Dieser bekommt seinen Haupttakt (HSE) von einem externen TCXO auf 32 MHz, weil bessere Übereinstimmung von Sender- und Empfängerfrequenz das Link-Budget verbessert. Momentan ist das noch ein NUCLEO-WL55JC Board.
Der TCXO verbraucht aber ziemlich viel Strom (>1mA). Daher schaltet man diesen typischerweise ab, solange man das Funksystem nicht braucht, und betreibt den Controller dann z.B. über den internen RC-Oszillator "MSI". Für die meisten Controller-Aufgaben ist das auch kein Problem, aber:
Es wird auch ein UART für ein GPS-Modul benutzt. Mit dem MSI alleine ist die Frequenz anscheinend zu ungenau für den UART, insbesondere dann, wenn intensiv die Power-Saving Modes genutzt werden - ich vermute fast, dass das schnelle Aufwärmen und Abkühlen des Dies den RC-Oszillator beeinflusst...?
Man kann den MSI aber über den LSE-Takt kalibrieren indem man den MSI in den PLL-Mode versetzt (MSIPLLEN bit). Der LSE läuft bei mir sowieso permanent mit einem 32 kHz-Quarz für die RTC und verbraucht natürlich viel weniger Strom als der TCXO. Mit MSIPLLEN=1 funktioniert der UART unter Laborbedingungen.
Die Frage ist jetzt: Ist das Problem damit sicher erledigt? Wie kann ich bestimmen, ob der MSI-Takt im PLL-Mode genau genug ist für den UART, insbesondere über den ganzen Temperaturbereich? Wenn das alles unproblematisch ist - warum benutzt man dann in "normalen" Anwendungen (ohne Funk) überhaupt einen hochfrequenten Quarz (z.B. 8MHz) wenn man auch einfach einen sparsamen 32kHz-Quarz + PLL nehmen kann?