Fehlertoleranz der UART-Baudrate

Ich habe eine Frage bezüglich der Fehlertoleranz der UART-Baudrate, wie der Threadtitel andeutet. Zunächst möchte ich auf ein hervorragendes Tutorial zur Taktgenauigkeit hinweisen: Maxim Integrated Tutorial

Ich verstehe, dass die Fehlertoleranz der Baudrate von vielen Parametern abhängt, beispielsweise der Kabeldämpfung, die in direktem Zusammenhang mit der Kabellänge steht, der Baudrate selbst usw. Die UART-Baudrate auf einem dsPIC33E wird durch eine bestimmt UxBRG registrieren, dessen Wert berechnet wird als:

UxBRG = F P 16 BR 1

Wo UxBRG ist ein Register vom Typ unsigned int (16-bit), F P ist die CPU-Taktfrequenz in Hz, und BR ist die gewünschte Baudrate in bps.

Wenn wir zum Beispiel eine Baudrate von wollen BR = 19200 bps , und die CPU-Taktfrequenz ist F P = 60 MHz , wäre der entsprechende Registerwert 194,3125, der auf 194 oder 195 gerundet werden kann. Die tatsächliche Baudrate in Bezug auf die UxBRG Registerwert kann wie folgt berechnet werden:

BR = F P 16 ( UxBRG + 1 )

Für das obige Beispiel kann die tatsächliche Baudrate eine der folgenden sein:

  • BR = 19230.76923 bps ( UxBRG = 194 ) -> der Baudratenfehler beträgt +0,160 %
  • BR = 19132.65306 bps ( UxBRG = 195 ) -> der Baudratenfehler beträgt -0,351 %

Der Baudratenfehler wird wie folgt berechnet:

BR irren = BR BR BR 100 %

Im obigen Beispiel jedoch, obwohl UxBRG = 194 gibt einen niedrigeren absoluten Baudratenfehler (+0,160%), würde ich lieber wählen UxBRG = 195 (-0,351 %). Der Grund dafür ist, dass, wenn ein Bit auf dem Datenbus von 0 auf 1 (oder umgekehrt) umschaltet, die Kabelkapazität diesen Übergang "verlangsamen" würde, so etwas wie eine RC-Schaltung, die sogar 30% (oder mehr) betragen könnte ) der Bitperiode. Dies hängt natürlich von einer Kabellänge, der Baudrate selbst usw. ab. Aus diesem Grund würde ich es bevorzugen, wenn der "Baudratentakt" von der Mitte des Bits zum Ende des Bits driftet. Bitte lassen Sie mich wissen, ob das überhaupt Sinn macht.

PS Da sich bei der UART-Kommunikation die Uhr bei jedem Frame selbst zurücksetzt, weiß ich, dass alles unter 3% Baudratenfehler unter "normalen" Betriebsbedingungen als akzeptabel angesehen wird.

Vielen Dank im Voraus!

Beste Marko.

Antworten (2)

Ich möchte lieber, dass die "Baudratenuhr" von der Mitte des Bits zum Ende des Bits driftet.

Das ist in Ordnung, wenn Sie auf den Empfänger schauen, aber denken Sie daran, dass die UART-Kommunikation normalerweise bidirektional ist. Wenn Sie mit einem langsamen Takt senden, benachteiligen Sie den Empfänger am anderen Ende stärker.

Es ist besser, den kleinsten absoluten Fehler für die beste Leistung in beiden Richtungen auszuwählen .

Dave, ja, das macht Sinn. Da der "wahre Baudratenfehler" (ungefähr) die Summe der Baudratenfehler von zwei kommunizierenden Geräten ist. Mit anderen Worten, bei der Kommunikation zwischen zwei Geräten wird eine der Uhren auf einer Zeitachse immer nach "links" und die andere nach "rechts" driften. Daher ist es am sichersten, die Baudrate zu wählen, die der "idealen Baudrate" am nächsten kommt. Danke für die Hilfe!

Ich spreche eine Aussage in der Frage an, die falsch ist und die Frage ungültig macht, da sie die gesamte Grundlage der Frage untermauert: -

Der Grund dafür ist, dass, wenn ein Bit auf dem Datenbus von 0 auf 1 (oder umgekehrt) umschaltet, die Kabelkapazität diesen Übergang "verlangsamen" würde, so etwas wie eine RC-Schaltung, die sogar 30% (oder mehr) betragen könnte ) der Bitperiode.

