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 registrieren, dessen Wert berechnet wird als:
Wo ist ein Register vom Typ unsigned int (16-bit), ist die CPU-Taktfrequenz in Hz, und ist die gewünschte Baudrate in bps.
Wenn wir zum Beispiel eine Baudrate von wollen , und die CPU-Taktfrequenz ist , wäre der entsprechende Registerwert 194,3125, der auf 194 oder 195 gerundet werden kann. Die tatsächliche Baudrate in Bezug auf die Registerwert kann wie folgt berechnet werden:
Für das obige Beispiel kann die tatsächliche Baudrate eine der folgenden sein:
Der Baudratenfehler wird wie folgt berechnet:
Im obigen Beispiel jedoch, obwohl gibt einen niedrigeren absoluten Baudratenfehler (+0,160%), würde ich lieber wählen (-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.
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 .
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: -
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: -
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 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: -
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.
Mark Gulin