Bedeutet die Baudrate bei der seriellen Kommunikation, dass wir die genaue Taktfrequenz verwenden müssen, oder ist es ein Bereich von Geschwindigkeiten, den wir verwenden können?
Und wenn es ein exakter Wert ist, wie genau sollte er sein? Kann ich zum Beispiel 555 als Taktgeber einer seriellen Kommunikationsschaltung verwenden?
Die Timings müssen genau genug sein, damit sie nicht auseinanderdriften, bevor das Protokoll erneut synchronisiert wird.
UART seriell wird auf jedem Byte neu synchronisiert und ein Byte besteht aus etwa 10 Bits (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, erlaubt dies einen Unterschied von ungefähr 5 % zwischen den beiden Enden der Verbindung.
Jedoch:
Das Fazit ist, dass ein Fehler von 1 % auf Ihrer Uhr mit ziemlicher Sicherheit in Ordnung ist. 5% Fehler ist mit ziemlicher Sicherheit ein Problem. Zwischen diesen beiden Zahlen kann es je nach Gesamtbild ein Problem geben 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 %. Das ergibt eine Toleranz von etwa 3% für die Zeitkonstante des RC-Netzwerks, und das, bevor Sie an Fehler denken, die durch Ihren Treiberchip verursacht werden.
Unter dem Strich sollten Sie sich also einen Kristall- oder Keramikresonator ansehen.
Was USB betrifft, so habe ich nicht die Erfahrung, um es von Grund auf 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.
Die UARTs , die typischerweise in seriellen RS232-Systemen verwendet werden, arbeiten durch Abtasten der Datenleitung irgendwo in der Mitte des Bits gemäß einer Teilung des vordefinierten Grundfrequenztakts der Baudrate. Wenn die gesendeten Daten und der Empfänger nicht auf derselben Frequenz sind, wandert der "Abtastpunkt" als solches näher an den Rand des Bitrahmens bei aufeinanderfolgenden Bits.
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 wird in 0,5/10 = 5 % Fehler übersetzt.
In Wirklichkeit ist Ihre Toleranz jedoch geringer, da Sie auch die Latenz Ihrer Grundfrequenzperiode hinzufügen müssen, wodurch ein Versatz von der Vorderflanke des Startbits hinzugefügt wird. Je höher Ihre Grundfrequenz ist, desto geringer ist der Effekt.
Die Verwendung eines 555-Timers für diesen Zweck würde ich nicht empfehlen, es sei denn, Sie planen eine manuelle Einstellung in der 555-Schaltung.
Ein USART hingegen verwendet ein komplexeres Steuerverfahren, das versucht, die Übertragung mit den empfangenen Daten zu synchronisieren. Dies kann durch Verwendung eines Datenmusters erfolgen, das einen eingebetteten Takt hat, durch Verwendung eines durchgelassenen Takts oder durch irgendeine Form von Phasenverriegelung mit den empfangenen Datenflanken. (Obwohl letzteres wohl wirklich pseudosynchron ist.)
Eugen Sch.
Das Photon