Serielle Kommunikation & SPI-Bus: Grundlagen, Vorteile und Anwendungen
Gesendet von Javi und eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 46,03 KB
Definition der seriellen Kommunikation
In der Telekommunikation und Informatik ist die serielle Kommunikation der Prozess der Übertragung von Daten Bit für Bit, nacheinander über einen Kommunikationskanal oder Computerbus. Dies steht im Gegensatz zur parallelen Kommunikation, bei der alle Bits jedes Symbols (der kleinsten Dateneinheit, die gleichzeitig übertragen wird) zusammen gesendet werden.
Serielle Kommunikation wird in fast allen Kommunikations- und Computernetzwerken eingesetzt, da die Kosten für Kabel und die Schwierigkeiten bei der Synchronisation die parallele Kommunikation unpraktisch machen.
Grundlagen des SPI-Busses
Der Serial Peripheral Interface (SPI) Bus wurde ursprünglich von Motorola in den späten 80er Jahren für die 68000 Mikrocontroller-Serie entwickelt. Aufgrund seiner Einfachheit und Popularität haben viele andere Hersteller den Standard im Laufe der Jahre übernommen. Heute finden sich eine Vielzahl von Komponenten, die häufig im Embedded-System-Design verwendet werden. Der SPI-Bus wird primär für die Kommunikation zwischen Mikrocontrollern und Peripheriegeräten eingesetzt. Er findet sich häufig in Mobiltelefonen, PDAs und anderen mobilen Geräten, um Daten zwischen CPU, Tastatur, Bildschirm und Speicherchips zu übertragen.
Der SPI-Bus (Serial Peripheral Interface)
Der SPI-Bus ist ein Bus mit drei Leitungen, über die Informationspakete von 8 Bit übertragen werden. Jede dieser drei Leitungen überträgt Informationen zwischen verschiedenen an den Bus angeschlossenen Geräten. Jedes an den Bus angeschlossene Gerät kann gleichzeitig als Sender und Empfänger agieren, wodurch diese Art der seriellen Kommunikation vollduplex ist. Drei Leitungen übertragen die Daten (eine in jede Richtung), und die dritte Leitung ist die Taktleitung. Einige Geräte können nur senden oder nur empfangen; in der Regel kann ein Gerät zur Datenverarbeitung auch empfangen.
Ein Beispiel wäre ein EEPROM-Speicher, der sowohl Informationen senden als auch empfangen kann.
An den Bus angeschlossene Geräte werden als Master und Slaves definiert. Ein Master ist ein Gerät, das die Informationsübertragung über den Bus initiiert und Taktsignale sowie Steuersignale erzeugt.
Ein Slave ist ein Gerät, das vom Master gesteuert wird. Jeder Slave am Bus wird über eine Steuerleitung, den sogenannten Slave Select (SS) oder Chip Select (CS), gesteuert. Ein Slave wird nur aktiviert, wenn diese Leitung signalisiert wird. In der Regel ist jedem Slave eine eigene Auswahlleitung zugewiesen.
Zu einem bestimmten Zeitpunkt kann nur ein Master am Bus aktiv sein. Jedes Slave-Gerät, das nicht ausgewählt ist, muss über die Auswahlleitung (Chip Select) deaktiviert werden (in den hochohmigen Zustand versetzt werden).
Der SPI-Bus verwendet einfache Schieberegister zur Informationsübertragung.
Mit anderen Worten, er ermöglicht die Kommunikation zwischen integrierten Schaltungen in elektronischen Geräten.
Dieser Bus wird auch häufig für die Datenübertragung genutzt, da seine 4-Pin-Konfiguration (Dateneingang, Datenausgang, Takt und Chip-Selektor) ein Vollduplex-System leicht umsetzbar macht.
Auf dem Markt für Speichergeräte, insbesondere EEPROMs (elektrisch löschbare ROMs), hat der SPI-Bus in letzter Zeit einen Wachstumsschub erfahren, da er Vorteile in Bezug auf Geschwindigkeit und die Anbindung an Mikrocontroller gegenüber anderen Technologien bietet.
Die Hardware besteht aus Taktsignalen, Daten-In, Daten-Out und einer Auswahlleitung für jeden zu steuernden integrierten Schaltkreis. Fast alle digitalen Geräte können mit dieser Signalkombination gesteuert werden. Die Geräte unterscheiden sich in einigen vorhersehbaren Aspekten. Manche lesen die Daten auf der ansteigenden Taktflanke, andere auf der fallenden Flanke. Das Schreiben erfolgt fast immer in die entgegengesetzte Richtung zur Taktbewegung. Einige Geräte haben zwei Takte: einen zum Erfassen oder Anzeigen von Daten und einen für interne Geräteprozesse.
Vor- und Nachteile des SPI-Busses
Vorteile
- Vollduplex-Kommunikation (z.B. mit SPI-zu-USB-Adaptern [1])
- Höhere Übertragungsraten als bei I²C und SMBus
- Flexibles Protokoll, das die absolute Kontrolle über die übertragenen Bits ermöglicht
- Nicht auf die Übertragung von 8-Bit-Blöcken beschränkt
- Wahl der Bitstromgröße, seiner Bedeutung und seines Zwecks
- Sehr einfache Hardware-Implementierung
- Verbraucht weniger Energie als I²C und SMBus, da weniger und einfachere Schaltungen (einschließlich Pull-up-Widerstände) benötigt werden
- Keine Arbitrierung oder Bestätigungsverfahren erforderlich
- Slave-Geräte nutzen den vom Master gesendeten Takt und benötigen daher keinen eigenen Taktgeber
- Keine Transceiver-Implementierung erforderlich; ein angeschlossenes Gerät kann nur als Sender, nur als Empfänger oder beides gleichzeitig konfiguriert werden
- Verwendet deutlich weniger Pins pro Chip/Stecker im Vergleich zur parallelen Schnittstelle
- Höchstens ein einziges spezifisches Signal für jeden Slave (SS-Signal); andere Signale können gemeinsam genutzt werden
Nachteile
- Verbraucht mehr Pins pro Chip als I²C, selbst in der 3-Draht-Alternative
- Das Routing erfolgt über spezifische Leitungen (Band-Signalisierung), im Gegensatz zu I²C, wo jeder Chip über eine 7-Bit-Adresse ausgewählt wird, die über dieselben Busleitungen gesendet wird.
- Keine Hardware-Flusskontrolle
- Keine Bestätigung (Acknowledge-Signal). Der Master kann Informationen senden, ohne zu wissen, ob ein Slave verbunden ist oder die Daten empfangen hat.
- Mehrere Master am Bus sind nicht einfach zu implementieren.
- Funktioniert nur über kurze Distanzen, im Gegensatz zu z.B. RS-232, RS-485 oder CAN-Bus.
Weiterführende Informationen zum SPI-Bus
Das SPI-System ist, wie der Name schon sagt, ein System zur seriellen Kommunikation zwischen Peripheriegeräten. Es ist ein kostengünstiges und schnelles System für die Kurzstreckenkommunikation, beispielsweise zwischen kleinen Prozessoren und deren Peripherie.
Es ist ein sehr einfach zu implementierendes Vollduplex-System für die Kommunikation zwischen zwei Geräten. Wenn dieses System für mehr als zwei Hosts verwendet wird, verliert es an Vorteilen, während das auf dem I²C-Protokoll basierende Bussystem hier besser funktioniert. Allerdings ist SPI in der Lage, wesentlich höhere Datenraten zu bieten, die zehn Megahertz erreichen können.
Schnittstelle des SPI-Systems
Das System besteht aus einer Master-Komponente und einer oder mehreren Slave-Komponenten. Der Master wird im Allgemeinen als Mikrocontroller mit einem SPI-Taktgeber (SPI Clock) definiert, und Slaves als integrierte Schaltkreise, die den SPI-Takt vom Master empfangen. ASICs (Application-Specific Integrated Circuits) in VTI-Produkten arbeiten immer als Slave-Komponenten im Master-Slave-Betriebsmodus.
SPI ist eine synchrone 4-Draht-Serielle Schnittstelle. Die Datenkommunikation wird durch ein Low-Signal am Slave Select (SS) oder Chip Select (CSB) Eingang aktiviert. Die Daten werden über 3 Anschlüsse übertragen:
- Anschluss für den seriellen Dateneingang (MOSI).
- Anschluss für den Datenausgang (MISO).
- Anschluss für das Taktsignal (SCK).
Spezifikationen des SPI-Systems
Im SPI-System gibt es einen Master (Kommunikationssystem) und einen oder mehrere Slaves, wie in diesen Diagrammen dargestellt.
Abb. 1: Master mit einem Slave [2]
Signalname | Beschreibung |
---|---|
SCLK | Takt |
MOSI | Master Out - Slave In (Daten vom Master zum Slave) |
MISO | Master In - Slave Out (Daten vom Slave zum Master) |
SS | Slave Select (Auswahl des Slaves) |
Abb. 2: Master mit mehreren Slaves [3]
Kommunikation zwischen Peripheriegeräten
Der Master erzeugt ein Taktsignal und sendet es an die Slaves. Die Auswahlleitung (Slave Select) wird verwendet, um dem Slave mitzuteilen, dass der Master eine Kommunikation initiieren möchte.
Wie Sie sehen können, werden alle Signale außer der Slave-Auswahlleitung für alle Slaves gemeinsam genutzt. Daher muss der Master auswählen, welcher Slave aktiv an der Kommunikation teilnehmen soll.
Man kann sich vorstellen, dass bei mehr als ein oder zwei Slaves die Anzahl der Master-Ausgänge und die Anzahl der Leitungen auf der Platine zu hoch wäre, um die Verwendung dieses Protokolls zu rechtfertigen.
SPI verwendet zwei Parameter, die Taktpolarität (CPOL) und die Taktphase (CPHA), um zu bestimmen, wann die Daten nach dem Taktsignal gültig sind. Diese müssen sowohl im Master- als auch im Slave-Gerät festgelegt werden, damit die Kommunikation ordnungsgemäß funktioniert. Mit diesen Parametern wird der richtige Zeitpunkt für die Datenabtastung bestimmt.
Wir können ein Beispiel für die 4 verschiedenen Modi sehen, die möglich sind.
CPOL / CPHA | Leading Edge | Trailing Edge | SPI Modus |
---|---|---|---|
0 / 0 | Abtastung auf steigender Flanke | Setup auf fallender Flanke | Modus 0 |
0 / 1 | Setup auf steigender Flanke | Abtastung auf fallender Flanke | Modus 1 |
1 / 0 | Abtastung auf fallender Flanke | Setup auf steigender Flanke | Modus 2 |
1 / 1 | Setup auf fallender Flanke | Abtastung auf steigender Flanke | Modus 3 |
Abb. 3: SPI-Übertragungsformat mit CPHA = 0 [4]
Abb. 4: SPI-Übertragungsformat mit CPHA = 1 [5]
In diesen Beispielen (Abb. 3 und 4) können wir sehen, dass sowohl das MSB (Most Significant Bit) als auch das LSB (Least Significant Bit) zuerst übertragen werden können, je nachdem, wie die SPI-Hardware konfiguriert ist.
Die Kommunikation zwischen Master und Slave funktioniert wie folgt:
- Der Master setzt die Slave-Select-Leitung (SS) des Slaves, mit dem er interagieren möchte, auf Low. Dies signalisiert dem Slave, dass er bereit ist, die Kommunikation zu initiieren.
- Der Master generiert das Taktsignal gemäß dem SPI-Modus. Sowohl der Master als auch der Slave übertragen ein Bit pro Taktzyklus.
- Nach der Übertragung eines Bytes setzt der Master die Slave-Select-Leitung (SS) wieder auf High.