Unterschied und Verwendung von USB, UART, SPI? [geschlossen]

Ich versuche, ein eingebettetes System zu aktivieren, das um die Intel D1000 MCU herum aufgebaut ist. Ich habe hauptsächlich einen Softwarehintergrund und fange gerade an, etwas Hardwarewissen nachzuholen.

Ich versuche, eine Verbindung zwischen einem EEPROMund dem herzustellen MCU. Mein Ziel ist es, diesen Pfad zu aktivieren:

  1. Benutzer brennt die Firmware in das EEPROM,
  2. Dann bootet die MCU und führt einen Code aus, um die Firmware in den SPI FLASH zu laden. .

Und ich sehe Wörter wie USB, UART, SPI. Sie alle haben Serialals Teil ihres Namens. Was ist der Unterschied? Wie verwende/verbinde ich sie?

(Entschuldigen Sie, wenn dies eine naive Frage ist.)

Der Grund dafür, dass all diese verschiedenen Schnittstellenoptionen bereitgestellt werden, liegt darin, dass es davon abhängt, womit Sie sich verbinden. Möglicherweise stellen Sie für Ihr Systemdesign fest, dass einige Peripheriegeräte oder Sensoren oder Schnittstellen eine oder mehrere dieser Schnittstellen benötigen. Sie verwenden also das, was zwischen dem Mikrocontroller und dem Peripheriegerät richtig spricht.
Sieht so aus, als ob Ihre Frage knappe Stimmen erhält. Auf den ersten Blick sieht diese Frage aus wie eine dieser "Was ist ein USB?" Fragen. Es wird erwartet, dass Sie wissen, wie Sie eine Internetsuche verwenden, um Ihr IC-Datenblatt zu finden, sowie Standarddokumente für gängige Schnittstellen wie USB finden. So wie ich es lese, fragen Sie nach einem kurzen Vergleichs-/Kontrastüberblick, sind aber dafür verantwortlich, die Implementierungsdetails aufzuschlüsseln. Schlagen Sie vor, dass Sie bearbeiten, um Ihren Datenblatt-Link hinzuzufügen.
"Mein Ziel ist es, diesen Pfad zu aktivieren: Firmware -> EEPROM -> SPI FLASH -> MCU." Das ergibt keinen Sinn: Firmware ist ein Konzept, keine physische Sache. EEPROM und FLASH kommunizieren nicht, wenigstens eine Seite muss intelligent sein.
@WoutervanOoijen Entschuldigung, dass einige Details fehlen. Ich möchte die Firmware in das EEPROM brennen, und dann führt die MCU einen Code aus, um die Firmware in den SPI FLASH zu laden.

Antworten (2)

Das sind drei verschiedene Arten von seriellen Schnittstellen.

SPI hat eine Hauptuhr und synchrone Master-in-Slave-out- und Master-out-Slave-in-Daten: insgesamt 3 Drähte plus Masse/Strom und optionale Chipauswahl. Daten werden gleichzeitig rein und raus übertragen, typischerweise 8 Bits gleichzeitig. Daten können je nach angeschlossenem SPI-Slave-Gerät MSB-first oder LSB-first sein. SPI ist ein etwas locker definierter Standard, der ursprünglich vom Motorola 68HC11-Mikrocontroller stammt, denke ich. Effektiv ist es wie ein Schieberegister.

UART ist das Peripheriegerät, das asynchron seriell sendet und empfängt. Dieses Protokoll wird oft auch "RS-232(C)" oder "EIA-232" oder "TIA-232" oder "COM-Port" oder mehrere andere Aliase genannt. Dies ist eines der ältesten allgemein verwendeten seriellen Schnittstellenprotokolle, weshalb es so viele Namen hat. Im Gegensatz zu SPI verwendet RS232 UART einen einzigen Draht, um sowohl die Uhr als auch die Daten zu übertragen. Als solches hängt es von einer vorher vereinbarten Vereinbarung zwischen Sender und Empfänger ab, was das Timing der Baudrate, die Anzahl der Datenbits, ob ein Paritätsbit vorhanden sein wird oder nicht, und die Mindestanzahl von Stoppbits. Das Senden von RS232 ist einfach, aber das Empfangen von RS232 ist schwierig, da das Timing des Taktsignals wiederhergestellt werden muss. Dies geschieht am besten in Hardware.