Wenn Sie sich eine halbwegs anständige Übertragungsleitung (wie Koaxialkabel oder richtig gestaltete Kupferbahnen auf einer Leiterplatte) ansehen, hat sie eine charakteristische Impedanz, die mathematisch als eine Reihe kurzer Abschnitte wie diese modelliert werden kann: -

Geben Sie hier die Bildbeschreibung ein

Bei niedrigen Frequenzen dominieren R und C und Sie bekommen kapazitive Probleme. Bei Telekommunikationsleitungen beträgt die Impedanz beispielsweise nicht 600 Ohm über das Sprachspektrum, sondern eher so bei Audio: -

Geben Sie hier die Bildbeschreibung ein

Bei viel höheren Frequenzen pendelt sich dies im obigen Beispiel auf 100 Ohm ein, aber bei vielen Koaxialkabeln sind es 50 Ohm oder 75 Ohm. Beachten Sie, dass im obigen Bild die Nennimpedanz (600 Ohm) mit der gepunkteten Linie angezeigt wird und ungefähr der Impedanz bei 1 kHz entspricht.

Um auf den Punkt zurückzukommen, die Flankenübergänge in Ihrem Signal sind sehr schnell und diese werden in einem Teil des Spektrums übertragen, der mindestens 1 MHz oder darüber liegt, und daher läuft die charakteristische Impedanzgleichung (oben gezeigt) darauf hinaus L C dh rein resistiv.

Dies bedeutet, dass die Flanken Ihres digitalen Signals nicht als solche tiefpassgefiltert werden, es sei denn, Sie haben ein Kabel, das man als wirklich beschissen bezeichnen könnte (oder schlecht konstruierte Verbindungen auf Ihrer Leiterplatte).

In Anbetracht dessen, dass Sie, wenn Sie Kabel und Schienen nicht als Übertragungsleitungen behandeln, seltsame Phänomene in Ihrem Signal sehen werden, die wie kapazitive Effekte aussehen können. Ich spreche von Signalreflexionen von einer schlecht abgeschlossenen Übertragungsleitung. All dies sind auf ihre Weise gute Methoden: -

Geben Sie hier die Bildbeschreibung ein

Wenn Sie nicht versuchen, die Leitung mit einer der oben genannten Methoden abzuschließen, werden wahrscheinlich Reflexionen hin und her springen, und es kann so aussehen, als ob dies durch zu viel T-Leitungskapazität verursacht wird.

Andy, in dem Tutorial, das ich in meinem ersten Beitrag gepostet habe, erwähnen sie langsame Anstiegs- / Abfallzeiten aufgrund des "übermäßig kapazitiven Kabels", und sie schätzen, dass dies 25% der Bitperiode sind. Laut Ihrem Beitrag ist dies kein Problem, es sei denn, es wird eine schlechte Verkabelung verwendet. Bitte korrigiere mich wenn ich falsch liege? Gibt es neben schlechter Verkabelung oder schlecht gestalteten Leiterplattenverbindungen noch andere Gründe, die die Anstiegs-/Abfallzeit eines Bitübergangs beeinflussen könnten? Danke für diese Einführung in Übertragung und Verkabelung! Können Sie bitte ein Skript / Buch empfehlen, in dem ich mehr über Dinge wie Signalreflexionen usw. lesen könnte? Danke!
UART-Verbindungen (z. B. RS-232) werden selten mit irgendetwas hergestellt, das einer echten Übertragungsleitung über das interessierende Frequenzband nahe kommt, insbesondere wenn man bedenkt, dass die Grundfrequenz die Hälfte der Baudrate beträgt. Die kapazitive Belastung des absichtlich begrenzten Treiberstroms ist tatsächlich der Hauptbeitrag zur Wellenformverzerrung.
Die Naivität dieses letzten Kommentars überrascht mich. Die Ablehnung gibt jedoch nicht an, wer den Kommentar abgegeben hat.
@Marko Ich habe ein Problem mit diesem Maxim-Artikel. Ich habe nach Artikeln gesucht, um dies zu belegen, kann aber nichts finden. Wenn die Unterwähler einige Beweise vorlegen können, würde ich es begrüßen.
Andy, kein Problem, danke für deine Hilfe! Unabhängig von meiner anfänglichen Annahme ist es immer besser, eine Baudrate zu wählen, die den kleinsten absoluten Fehler ergibt, wie ich bereits im Kommentar zu Daves Antwort erklärt habe.