Wahl zwischen internem Oszillator und externem Kristall - ATXMega32E5 [Duplikat]

Wir arbeiten mit einem modernen Mikrocontroller ATXMega32E5, aus der ATMEL XMega-Familie.

Unser Ziel ist es, den UART des Controllers für eine effektive Kommunikation mit einer Geschwindigkeit von etwa 9600 oder 4800 Baud zu verwenden. Wir haben den Controller mit der internen Default-Taktfrequenz von 2 MHz getestet. UART funktioniert sowohl mit 9600- als auch mit 4800-Baud-Raten gut.

Da der Controller einwandfrei funktioniert, ist es wirklich wichtig, einen externen Quarz für die Systemuhr zu verwenden?

Wir wollen nur wissen, ob wir den internen kalibrierten RC-Oszillator oder einen externen Quarz verwenden sollen. Bitte erläutern Sie die Erklärung

Interne RC sind in Ordnung, aber Jitter und Temperaturverhalten können schließlich Probleme verursachen. Seien Sie sicher, schlagen Sie einen 8-MHz-Keramikresonator wie die winzige Murata-Ceralock-Serie, die ich gerne mit meinen ATmega328s verwende, wegen der kleinen Packungsgröße und der guten Spezifikationen und unter 1 US-Dollar pro Stück.

Antworten (1)

Der Hauptvorteil externer Quarze ist ihre Frequenzstabilität über einen weiten Temperaturbereich. RC-Oszillatoren hingegen neigen dazu, sich über die Temperatur beträchtlich zu ändern.

Ein Quarz kann beispielsweise mit einer Frequenzstabilität von 50 ppm werben. Das sind nur 0,005 % Drift über den gesamten angegebenen Temperaturbereich. Ein kurzer Blick auf das Datenblatt des ATXMega32E5 zeigt, dass der interne RC nur für 0,5 % gut ist, und das nur bei 25 ° C. Wenn Sie heißer oder kälter werden, driftet Ihre Oszillatorfrequenz noch mehr. Erschwerend kommt hinzu, dass die Hersteller kein Versprechen geben, in welche Richtung die Oszillatorfrequenz driften wird. Das kann von Chip zu Chip unterschiedlich sein. Im schlimmsten Fall driftet der Oszillator in einem Gerät schneller und im anderen langsamer, was möglicherweise sporadische und schwer nachzuvollziehende Kommunikationsfehler verursacht.

Unter "schönen" Bedingungen sollten Sie kein Problem haben, die UART-Kommunikation mit dem internen RC-Oszillator erfolgreich zu verwenden. Wenn die Geräte jedoch große Temperaturschwankungen erfahren, ist es am besten, auf etwas mit besserer Genauigkeit umzusteigen, z. B. einen Kristall.

Tatsächlich verfügt die XMega-Serie über das - eigentlich ziemlich hochpräzise - RC-Oszillatorsystem mit PLL-System, falls erforderlich, um eine ausreichende Genauigkeit über 0 bis 85 Grad Celsius zu erreichen, um einen zuverlässigen UART-Betrieb zu erreichen. Vergessen Sie auch nicht, dass ein Kristall nur dann so genau ist, wenn er genau richtig bei genau der richtigen Temperatur verwendet wird. Fügen Sie der Last den doppelten pF hinzu (einfach ohne gute Mathematik und / oder geeignete Werkzeuge) und Sie werden bis zu 0,1% oder schlechter sein.
@Asmyldof, ich stimme nicht mit allem in deinem Kommentar überein. Die angegebene Genauigkeit eines Kristalls wird typischerweise für den gesamten Betriebstemperaturbereich angegeben (manchmal so viel wie -40 bis +125). Es muss nicht „genau die richtige Temperatur“ haben. Das Datenblatt für den ATXMega32E5 zeigt einen Frequenzbereich von 8,14 MHz - 8,00 MHz für den gesamten Temperaturbereich. Sicher, das ist wahrscheinlich für die meisten UART-Anwendungen in Ordnung, und es mag für einen RC-Oszillator gut sein, aber es ist um Größenordnungen schlechter als ein Kristall.
@Asmyldof Ich möchte nur wissen, wie zuverlässig der interne Oszillator für die Gesamtfunktion des Controllers ist. Wir werden I2C, UART, TIMER/COUNTER usw. verwenden. Ist es so wichtig, wenn es im Endprodukt verwendet wird? Wird die Stabilität des internen Oszillators im Laufe der Jahre nachlassen? Wenn ja, wird es mindestens 5 Jahre lang gut funktionieren.