Wann sollte man für diese MCU einen externen Quarz verwenden, da der interne Oszillator viel schneller ist?

Ich schaue mir diese MCU an und habe mich gefragt, ob es sinnvoll ist, einen externen Quarz zu verwenden.

Auszug aus dem Datenblatt pg1,

*Taktverwaltung
4- bis 32-MHz-Quarzoszillator
– 32-kHz-Oszillator für RTC mit Kalibrierung – Interner 8-MHz-RC mit x6-PLL-Option – Interner 40-kHz-RC-Oszillator

Interner 48-MHz-Oszillator mit automatischer Trimmung basierend auf ext. Synchronisation*

Der interne Oszillator kann bis zu 48 MHz betragen. Der externe Quarz liegt zwischen 4 - 32 MHz. Warum sollte man einen externen Kristall verwenden, wenn der interne Kristall schneller als 48 MHz ist, wenn man bedenkt, dass ein externer Kristall Geld kostet und Platz einnimmt? Wann sollte man einen externen Kristall verwenden?

Der einzige Vorteil des internen Oszillators von mcu ist die Kostenersparnis, wenn keine zusätzliche Genauigkeit externer Oszillatoren erforderlich ist.

Antworten (4)

Der interne Oszillator ist viel weniger stabil als ein externer Quarzoszillator.

Wenn ich das Datenblatt richtig lese, ist der interne 48-MHz-Oszillator werkseitig nur auf 2,9 % der angegebenen Frequenz kalibriert - nicht einmal gut genug für RS-232. Es gibt Möglichkeiten, es mit einem externen Takt zu synchronisieren. Ich denke, es ist für die Verwendung in einer USB-Gerätesituation konzipiert, in der Sie die PLL an den USB-Bitstream binden können.

Ein externer Quarz hat typischerweise eine Genauigkeit von etwa 20 ppm , Teile pro Million. Das sind 0,002 % von der angegebenen Frequenz. Wenn Sie es noch besser brauchen, gibt es sogar temperaturkompensierte, ofenfeste Quarzoszillatoren.

Darüber hinaus möchten Sie möglicherweise eine genaue Taktrate bei einer anderen Frequenz, typischerweise für die Kommunikation mit einem Gerät oder Master über einen asynchronen Kommunikationskanal. Dazu benötigen Sie möglicherweise einen Oszillator mit beispielsweise 29491200 Hz (115200 * 256).

