Forum: Mikrocontroller und Digitale Elektronik STM32 - Haupttakt und UART per LSE+PLL versorgen


von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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?

von Wastl (hartundweichware)


Lesenswert?

Niklas G. schrieb:
> Wie kann ich
> bestimmen, ob der MSI-Takt im PLL-Mode genau genug ist für den UART,
> insbesondere über den ganzen Temperaturbereich?

Indem du deine 32 kHz-Quarzoszillator Anordnung überprüfst ob sie
die Grenze der Abweichung in ppm für die UART-Baudrate erfüllt.

Niklas G. schrieb:
> 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?

Weil die immense Hochvervielfachung auf den Ziel-Takt einen
kräftigen Jitter produziert den man oft nicht haben will.
Bestes Beispiel ist das was hier schon Manche erfahren haben:
Ein Ethernet-Referenz-Takt für einen PHY der wild vor sich
hin-jittert und keine zuverlässige Übertragung zulässt.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Wastl schrieb:
> ob sie
> die Grenze der Abweichung in ppm für die UART-Baudrate erfüllt

Okay, die PPMs von 32kHz-Quartzen sind ja meistens ziemlich gut.

Wastl schrieb:
> Weil die immense Hochvervielfachung auf den Ziel-Takt einen
> kräftigen Jitter produziert den man oft nicht haben will.

Okay, aber ist das ein Problem für den UART? Wie berechnet man das?

von Wastl (hartundweichware)


Lesenswert?

Niklas G. schrieb:
> Okay, die PPMs von 32kHz-Quartzen sind ja meistens ziemlich gut.

Deswegen sprach ich ja nicht vom Quarz sondern von?

Wastl schrieb:
> deine 32 kHz-Quarzoszillator *Anordnung*

... man kann auch "Gesamtschaltung" dazu sagen.

Niklas G. schrieb:
> Okay, die PPMs von 32kHz-Quartzen sind ja meistens ziemlich gut.

Ob die von Quartzen so gut sind wie die von Quarzen weiss ich
nicht. Ob "meistens ziemlich gut" ausreicht kann ich hier von der
Ferne aus auch nicht beurteilen.

Niklas G. schrieb:
> Okay, aber ist das ein Problem für den UART?

Für den UART ist das kein Problem, der arbeitet ob du Schrott
empfängst oder gültige Daten. Der sendet auch bei beliebiger
Baudrate die der Empfänger nicht brauchen kann.

Niklas G. schrieb:
> Wie berechnet man das?

Weiss ich nicht. Trial and error, probieren geht über studieren.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Wastl schrieb:
> ... man kann auch "Gesamtschaltung" dazu sagen.

UARTs kommen normalerweise so mit 2-3% Taktabweichung klar. Der Quarz 
auf dem NUCLEO-WL55JC hat 20 PPM, wie gut der Rest der Schaltung ist 
kann ich nicht beurteilen. Angenommen das noch zu entwickelnde Custom 
PCB wird von einem fähigen Hardware-Entwickler gemacht sodass die 
Uhrenquarz-Oszillator-Schaltung besser als die 2% = 20000 PPM ist.

Wastl schrieb:
> Für den UART ist das kein Problem, der arbeitet ob du Schrott
> empfängst oder gültige Daten.

Und ist es ein Problem für das korrekte Empfangen der Daten mit dem 
UART?

Wastl schrieb:
> Weiss ich nicht.

Warum antwortest du dann...

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
Noch kein Account? Hier anmelden.