Beim Vergleich diverser Mikrocontroller ist mir aufgefallen, dass der HSI Oszillator von allen STM32C5 außergewöhnlich stabil ist. Der Hersteller verspricht 1% in einem Temperaturbereich von -20 bis +130 Grad Celsius.
Der weite Temperaturbereich überrascht mich. Ist das
Beim Vergleich diverser Mikrocontroller ist mir aufgefallen, dass
der HSI Oszillator von allen STM32C5 außergewöhnlich stabil ist. Der
Hersteller verspricht 1% in einem Temperaturbereich von -20 bis +130
Grad Celsius.
Der weite Temperaturbereich überrascht mich. Ist das
c) bin ich zu dumm, das Datenblatt zu verstehen?
Vielleicht solltest du auf das Datenblatt verlinken. Dann muss nicht jeder der evtl. helfen will danach suchen;-)
Der weite Temperaturbereich überrascht mich. Ist das
a) inzwischen normal, oder
Bei vielen Microcontrollern neueren Datums hat sich bei den internen Oszillatoren gegenüber "früher" einiges getan. Für "Standardaufgaben" und UART dürfte es reichen, bei CAN/Ethernet wird es hingegen nicht ganz reichen.
Je nachdem, welche Extreme man tatsächlich noch berücksichtigen muss, ist das z.B. bei > -30°C unter 1% - wie gesagt, UART okay, CAN eher nicht bzw. grenzwertig
Müsste CAN nicht vergleichsweise unproblematisch sein aufgrund der NRZ-Codierung (Bitstuffing) welche eine Synchronisierung des Takts ermöglicht? Bei UART gibt's das ja so nicht, dafür sind die Frames kürzer...
Der weite Temperaturbereich überrascht mich. Ist das
Naja relativ. Der uebliche industrielle Temperaturbereich ist -40 bis +85, der Hersteller sagt dir also damit das sein RC-Oszillator fuer industrielle Anwendung nicht 1% genau ist. .-)
Und wenn man bedenkt wie wichtig die -40 sind, dann sagt er sogar, wir haben es probiert, aber es ging wirklich nicht. Sonst wuerden sie nicht -20 schreiben. :-D
Müsste CAN nicht vergleichsweise unproblematisch sein aufgrund der
NRZ-Codierung (Bitstuffing) welche eine Synchronisierung des Takts
ermöglicht? Bei UART gibt's das ja so nicht, dafür sind die Frames
kürzer...
Bei angenommenen Sample-Punkt 87,5%, 250kbit, SJW=1 sind es rechnerisch pro Knoten 0,3%, bei SJW=2 theoretisch 0,6%. Blanke Theorie, Abweichungen, bei denen auf jeden Fall Probleme aufkommen werden. In der Praxis sollte man besser deutlich drunter bleiben, vor allem wenn es nicht nur auf dem Labortisch laufen soll.
Bei einem Preis von weniger als 1 Euro für einen frequenzstabilen
Quarz plus zwei Lastkapazitäten halte ich einen "frequenzstabilen"
internen RC-Oszillator für extrem wichtig. So wichtig dass man
alle paar Wochen wieder eine neue Sau durchs Dorf treiben muss.
Beim Vergleich diverser Mikrocontroller ist mir aufgefallen, dass der
HSI Oszillator von allen STM32C5 außergewöhnlich stabil ist. Der
Hersteller verspricht 1% in einem Temperaturbereich von -20 bis +130
Grad Celsius.
Im Datenblatt lese ich min -1% und max +1% ;-)
Die neueren STM haben dazu noch ein Clock-Recovery-System (CRS) damit lässt sich der HSI über verschiedene andere (intern/extern) genauere Clocks, sofern vorhanden, nachregeln.
Bei einem Preis von weniger als 1 Euro für einen frequenzstabilen
Quarz plus zwei Lastkapazitäten halte ich einen "frequenzstabilen"
internen RC-Oszillator für extrem wichtig. So wichtig dass man
alle paar Wochen wieder eine neue Sau durchs Dorf treiben muss.
Die STM32C5 sind für kosten-sensitive Projekte gedacht. In großer Stückzahl sind sie für weniger als 1 EUR zu haben. Relativ dazu machen 50 Cent mehr für einen Quarz viel aus.
Anbei snippet über den gesamten T-Bereich, das ist wohl nicht linear. Die Angabe bezieht sich immer auf eine Versorgungsspannung von 3V3. Die kann aber auch etwas weglaufen ...
Klar, weil du ja bei deinen Hobby-Projekten auf jeden Cent
achten musst.
Für meine Hobbyprojekte ist das in der Tat völlig irrelevant, da habe ich bisher immer einen Quarz verwendet. Allerdings erwäge ich allmählich, es mal ohne zu wagen.
Hauptsache wieder eine Sau durchs Dorf treiben.
Ist das so schlimm, sich positiv beeindruckt zu zeigen? Also ich finde, man darf (und sollte) auch mal erfreuliche Themen diskutieren.
Wenn keinerlei Genauigkeit erforderlich ist, dann ja, warum nicht.
Wenn zumindest etwas Genauigkeit erforderlich ist, dann Keramik Resonator für 25ct (Murata unter 11ct in Stückzahlen).
Wenn man über ppm nachdenkt, wenn Präzision gewünscht ist, dann Quarz mit sehr geringem Aufpreis.
Ein Quarz(-Oszillator) kostet nicht nur Geld, sondern auch PCB-Fläche und Energie und hat auch eine längere Einschwingzeit als die integrierten RC-Oszillatoren.
Btw: Manche STM32 haben eine etwas "versteckte" zweite PLL mit welcher der RC-Oszillator "MSI" mithilfe des LSE-Oszillators stabilisiert werden kann ("MSIPLLEN"). In Projekten bei denen sowieso ein Uhrenquarz am LSE gebraucht wird für die RTC kann man sich somit ggf. den Hauptquarz (HSE) sparen indem man den Haupttakt per MSI erzeugt und den über diese PLL stabilisiert.
Fußangel: Diese PLL braucht ein paar Millisekunden zum Einschwingen, auch nach einem Wake-Up, aber es gibt kein "ready" Flag. Somit eiert die MSI-Frequenz während des Einschwingvorgangs ziemlich wild herum, was der CPU nichts ausmacht aber Kommunikation per UART unmöglich macht; man muss also nach einem Wake-Up per Timer ein paar Millisekunden warten. Als Timer sollte man die RTC nutzen weil die natürlich schon aktiv ist und der LSE Takt nicht so eiert.
Dann müssten die winzigen(!), 32768 Hz Quarze ja eine geradezu
gigantische Güte haben, so "schingfaul" wie sie sind. ☺
Die sind ja i.A. oft auch genauer als die höherfrequenten Exemplare. Schwingfaul sind sie vermutlich nur wenn man sie mit sehr niedrigen Strömen ansteuert, wie man sie bei low-power RTCs nutzt?
Ja, aber das ist eben nicht pauschal immer ein guter Preis - RC-Oszillator kann der bessere Tradeoff sein.
PS: Lustige Übungsaufgabe: Einen GPS-Empfänger mit Timestamp-Eingang nehmen und dort den Takt z.B. vom Quarzoszillator eingeben (MCO-Ausgang vom STM32) und die vom Empfänger ausgegebenen Timestamps plotten. Da kann man wunderschön das Wegdriften sehen. Besonders interessant ist es das mit einer digital temperaturkompensierten RTC zu machen - die schiefen Treppenstufen im Plot sind die diskreten Kalibrierungssprünge.
Aber ist trotzdem kacke weil das bei LowPower extrem nervt. Kann dann zielfuehrend sein den internen RC zu nutzen und den nur gelegentlich mit einem externen Quarz zu kalibrieren. Ausserdem sind Quarze auch manchmal doch wenn du starke Vibrationen hast. Es gibt also gute Gruende fuer RC. (und Keramik)
Dann müssten die winzigen(!), 32768 Hz Quarze ja eine geradezu
gigantische Güte haben, so "schingfaul" wie sie sind. ☺
Die sind ja i.A. oft auch genauer als die höherfrequenten Exemplare.
Wo hast du denn das Gerücht her?
Genau ist da aber auch ein sehr schwammiger Begriff.
Sie sind es (im allgemeinen) nicht.
Grundwellenquarze im MHz-Bereich, mit dem richtigen Schnitt
wären da viel besser.
Anbei snippet über den gesamten T-Bereich, das ist wohl nicht linear.
Beste Ergebnisse erhält man demnach, wenn ein Ausgangspin auf GND gelegt und nach Bedarf auf '1' geschaltet wird, bis die interne Temperatur ca. 100 °C beträgt. Im Idealfall liegt die Abweichung bei < 0,1 % und immer unter +/- 0,5 %
;-)
Im Idealfall liegt die Abweichung bei < 0,1 % und immer
unter +/- 0,5 %
;-)
Im Idealfall beträgt die Abweichung 0%. Das ist noch nicht einmal unmöglich, wird aber in Fachkreisen als einigermaßen unwahrscheinlich angesehen. ;-)
Zumeist wird sie ein bisschen hier, oder da, oder dort sein. Gerne auch eine Wanderung antreten. Mal vorwärts, mal rückwärts. Mal zwei vor und dann drei zurück. Wie's gerade konveniert.
In Datasheets steht bei typischen Uhrenquarzen eine niedrigere PPM-Zahl
als bei typischen MHz-Quarzen
Der "mathematische" Beweis, dass Uhrenquarze nicht besser sind:
Du kannst zu jedem "Uhrenquarz" einen "MHz-Quarz" finden, der
besser ist.
Q.E.D.
Grundwellenquarze von einigen MHz, kann man so aus dem Material
schneiden, dass ihr TK einen flachen Sattelpunkt bei einer
gewünschten Temperatur hat. Macht Mann es richtig, ist dort der
TK sogar Null. Eine Abweichung von der Wunschfrequenz kann man
mit passender Beschaltung und eben Abgleich ja dann leicht korrigieren.
Diesen Sattelpunkt kennen Uhrenquarze nicht einmal.
PPM-Angaben werden also überbewertet.
Btw: Manche STM32 haben eine etwas "versteckte" zweite PLL mit welcher
der RC-Oszillator "MSI" mithilfe des LSE-Oszillators stabilisiert werden
kann ("MSIPLLEN"). In Projekten bei denen sowieso ein Uhrenquarz am LSE
gebraucht wird für die RTC kann man sich somit ggf. den Hauptquarz (HSE)
sparen indem man den Haupttakt per MSI erzeugt und den über diese PLL
stabilisiert.
Fußangel: Diese PLL braucht ein paar Millisekunden zum Einschwingen,
auch nach einem Wake-Up, aber es gibt kein "ready" Flag. Somit eiert die
MSI-Frequenz während des Einschwingvorgangs ziemlich wild herum, was der
CPU nichts ausmacht aber Kommunikation per UART unmöglich macht; man
muss also nach einem Wake-Up per Timer ein paar Millisekunden warten.
Als Timer sollte man die RTC nutzen weil die natürlich schon aktiv ist
und der LSE Takt nicht so eiert.
Dafür hat der STM32C53xx das obengenannte CRS
The devices embed a special block that allows automatic trimming of the internal 144 MHz oscillator to guarantee its optimal accuracy over the whole device‑operational range. This automatic trimming is based on the external synchronization signal. This signal is either derived from USB_SOF signalization, from an LSE oscillator, from an external signal on the CRS_SYNC pin or generated by user software. For faster lock-in during startup, automatic‑trimming and manual‑trimming action can be combined.
Jetzt ist natürlich die Frage ob das bei den 1% schon eingepreist ist und nur die Fußnote dafür abhanden gekommen ist ...
Anbei snippet über den gesamten T-Bereich, das ist wohl nicht linear.
Die Angabe bezieht sich immer auf eine Versorgungsspannung von 3V3. Die
kann aber auch etwas weglaufen ...
Meist ist aber die Abhängigkeit von der Spannung deutlich geringer als die von der Temperatur.
Also ich muss (auch als Nicht-STM32-Fan) sagen, dass ich einigermaßen beeindruckt bin. Da steckt einiges an Ingenieursarbeit drin.
Jetzt ist natürlich die Frage ob das bei den 1% schon eingepreist ist
Wohl nicht, wenn ich das Referenzhandbuch überschlägig richtig erfasse. Dort ist zu finden, die Schrittweite des Trimmens wäre 0,14 %. Damit wäre die Abweichung ca. Faktor 7 besser als ein freilaufender HSI und die gezeigten Kurven über die Temperatur müßten geradlinig sein, ggf. mit kleinen Zacken.
Iss ja ganz nett ;-)
Der Fast-Sattelpunkt in Fig. 1 ist aber ein Sattelpunkt des Frequenzfehlers; der Temperaturkoeffizient ist aber die Ableitung davon, welcher keinen Sattelpunkt hat, nur ein Minimum, welches immerhin (fast) bei Null ist.
Jetzt ist natürlich die Frage ob das bei den 1% schon eingepreist ist
Ich denke: Ist es nicht. Denn dieser Absatz beschreibt die Eigenschaften des Oszillators unter gewissen Rahmenbedingungen (Temperatur, Spannung). Wenn CRS dazu gehören würde, dann wäre das zumindest als Fußnote erwähnt.