Bedeutet die Baudrate bei der seriellen Kommunikation, dass wir die genaue Taktrate verwenden müssen, oder ist es ein Geschwindigkeitsbereich, den wir verwenden können?
und wenn es ein genauer Wert ist, wie genau sollte er sein? Kann ich beispielsweise 555 als Takt einer seriellen Kommunikationsschaltung verwenden?
serial
clock-speed
baudrate
klingt wie Fiziks
quelle
quelle
Antworten:
Die Timings müssen genau genug sein, damit sie nicht auseinander driften, bevor das Protokoll erneut synchronisiert wird.
Die serielle UART-Resynchronisation erfolgt auf jedem Byte, und ein Byte besteht aus etwa 10 Bit (8 Datenbits plus Start und Stopp). Wir gehen davon aus, dass unser UART auf die Mitte jedes Bits abzielt. Wenn alles perfekt ist und nur ein Ende ungenau ist, kann dies zu einem Unterschied von ca. 5% zwischen den beiden Enden der Verbindung führen.
Jedoch:
Die Quintessenz ist, dass 1% Fehler auf Ihrer Uhr mit ziemlicher Sicherheit in Ordnung ist. 5% Fehler ist mit ziemlicher Sicherheit ein Problem. Zwischen diesen beiden Figuren kann es je nach Gesamtbild ein Problem sein oder auch nicht.
Das ist eine große Herausforderung für einen RC-Oszillator. Nehmen wir an, Ihr R hat eine Toleranz von 1% und Ihr C eine Toleranz von 2%. Dies ergibt eine Toleranz von ca. 3% für die Zeitkonstante des RC-Netzwerks, bevor Sie über Fehler nachdenken, die durch Ihren Treiberchip verursacht wurden.
Unter dem Strich sollten Sie sich also einen Kristall- oder Keramikresonator ansehen.
Was USB betrifft, habe ich nicht die Erfahrung, anhand der ersten Prinzipien zu analysieren, aber https://www.silabs.com/community/interface/knowledge-base.entry.html/2004/03/15/usb_clock_tolerance-gVai sagt 1,5% für niedrige Geschwindigkeit und 0,25% für volle Geschwindigkeit.
quelle
Die UARTs, die typischerweise in seriellen RS232-Systemen verwendet werden, arbeiten, indem sie die Datenleitung irgendwo in der Mitte des Bits gemäß einer Aufteilung des vordefinierten Basisfrequenztakts mit Baudrate abtasten. Wenn sich die gesendeten Daten und der Empfänger nicht auf derselben Frequenz befinden, wandert der "Abtastpunkt" bei aufeinanderfolgenden Bits näher an den Rand des Bitrahmens.
Bei einem normalen UART beträgt die Bitlänge für ein Byte 10 oder 11 Bit. 1 Start-, 8 Daten- und 1 oder 2 Stoppbits. Ein halbes bisschen Wandern auf dem 10. Bit bedeutet einen Fehler von 0,5 / 10 = 5%.
In der Realität ist Ihre Toleranz jedoch geringer, da Sie auch die Latenz Ihrer Basisfrequenzperiode hinzufügen müssen, wodurch sich ein Versatz von der Vorderflanke des Startbits ergibt. Je höher Ihre Grundfrequenz ist, desto geringer ist der Effekt.
Die Verwendung eines 555-Timers für diesen Zweck würde ich nur empfehlen, wenn Sie eine manuelle Einstellung in der 555-Schaltung planen.
Ein USART verwendet andererseits eine komplexere Steuermethode, die versucht, die Übertragung mit den empfangenen Daten zu synchronisieren. Dies kann durch Verwendung eines Datenmusters mit eingebettetem Takt, durch Verwendung eines durchgelassenen Takts oder durch irgendeine Form der Phasenverriegelung an den empfangenen Datenflanken erfolgen. (Obwohl letzteres wohl wirklich pseudosynchron ist.)
quelle