Ich habe an einigen Stellen gelesen, einer davon ist dieser , dass einer der Hauptunterschiede zwischen UART und SPI darin besteht, dass ersteres eine Art Hardware und letzteres ein Protokoll ist.
Es fällt mir schwer, diesen Begriff vollständig zu begreifen. Dies ist kurz, was ich bisher aus dem Lesematerial herausgefunden habe, das ich beim Googeln gefunden habe, eingebettet in einige Fragen:
UART ist eine Hardware, die zur Kommunikation zwischen zwei Komponenten verwendet wird. Der UART wandelt parallele Daten, die er von einem Datenbus empfängt, in einen seriellen Strom von Bits um, die nur über eine Leitung übertragen werden, und umgekehrt. Ein UART verwendet nur 2 Drähte - einen zum Empfangen und einen zum Senden. Der Rest der Details ist für die Art und Weise dieser Diskussion nicht wichtig.
SPI ist ein synchrones (da es eine Uhr verwendet) Kommunikationsprotokoll, das zwischen Geräten verwendet wird.
Dieses Protokoll verwendet 4 Kabel (wenn nur ein Slave vorhanden ist):
Im Gegensatz zu UART überträgt es Bits in einem Strom, der nicht in Pakete unterteilt ist (hier beginnt die Verwirrung - es wird mit UART verglichen). Geräte, die über SPI kommunizieren, befinden sich in einer Master-Slave-Beziehung. Der Master ist das steuernde Gerät – normalerweise ein Mikrocontroller – während der Slave – normalerweise so etwas wie ein Display, ein Sensor oder ein Speicherchip – Anweisungen vom Master entgegennimmt. (Zuverlässigkeitsprüfung - Wenn wir sagen, dass der Master den Slave kontrolliert , meinen wir lediglich die Auswahl des Slaves durch die SS/CS-Leitung und die Taktsignalisierung?)
Was mich hauptsächlich verwirrt, ist dieser letzte Unterschied - Hardware vs. Protokoll. Es scheint, dass diese beiden Kommunikationsschemata in denselben Parametern (Anzahl der Pins, Start- / Stoppbits, Geschwindigkeit usw.) nebeneinander verglichen werden - Sie können nicht zwei im Wesentlichen unterschiedliche Einheiten basierend auf denselben Parametern vergleichen, oder?
Besteht der Unterschied darin, dass UART ein dediziertes Stück Hardware ist und SPI allgemeine GPIOs des Mikrocontrollers verwendet?
Nein, UART ist nicht unbedingt ein Stück Hardware, noch SPI. Sie können beide in Software auf einem Gerät implementieren, das keinen Hardware-UART oder SPI hat. Üblicherweise finden sich beide in MCUs als Hardware-Peripheriegeräte.
Ein UART bedeutet einfach Universal Asynchronous Receiver Transmitter. Es verwendet das asynchrone Start-Stop-Framing-Protokoll, um Datensymbole mit wählbarer Anzahl von Bits und Paritätsbits zur Fehlerprüfung zu übertragen. Nehmen wir der Einfachheit halber an, dass es 8-Bit-Datensymbole sendet, die als Bytes bezeichnet werden. Ein UART stellt also einfach eine asynchrone serielle Schnittstelle auf Bitebene bereit.
SPI war ursprünglich ein einfaches Hardware-Peripheriegerät zum Anschließen von TTL-Chips mit getakteten seriellen Schnittstellen. Es entlastet einfach die Byte-Übertragung von der Software zur Hardware, mit wählbarer Taktpolarität und Phaseneinstellung. Ein SPI bietet also einfach eine byteorientierte synchrone serielle Schnittstelle auf Bitebene.
Letztendlich handelt es sich bei beiden also um Protokolle zum Senden von Bits und Bytes.
Aber das unterscheidet sich von einem Protokoll, das definiert, was diese Bytes bedeuten. Beispielsweise definiert ein SPI-Flash-Chip ein Protokoll, wie die Chipauswahl verwendet wird, um Befehle abzugrenzen und welche Bytes Befehle und welche Daten sind, und wie sie zum Lesen und Schreiben des Flash-Speichers über den SPI-Bus auf hoher Ebene verwendet werden. Gleiches gilt beispielsweise für das YModem-Protokoll, das definiert, was diese Bytes bedeuten, um Dateien über UART auf hoher Ebene senden zu können.
Die meisten Ihrer Aussagen sind falsch und hier gibt es viele Missverständnisse ...
Einer der Hauptunterschiede zwischen UART und SPI besteht darin, dass ersteres eine Art Hardware und letzteres ein Protokoll ist.
Nein das ist Unsinn. Beides ist kein Protokoll. Sie sind sowohl physische als auch Data-Link-Layer-Standards. Konsultieren Sie das "OSI-Modell" , das in jedem Anfängerkurs für Datenkommunikation gelehrt wird.
Es fällt mir schwer, diesen Begriff vollständig zu begreifen.
Kein Wunder, denn es ist falscher Unsinn ...
UART ist eine Hardware, die zur Kommunikation zwischen zwei Komponenten verwendet wird.
Vielmehr gibt es den UART-Bus – die Datenverbindungsschicht – und die physische UART-Komponente, die zur Kommunikation über diesen Bus verwendet wird. In den Tagen, als Dinosaurier auf der Erde lebten, gab es eine Komponente namens 16550, die von National Semi entwickelt wurde, die „der UART“ war und in jedem PC-Computer installiert war.
Ebenso benötigen Sie ein SPI-Hardware-Peripheriegerät. Obwohl es im Grunde nur ein verherrlichtes Schieberegister ist, das an eine Reihe von Signalen angeschlossen ist.
Der UART wandelt parallele Daten um, die er von einem Datenbus empfängt
Wie Sie den UART ansprechen, hängt vom System ab. Bei modernen Mikrocontrollern wird dies intern gehandhabt und wir brauchen uns keine Gedanken darüber zu machen, wie. Es könnte parallel sein, es geht darum, wie die MCU entworfen ist, hat nichts mit UART zu tun.
SPI ist synchron (da es eine Uhr verwendet)
Vielmehr ist es synchron, da es zusammen mit den Daten ein Taktsignal verwendet. UART taktet auch seine Daten, aber es kann unendliche Verzögerungen zwischen Datenbytes geben. Die Begriffe synchron oder asynchron sind nicht wirklich hilfreich, es sind hauptsächlich nur Schlagworte.
Im Gegensatz zu UART überträgt es Bits in einem Strom, der nicht in Pakete unterteilt ist
Nein, genau wie UART überträgt es mindestens 8 Bit. Wenn irgendeine Art von Protokoll einer höheren Schicht vorhanden ist, diktiert es die Paketformate. Aber das ist nicht auf der Datenverbindungsschicht vorhanden, sondern auf der Anwendungsschicht.
Plausibilitätsprüfung - Wenn wir sagen, dass der Master den Slave kontrolliert, meinen wir lediglich die Auswahl des Slaves durch die SS/CS-Leitung und die Taktsignalisierung?)
Das bedeutet, dass es sowohl /SS als auch die Uhr steuert. Dabei steuert der Master, wann die Datenübertragung beginnt und wie schnell sie ist. Der Sklave muss sich nur einreihen. Und das bedeutet in der Regel, dass der Slave die Daten jederzeit parat haben muss, da er oft nicht weiß, wann es Zeit ist, sie zu senden. Es gibt viele Variationen davon, da SPI nicht wirklich so gut standardisiert ist.
UART kann nur 2 haben
Mit höheren Layer-Standards wie RS-485 können Sie größere Netzwerke erstellen. Üblicherweise „Sternnetze“, bei denen alle Informationen einen Master passieren, der sie dann weiterleitet. Aber Sie können auch eine Art Multi-Drop-Netzwerk haben, solange zwei Knoten nicht gleichzeitig senden. Es ist möglich, aber insgesamt ziemlich grob.
UART steht für Universal Asynchronous Receiver-Transmitter, was Wikipedia definiert als Ein universeller asynchroner Receiver-Transmitter ist ein Computerhardwaregerät für die asynchrone serielle Kommunikation, bei dem das Datenformat und die Übertragungsgeschwindigkeiten konfigurierbar sind.
Justme bezieht sich vielleicht auf eine serielle Verbindung, die über einen UART oder auch über Software erfolgen kann.
Der UART auf Hardwareebene ist ein System, das Daten serialisiert und sie Bit für Bit auf einer Leitung sendet. Es selbst implementiert kein Protokoll, weder Hardware noch Software, und kann mit Transceivern und Protokollen verwendet werden, um Busse wie RS232, RS485, MODBUS, DMX usw. zu generieren.
UART wird häufig verwendet, um diese Busse zu erstellen, um dann zwischen verschiedenen Systemen zu kommunizieren. Es wird manchmal auch verwendet, um mit Hardwaremodulen zu kommunizieren, wie es oft bei Bluetooth-Modulen der Fall ist.
UART sendet Daten ohne Taktleitung und erfordert, dass die Geräte die gleiche Baudrate haben, was eine Konfiguration auf beiden Seiten erfordert und auch einen Oszillator (eine Art Taktgeber) erfordert.
UART hat keine Slave/Master-Seite, kann aber in Software implementiert werden.
SPI (Serial Peripheral Interface) selbst ist ebenfalls eine Hardwareimplementierung und enthält kein Softwareprotokoll. Es hat einige Regeln, wie die Datenleitungen und eine Aktivierungsleitung und mindestens eine Uhr.
Es berücksichtigt auch, dass es einen Master und einen Slave gibt, wobei der Master die Uhr und die Freigabeleitung steuert.
SPI hat keine Regeln für die logische Ebene der Leitungen, daher können einige Chips unterschiedliche logische Ebenen verwenden.
Das über SPI gesendete Datenformat ist ebenfalls nicht spezifiziert und wird durch Software implementiert, je nachdem, womit es kommuniziert.
SPI wird normalerweise innerhalb einer Leiterplatte verwendet, um mit anderen ICs zu kommunizieren.
Da der SPI über eine Taktleitung verfügt, ist auf der Slave-Seite keine Konfiguration erforderlich, was auch bedeutet, dass der Slave keinen Oszillator haben muss.
Es gibt auch einige Busse, die auf SPI basieren, die mehr Regeln wie SPI_RX oder andere herstellerabhängige Regeln definieren.
SPI wird hauptsächlich für die Kommunikation zwischen Chips innerhalb einer Leiterplatte verwendet.
UART wird hauptsächlich für die Kommunikation über Kabel verwendet, manchmal aber auch mit einigen Modulen innerhalb einer Leiterplatte.
SPI und UART allein haben wohl ähnliche Geschwindigkeiten. Uart arbeitet normalerweise mit einer langsameren Geschwindigkeit, da es über größere Entfernungen und aufgrund der Oszillatorfrequenztoleranzen verwendet wird, während SPI nicht von der Taktsynchronisierung abhängig ist.
UART wurde in den 70er Jahren geboren, während SPI in den 90er Jahren entstand.
Sowohl die Schnittstellen UART als auch SPI haben eine Fülle von CMOS-Transistoren im Inneren, daher sind sie Hardwareschnittstellen. Die Gesamtheit dieser CMOS-Transistoren wird als "Hardware-Controller" bezeichnet.
UART hat 2 Pins: TX, RX
SPI hat 4 Pins: TX, RX, CLOCK, ENABLE
Beide senden und empfangen jeweils ein Byte, also eines nach dem anderen.
SPI ist viel schneller als UART, da Bits an der steigenden oder fallenden Flanke des CLOCK-Signals geschrieben und gelesen werden. Sie beschleunigen die Taktrate, Sie beschleunigen die Kommunikation.
UART hat keine Taktunterstützung, daher muss das empfangende Gerät ein lokales Taktsignal erzeugen, das nicht mit dem sendenden synchron sein kann. Das bedeutet, dass die Taktrate nicht zu hoch sein darf und die Kommunikation ziemlich langsam ist.
Zur Beantwortung Ihrer Frage:
Ein Protokoll ist in der Informatik ein Satz von Regeln.
Hardware in der Elektronik ist eine Reihe von Transistoren, Dioden, Widerständen usw., die miteinander verbunden sind.
Hardware ist darauf ausgelegt, Protokolle auszuführen.
Arsenal
Mattman944
Mitu Raj
Elliot Alderson
Nur ich
Arsenal