Hallo! Ich versuche gerade die TX & RX-Fehler einer UART-Kommunikation zu verstehen. Das mit dem RX verstehe ich ja noch, dass wenn der Empfangstakt nicht 100% stimmt es zu Fehlinterpretationen des empfangenen Datenstroms kommt. Warum in einigen Datenblättern auch ein TX-Fehler angegeben ist verstehe ich jedoch nicht. Ziel ist es, dass ich nicht nur die Grundlagen verstehe, sondern ich möchte/soll die Paketfehlerrate (PER) dieser Kommunikation berechnen. Und da tappe ich gerade völlig im Dunkeln, obwohl ich schon eine Weile rumgoogelt habe. Dabei bin ich jetzt aber auf dieses Forum gestoßen und bin voller zuversicht, dass ihr ein wenig Licht in die Dunkelheit meiner Unwissenheit bringen könnten. Danke schon mal im Voraus für eure Hilfe! Gruß Icke
> Warum in einigen Datenblättern auch ein TX-Fehler angegeben ist verstehe > ich jedoch nicht. Ich auch nicht, weil ich kein entsprechendes DB habe... Magst du uns eins von deinen zeigen? Ralf
Icke schrieb: > Warum in einigen Datenblättern auch ein > TX-Fehler angegeben ist verstehe ich jedoch nicht. Wenn bei einer Takterzeugung für eine UART beispielsweise 1,3% Fehler drinstehen, dann heisst das nicht, dass 1,3% aller Bits oder Bytes fehlerhaft sind, sondern dass der Takt um 1,3% neben dem Sollwert liegt. Diesen Wert muss man auf beiden Seiten berücksichtigen, ggf. mit Vorzeichen. Wenn der Sender in der Frequenz um 1,3% zu hoch und der Empfänger um 1,7% zu tief liegt, dann beträgt der Gesamtfehler 3% und es wird schon arg knapp. Sind beide Vorzeichen gleich, dann sind es nur 0,4% und das reicht locker.
Ein Datenblatt. Gerne. Siehe Abschnitt 15.3.13, Seite 480. Das sind zwar ein Berg von Gleichungen angegeben. Aber verstehen tue ich es noch nicht so recht.... ;(
Hallo! Danke für den Link. Allerdings stand da nicht mehr drin, als ich schon wusste ... Die Frage ist, warum auch für TX ein Fehler angegeben ist, der zusdem vom RX-Fehler abweicht UND wie man die Paketfehlerwahrscheinlichkeit berechnet.
> Die Frage ist, warum auch für TX ein Fehler angegeben ist... Ganz einfach, übliche Baudraten sind ja "krumme Werte", sieht man sehr schön, wenn man den Kehrwert der Baudrate verwendet, um auf eine Bitzeit zu kommen. Beispielsweise ist eine Bitzeit bei 9600 Bd = 104,166µs, also sehr krumm. Beim Empfang wird die Rx-Leitung üblicherweise mit dem 16fachen der eingestellten Baudrate abgetastet (beim 8051, ich vermute, bei AVR etc. ist es genauso). Warum der Verweis auf die Empfangsschaltung wichtig ist, siehst du weiter unten wg. der Formel. Hier also eine entsprechende Beispielrechnung für einen Standard-8051, Baudrate über Timer 1, Teiler = 1 -> entspricht höchstmöglicher Baudrate: Fosc = 22.1184MHz Systemtakt = Fosc / 12 gewünschte Baudrate = 115200 Bd Ergibt: 22118400 12 16 / 1 = 115200 Deswegen braucht man diese "krummen" (Baudraten-)Quarzwerte. Hat man keinen Baudratenquarz zur Hand und muss einen glatten Wert verwenden, ergeben sich eben auch schon Fehler bei der Sendebaudrate, da diese von sich aus durch den internen Aufbau fehlerbehaftet ist. Ralf
argl da hat's wohl n Teil der Formel verklopft, sorry. Also, die o.g. Formel gilt für den Empfang, aber der Sendeteil des µCs arbeitet ja mit dem gleichen Oszillator, daher auch mögliche Fehler beim Senden. Und die Toleranzen der Quarze etc. fallen auch noch n bisschen mit ins Gewicht... Ralf
@ Ralf (Gast) >Toleranzen der Quarze etc. fallen auch noch n bisschen mit ins >Gewicht... Kaum. Selbst ein Gurkenquarz mit +/-100ppm =0,01% hat keinerlei praktischen Einfluß. MfG Falk
Achso. Wenn der Sendetakt nicht 100% passt kann es naürlich dennoch zu Empfangsfehlern kommen, auch wenn der RX-Takt 100% stimmen würde. ;) Und wie sieht es jetzt mit der Fehlerwahrscheinlichkeit aus?
BTW: Ich schaffe es noch immer nicht mit den angegeben Gleichungen auf die in der Tabelle angegeben Fehlerraten zu kommen.
Icke schrieb: > Und wie sieht es jetzt mit der Fehlerwahrscheinlichkeit aus? Damit haben diese Zahlen und Formeln rein garnichts zu tun. Die Fehlerwahrscheinlichkeit lässt sich auch nicht allein aus der Baudrate errechnen, den das Zeitverhalten der Pegelwandler/Transceiver spielt dabei auch eine Rolle. > Ich schaffe es noch immer nicht mit den angegeben Gleichungen auf die in > der Tabelle angegeben Fehlerraten zu kommen. Ich habe zwar dieses Manual nicht gelesen, bin aber einigermassen sicher, dass du so etwas wie Fehlerraten darin nicht finden wirst. Nicht jede Prozentangabe ist eine Wahrscheinlichkeit.
Ja gut, die Fehlerwahrscheinlichkeit nciht. Aber eben den TX und RX Fehler, der -wie wir es in dieser Diskussion gelernt haben- durch den Clock kommt. Und dafür sind in der Datenblatt Gleichungen angegeben....
Ok, ich habe mal ins Manual reingesehen. Ist etwas komplizierter als bei anderen UARTs. UARTs sind traditionell meist recht simpel gestrickt. Der Baudratentakt wird durch 16 geteilt - manchmal ist auch 8 möglich. Daraus ergibt sich die verwendete Baudrate. Mit dem Startbit wird dieser 16-er Zähler gestartet und auf Halbzeit wird das Bit ausgewertet, oft als Mehrheitsentscheid bei 3 Abtastungen um diese Halbzeit herum. Nachteil dieser Methode ist, dass sich aus "geraden" Taktfrequenzen wie 1MHz selten die üblichen Baudraten genau genug ergeben, weshalb der taditionelle Ansatz in der Verwendung von Baudratenquarzen für die Taktgenerierung besteht. Das passt nicht jedem: Wer mal versucht hat, 38400bd asynchron und 500Kbps CAN unter einen Hut zu bringen weiss was ich meine - eine der beiden Rate kann nicht exakt sein. Neuere Controller grösserer Ordnung verwenden deshalb nicht selten eine Baudratengenerierung mit fraktionalem Vorteiler. Wie das exakt funktioniert ist dort selten angegeben, auch eine exakte Fehlerrechung findet sich selten. Was den Vorteil hat, dass man sich da nicht durchwühlen muss. Und den Nachteil hat, dass man den Faktor 16 immer noch im Boot hat, also bei niedrigen Taktfrequenzen trotzdem nur niedrige Baudraten hinbekommt. 4800bd bei 32KHz Takt sind da nicht drin. TI ist mit dem USCI des MSP430 einen deutlich anderen Weg gegangen. Sowohl in der Technik, als auch in der Dokumentation. Die dabei verwendete Technik spart aufgrund niedriger Taktfrequenzen Strom, ist aber nicht wirklich leicht verständlich und leider auch strunzdumm erklärt. Aber man kann 4800bd bei 32KHz Takt verwenden. Vollständig verstanden habe ich die Sache in der Kürze auch nicht, aber mir scheint, dass sich anders als bei der traditionellen Methode, deren Abweichung sich leicht als prozentualer Taktfehler rechnen lässt, bei der TI Methode ein Jitter ergibt. Die gesendete Signalflanke wie auch der Abtastpunkt beim Empfang landen je nach Quelltakt, Parameter und Bitposition mal vor mal nach dem eigentlich korrekten Zeitpunkt. Beim Empfang gibt es dann zusätzlich noch einen Zeitfehler, der durch die Abtastung des Signals entsteht. Das Startbit wird nicht sofort mit der negativen Flanke verwendet, sondern das Signal wird zunächst mit dem Takt synchronisiert und dann erst wird die Änderung zur Synchronisation der Zeitbasis verwendet. Dadurch entsteht ein zusätzlicher Fehler von maximal einem Taktzyklus. Das ist zwar traditionell auch nicht anders, aber wenn der Sample-Takt das 16fache der Baudrate beträgt, dann ist dieser Fehler wenig relevant und wird pratisch nie betrachtet. Bei einem 4-er Takt (9600bd bei 32KHz) ist dieser Abtastfehler jedoch nicht mehr zu vernachlässigen. Darin liegt der Grund für höhere Fehlerwerte bei Rx als bei Tx, und weshalb dies abhängig vom Taktverhältnis ist.
Icke schrieb: > Ziel ist es, dass ich nicht nur die Grundlagen verstehe, sondern ich > möchte/soll die Paketfehlerrate (PER) dieser Kommunikation berechnen. > Und da tappe ich gerade völlig im Dunkeln, Ich fürchte, das wirst du auch dann noch, wenn du die TI'sche Rechnung vollständig verstanden hast. Weil dafür mehr als nur der UART-Fehler massgeblich sein dürfte, denn üblicherweise fragt man nur dann nach einem PER, wenn sich zwischen Tx und Rx mehr befindet als nur ein Stück Draht. Und dann ist die TI'sche Rechnung nur ein Teil der Gesamtrechnung. Ohne zusätzliche Komponenten zwischen Tx und Rx wird die Kommunikation entweder fehlerfrei funktionieren, oder abhängig von den übertragenen Daten weitgehend Schrott ergeben. Für eine PER sorgt der Kram dazwischen, bereichert um den TI'schen Taktfehler. Der TI'schen Anteil ist deterministisch. Aber um deinen grauen Zellen weiteres Futter zu geben: Der sich aus dem UART-Verhalten ergebende Fehler ist abhängig von den übertragenen Daten. 0x40 ist deutlich kritischer als 0xFB.
Beruhigend, dass andere auch Probleme mit diesem Dokument haben. ;) Ich denke mal, dass ich jetzt die Grundlagen verstanden habe. Wie ich jetzt die PER ausrechnen soll, weiß ich allerdings noch immer nicht. Würde das ja gern wie ein Mathematikee machen: "Ich definiere ..." Ich definiere, das jedes Bit richtig erkannt wird. Damit beträgt die Bit- und die Paketfehlerwahrscheinlichkeit Null. :D (Schön wär's!)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.