Seriell ist ein Überbegriff für alles, was "Time Division Multiplexed" ist, um einen teuren Begriff zu verwenden. Dies bedeutet, dass die Daten zeitlich verteilt gesendet werden, meist ein einzelnes Bit nach dem anderen. Alle Protokolle, die Sie benennen, sind serielle Protokolle.
UART, für Universal Asynchronous Receiver Transmitter, ist eines der am häufigsten verwendeten seriellen Protokolle. Es ist fast so alt wie ich und sehr einfach. Die meisten Controller haben einen Hardware-UART an Bord. Es verwendet eine einzige Datenleitung zum Senden und eine zum Empfangen von Daten. Am häufigsten werden 8-Bit-Daten wie folgt übertragen: 1 Startbit (niedriger Pegel), 8 Datenbits und 1 Stoppbit (hoher Pegel). Das Low-Level-Startbit und das High-Level-Stopbit bedeuten, dass es immer einen High-Low-Übergang gibt, um die Kommunikation zu starten. Das beschreibt UART. Kein Spannungspegel, daher können Sie ihn bei 3,3 V oder 5 V haben, je nachdem, welchen Mikrocontroller Sie verwenden. Beachten Sie, dass sich die Mikrocontroller, die über UART kommunizieren möchten, auf die Übertragungsgeschwindigkeit und die Bitrate einigen müssen, da sie nur die abfallenden Startbits haben, um sich zu synchronisieren. Das nennt man asynchrone Kommunikation.
Für Fernkommunikation (das müssen nicht Hunderte von Metern sein) ist der 5-V-UART nicht sehr zuverlässig. Deshalb wird er in eine höhere Spannung umgewandelt, normalerweise +12 V für eine "0" und -12 V für eine " 1 ". Das Datenformat bleibt gleich. Dann haben Sie RS-232 (was Sie eigentlich EIA-232 nennen sollten, aber niemand tut.)
Die Zeitabhängigkeit ist einer der großen Nachteile von UART, und die Lösung ist USART für Universal Synchronous / Asynchronous Receiver Transmitter. Dies kann UART, aber auch ein synchrones Protokoll sein. Synchron werden nicht nur Daten, sondern auch eine Uhr übertragen. Mit jedem Bit teilt ein Takt dem Empfänger mit, dass dieses Bit zwischengespeichert werden soll. Synchrone Protokolle benötigen entweder eine höhere Bandbreite, wie im Fall der Manchester-Codierung, oder eine zusätzliche Leitung für die Uhr, wie SPI und I2C.
SPI (Serial Peripheral Interface) ist ein weiteres sehr einfaches serielles Protokoll. Ein Master sendet ein Taktsignal und verschiebt es bei jedem Taktimpuls um ein Bit zum Slave und um ein Bit zum Slave. Die Signalnamen lauten daher SCK für Clock, MOSI für Master Out Slave In und MISO für Master In Slave Out. Durch die Verwendung von SS-Signalen (Slave Select) kann der Master mehr als einen Slave am Bus steuern. Es gibt zwei Möglichkeiten, mehrere Slave-Geräte an einen Master anzuschließen. Eine ist oben erwähnt, dh die Verwendung der Slave-Auswahl und die andere der Verkettung. Sie verwendet weniger Hardware-Pins (Auswahlleitungen), aber die Software wird kompliziert.
I2C(Inter-Integrated Circuit, ausgesprochen "I squared C") ist ebenfalls ein synchrones Protokoll, und es ist das erste, das "Intelligenz" enthält. die anderen schoben blöd Bits rein und raus, und das war es auch schon. I2C verwendet nur zwei Drähte, einen für die Uhr (SCL) und einen für die Daten (SDA). Das bedeutet, dass Master und Slave Daten über dieselbe Leitung senden, die wiederum vom Master gesteuert wird, der das Taktsignal erzeugt. I2C verwendet keine separaten Slave-Auswahlen, um ein bestimmtes Gerät auszuwählen, verfügt jedoch über eine Adressierung. Das erste vom Master gesendete Byte enthält eine 7-Bit-Adresse (damit Sie 127 Geräte am Bus verwenden können) und ein Lese- / Schreibbit, das angibt, ob die nächsten Bytes auch vom Master stammen oder von dem stammen sollen Sklave. Nach jedem Byte muss der Empfänger eine "0" senden, um den Empfang des Bytes zu bestätigen. was der Master mit einem 9. Takt zwischenspeichert. Wenn der Master ein Byte schreiben möchte, wird derselbe Vorgang wiederholt: Der Master gibt Bit für Bit einen Takt aus, um zu signalisieren, dass die Daten zum Lesen bereit sind. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss darauf achten, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll wurde von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen. Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das exakt mit I2C identisch ist. Daher verfügt jedes AVR-Gerät nicht über I2C, sondern über TWI. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss darauf achten, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll wurde von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen. Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das exakt mit I2C identisch ist. Daher verfügt jedes AVR-Gerät nicht über I2C, sondern über TWI. Wenn der Master Daten empfangen möchte, erzeugt er nur die Taktimpulse. Der Slave muss darauf achten, dass das nächste Bit bereit ist, wenn der Takt gegeben wird. Dieses Protokoll wurde von NXP (ehemals Phillips) patentiert, um Lizenzkosten zu sparen. Atmel verwendet das Wort TWI (2-Draht-Schnittstelle), das exakt mit I2C identisch ist. Daher verfügt jedes AVR-Gerät nicht über I2C, sondern über TWI.
Zwei oder mehr Signale auf derselben Leitung können Konflikte verursachen, und Sie hätten ein Problem, wenn ein Gerät eine "1" sendet, während das andere eine "0" sendet. Daher ist der Bus ODER-verknüpft: Zwei Widerstände ziehen den Bus auf einen hohen Pegel, und die Geräte senden nur niedrige Pegel. Wenn sie einen hohen Pegel senden wollen, lassen sie einfach den Bus los.
TTL (Transistor Transistor Logic) ist kein Protokoll. Es ist eine ältere Technologie für digitale Logik, aber der Name wird oft verwendet, um sich auf die 5-V-Versorgungsspannung zu beziehen, und bezieht sich oft fälschlicherweise auf das, was als UART bezeichnet werden sollte.
Über jedes von diesen kannst du ein Buch schreiben, und es sieht so aus, als ob ich auf dem besten Weg bin. Dies ist nur eine sehr kurze Übersicht, lassen Sie uns wissen, ob einige Dinge geklärt werden müssen.