Ehrlich gesagt sind 2,9% normalerweise gut genug für UART / RS-232 (ich habe 115200 UART mit mindestens 3,5% Toleranz [aufgrund der internen 8-MHz-RCs sowohl bei der Baudratenabweichung als auch bei internen Ungenauigkeiten] für ein paar Wochen verwendet, ohne dass es auffällt Fehler); AFAIR, UART / RS-232 ist unter 5% Gesamttaktabweichung ziemlich verwendbar und sogar ein oder zwei Prozent höher grenzwertig verwendbar. Außerdem haben Sie die Tatsache übersehen (von anderen angemerkt), dass Sie PLL verwenden können, um die Kristalluhr zu multiplizieren, um Geschwindigkeiten zu erhalten so hoch wie die interne Taktung.
@vaxquis du hattest Glück. 5 % ist die absolut maximal akzeptable Baudratenabweichung, und wenn Sender und Empfänger 2,5 % in unterschiedlichen Richtungen entfernt sind, sind Sie genau am Limit.
RS232 ist ein Spannungs- und Pin-Standard, kein Protokollstandard.
Wenn Sie 4x Oversampling verwenden, können Sie höchstwahrscheinlich zwischen 25 und 50 % sparen. Mit 8x kann es wahrscheinlich schlechter sein als und mit 16x sogar noch besser. Sie müssen nur genau genug sein, um durch ein Zeichen zu kommen, dann synchronisiert sich der Empfänger erneut auf das Startbit. Einige können sogar an jeder Kante neu synchronisieren, was noch größere Fehler ermöglicht. Die Uart-Decodierung hängt also vom Design des Empfängers ab. Einige/vernünftige Designs könnten sehr leicht mit einem Taktfehler von 2,9 % für immer laufen und nie ein bisschen ausrutschen.
Wenn Sie nur 2x überabgetastet sind, können Sie innerhalb eines Zeichens ein halbes bisschen driften. Das Startbit plus 8 Datenbits plus eine Parität sind also 10 Bits, um das in 10.5 oder 9.5 zu beenden. Also 5% sind für ein 2x Oversampling wie Bruce schon erwähnt hat.
@dwelch Vielleicht solltest du einen UART-Empfänger entwerfen! Sie sollten in der Lage sein, mit Maxim, Motorola und den anderen Jungs zu konkurrieren, die nur herausfinden können, wie man einen 16-fach überabgetasteten Empfänger dazu bringt, auf höchstens 2-3% zu synchronisieren.
@BruceAbbott Mir sind die Spezifikationen bekannt und Sie haben offensichtlich Recht - beachten Sie, dass Sie im Grunde wiederholt haben, was ich gesagt habe. In einer lauten Umgebung oder in Situationen, in denen eine niedrige Fehlerrate erwartet wird, sollte man natürlich einen externen Quarz verwenden, der an UART-Raten angepasst ist (z. B. ein Multiplizieren von 3,6864 für übliche Raten) mit an die Frequenz selbst angepassten Obergrenzen. Ich habe nur gesagt, was Sie gesagt haben - Sie können das "Glück" haben (kurze Kabel, stabile Spannungsversorgungen, abgeschirmte Kabel, gute Qualität der Tx / Rx-Chips usw.), um mit diesen ~ 5% -Fehlanpassungen über längere Zeit ohne Wahnsinn zu arbeiten Fehlerquoten.
@pipe es ist nur eine Frage der Statistik. Es gibt einen Unterschied zwischen einem Gerät, das überhaupt funktioniert , zuverlässig funktioniert und nahezu fehlerfrei funktioniert . Ich argumentiere mit dem genauen Begriff, den Sie verwendet haben - "nicht einmal gut genug". Es ist gut genug . Es ist nicht perfekt, es ist grenzwertig zuverlässig (kann je nach Betriebsbedingungen sein oder auch nicht) - aber meistens ist es gut genug , wie in en.wikipedia.org/wiki/Principle_of_good_enough . "Maxim, Motorola und andere" müssen Spezifikationen erfüllen. Die Werte, die sie liefern, sind in der Regel für den Dauerbetrieb mit hoher Beanspruchung geeignet.
@vaxquis Wikipedia macht Spaß, hier ist noch einer! en.wikipedia.org/wiki/Anecdote Ich entwerfe lieber so, dass es innerhalb der Spezifikationen bleibt. Es ist einfacher, als sich auf "hat damals für mich funktioniert" zu verlassen.
@pipe, das ist der gesamte Punkt von 8- und 16-fachem Oversampling, um eine bessere Auflösung der Kanten im Verhältnis zu der Stelle zu erhalten, an der Sie abtasten. Vielleicht verwenden die Teile, von denen Sie sprechen, interne Oszillatoren. Oder vielleicht die gebrauchten Nachwuchsingenieure, da es eine ziemlich triviale Sache ist, sie zu entwerfen. Sie können problemlos an jedem Rand synchronisieren und bleiben auch bei Uhrdrift für immer synchronisiert. Da wir nicht wissen, wie ein Empfänger konstruiert ist, es sei denn, wir arbeiten dort und sind in der richtigen Abteilung, ist es am besten, zu versuchen, auf diese wenigen Prozent zu kommen, und oder genügend Tests durchzuführen, um Statistiken über die Bitfehlerrate zu erstellen.
@pipe EESE ist (...) für (...) Profis, Studenten und Enthusiasten. - Nicht jeder muss eine Schaltung entwerfen, die unter Luft- und Raumfahrtbedingungen funktioniert. Nicht jeder muss einen Prototypen für die Massenproduktion entwerfen. Manche Leute wollen etwas haben, das einfach für sie funktioniert. Sie können den Abschnitt "USART" zB in den Datenblättern von Atmel leicht überprüfen. Sie geben den maximalen Gesamtfehler für 8N1 UART mit etwa 4% an und empfehlen 2% als "sicheren Wert". Hier gibt es keine "Anekdote". Diese Toleranz von etwa 4 % ist kein Wunschtraum – ich habe sie getestet, sie funktioniert; das ist die einzige "Anekdote" hier.
Als Referenz wurde festgestellt, dass die H4-Uhr von John Harrison 1761 eine unkorrigierte Genauigkeit von 30,86 Teilen pro Million hatte; Die Anwendung dieser Korrektur über eine 81-tägige Seereise ergab eine korrigierte Genauigkeit von besser als 1 ppm. Das war für ein rein mechanisches Instrument, das auf einem Schiff auf See betrieben wurde.
@pipe: Ein zuverlässiger UART-Betrieb erfordert, dass der Empfänger in der Lage ist, zwischen einem Impuls mit einer Länge von 8 Bitzeiten und einem Impuls mit einer Länge von 9 Bitzeiten zu unterscheiden. Dies könnte dadurch erreicht werden, dass der Sender und der Empfänger jeweils innerhalb von 3 % ihrer korrekten Geschwindigkeit liegen und der Empfänger testet, ob der Impuls mehr oder weniger als 8,5 Bitzeiten zu sein scheint. Es könnte auch dadurch erreicht werden, dass der Sender präzise ist und der Empfänger innerhalb von 6 % liegt, oder dass der Sender präzise ist und der Empfänger bekanntermaßen mindestens so schnell ist wie der Sender, aber nicht mehr als 10 % schneller.
@dwelch Die Teile, von denen ich spreche, verwenden 16-faches Oversampling - die meisten scheinen dies zu tun. Aber sie gehen davon aus, dass Sie eine physische Verbindung haben, die Slewrates hat. Deshalb habe ich in meiner Antwort RS-232 geschrieben, was Sie anscheinend auch nicht mögen, aber das ist, was da draußen ist. Dieser Kommentarbereich ist nicht groß genug, um dieses Problem zu diskutieren, aber ich schlage vor, dass Sie in diesem Forum und anderswo nach dem Problem suchen. Sie und einige andere Leute hier scheinen eine Lösung für das Problem zu haben, die niemand umsetzen konnte, und im Moment vertraue ich eher veröffentlichten Forschungsergebnissen.
Wenn Sie über ein serielles Protokoll sprechen Startbit Datenbits Stoppbit ... RS-232 ist nicht der richtige Begriff. Uart oder seriell oder so ähnlich ist ein besserer Begriff, wenn Sie über Uhren und Baud und dergleichen sprechen (was Sie waren). RS-232C ist, wenn Sie über Spannungspegel (weniger als -3 V und mehr als 3 V) und Pinbelegungen für CTS und RTS und dergleichen sprechen. Da RS-232C schnell mit immer weniger Computern und Zielen verschwindet, aber immer noch viele TTL-Level-Uarts im Einsatz sind, macht es einfach keinen Sinn mehr, diesen Begriff zu verwenden, es sei denn, Sie sprechen speziell über die Spannungspegel.
Sie könnten Ihre Antwort einfach umschreiben, um über Timer oder etwas weniger Problematisches Beispiel zu sprechen. Und dann kann der Rest von uns alle unsere uart/RS232C-basierten Kommentare löschen.
@dwelch Ich spreche von der seriellen Kommunikation zwischen zwei Geräten über ein Kabel unter Verwendung der Spannungspegel, Anstiegsraten und Lastkapazitäten, die der RS-232-Standard erwähnt. Einfach gesagt, ein gutes altes serielles Kabel. Wenn Sie eine sauberere Umgebung garantieren können, können Sie vielleicht einen besseren Algorithmus implementieren. Aber dann können Sie den eingebetteten UART nicht verwenden. ST hat sogar eine Tabelle im Referenzhandbuch, die dies für das genaue in der Frage besprochene Gerät umreißt und je nach Modus zwischen 2% und 3,33% liegt.

Der interne ist ein Oszillator, normalerweise ein RC-Oszillator. Diese Oszillatoren sind viel ungenauer als Kristalle. Auch neigen diese Oszillatoren dazu, bei Temperaturänderungen zu driften.

Kristalle hingegen können so genau sein wie das Geld, das Sie ausgeben möchten. Die Genauigkeit ist erforderlich, wenn beispielsweise eine Hochgeschwindigkeitskommunikation wie USB verwendet wird. USB hat sehr enge Toleranzen.

Siehe dieses Diagramm auf Seite 16:

ST-Uhrbaum

Es sieht so aus, als könnten Sie den Quarz auch als Eingang für die PLL verwenden, sodass Sie mit einem langsameren Quarz interne Taktraten von 48 MHz erreichen können.

Der Quarzoszillator speist in einen Phased Locked Loop (PLL) auf dem Chip ein, der die Quarzfrequenz mit Werten zwischen 1 und 16 multiplizieren und teilen kann. Mit einem 8-MHz-Quarz können Sie also einen 48-MHz-Haupttakt für den Prozessor erzeugen. Wie andere gesagt haben, ist ein externer Kristall genauer und stabiler als der Hochgeschwindigkeitsoszillator auf dem Chip.