USB ist ein modernerer Schnittstellenstandard, der ausführlich in der Dokumentation des USB Implementors Forum beschrieben wird; Ich werde den Standard hier nicht wiederholen. USB verwendet differenzielle NRZ-Signalisierung und ist daher auf Leitungsebene viel komplizierter zu beschreiben. Normalerweise verwenden Sie USB, indem Sie Handler-Code zu einer in den Mikrocontroller eingebetteten USB Serial Interface Engine hinzufügen, oder Sie verwenden einen PHY-Chip (Physical Interface). Sie können USB in Software nicht wirklich bitbangen, wie Sie es mit RS232 oder SPI könnten.

Sie haben nicht nach Ethernet gefragt, das ist eine weitere serielle Schnittstelle und ein weiteres kompliziertes, aber gut dokumentiertes Protokoll.

Wichtig ist, dass "seriell" an sich nur ein Wort ist, kein vollständiger Standard.

Wenn Sie es noch nicht getan haben, sollten Sie sich die Datenblätter für Ihre Intel D1000 MCU schnappen und anfangen, das Inhaltsverzeichnis zu überfliegen. Dort finden Sie Abschnitte, die sehr detailliert beschreiben, wie die einzelnen Peripheriegeräte der MCU funktionieren.

Ich bin sicher, Sie haben bereits Erfahrung mit USB, sie sind alle "seriell", da die Daten Bit für Bit eine Spur hinunter gesendet werden (Conga-Linie, einspurige Autobahn usw.), im Gegensatz zu einer Aufteilung mehrere Fahrspuren gleichzeitig (parallele Daten).

SPI ist gut für eingebettete Dinge, da es nur ein Schieberegister ist und sonst nicht viel, dies ermöglicht wirklich schnelle Kommunikation (10 Mbit / s sind selbst in winzigen 8-Bit-Mikros mit und 50+ in vielen 32-Bit-Chips keine Seltenheit). Daten werden in ein Schieberegister geladen und bei jedem Taktzyklus Bit für Bit gesendet. Am anderen Ende wird die umgekehrte Aktion durchgeführt. Es gibt 4 Pins: MISO (Master-In Slave-Out), MOSI (Master-Out Slave-In), CLK und CS (Chip Select), manchmal ist es mehrdeutig SDI (serial in), SDO (serial out), SCK (Takt) und CE (Chipfreigabe) oder eine Variation davon. SPI ist eine interne Schnittstelle, die so ziemlich nur zwischen Chips auf derselben Leiterplatte verwendet wird. (I2C ist eine weitere interne serielle Chip-zu-Chip-Schnittstelle, die in Bezug auf Komplexität und Pinanzahl näher an einem UART mit niedriger Geschwindigkeit liegt.)

UART ist der technische Name für die Art der seriellen Schnittstelle, die Sie möglicherweise auf einem alten PC der 90er Jahre finden (serielle Maus, Tastatur und Modem), UART verwendet die Hälfte der Anzahl von Drähten als SPI (TX und RX im Gegensatz zu Dateneingang, Datenausgang, Uhr und Chipauswahl). UART reduziert die Anzahl der Pins, begrenzt aber die maximale Datenrate, da der Empfänger versuchen muss, den Datentakt aus dem Bitstrom zurückzuentwickeln. UART erfordert mehr Arbeit zum Decodieren, aber da so ziemlich jeder existierende Prozessor über einen dedizierten UART-Transceiver verfügt, ist dies kein Problem. UART ist ein guter schneller Weg, um ein eingebettetes Mikro dazu zu bringen, mit einem PC zu sprechen, da UART-zu-USB-Adapter ein Dutzend Dollar kosten (vorausgesetzt, Sie haben keine guten alten COM-Ports auf Ihrem Computer). Die einzigen Pins von wirklichem Interesse sind nur TX und RX zusammen mit einer Verbindung zur elektrischen Masse. UART ist eher eine externe Schnittstelle, dh

Jetzt ist USB mit Abstand das schnellste der drei (um eine Größenordnung), aber es ist auch viel komplexer, mit Handshaking, Geräteerkennung, automatischer Geschwindigkeitsaushandlung usw. Es ist nicht besonders einfach, dies in einem eingebetteten System zu tun es sei denn, Sie können einige vorkonfigurierte USB-Softwarebibliotheken für Ihren Chip erhalten. USB ist eine differentielle, bidirektionale Schnittstelle. Es gibt zwei Pins: D+ und D-, jeder ist das Spiegelbild des anderen, dies geschieht, da es die Signalintegrität (unter anderem) verbessert und bis zu 480 Mbit/s nach unten ermöglicht, einige ziemlich schlechte Kabel, vorausgesetzt, dass die D+ und D- Adern liegen immer direkt nebeneinander oder paarweise verdrillt.