Chip-Kommunikation So funktioniert das Serial Peripheral Interface

Autor / Redakteur: Piyu Dhaker * / Michael Eckstein
Weniger GPIO: SPI-fähige Schalter verringern die Zahl der benötigten GPIO-Leitungen am Mikrocontroller.
Weniger GPIO: SPI-fähige Schalter verringern die Zahl der benötigten GPIO-Leitungen am Mikrocontroller.
(Bild: Analog Devices)

Das Serial Peripheral Interface (SPI) gehört zu den meistverwendeten Schnittstellen für die Kommunikation zwischen Mikrocontrollern und Peripherie-ICs wie etwa Sensoren, ADCs, DACs, Schieberegistern, SRAMs usw. Der vorliegende Artikel gibt zunächst eine kurze Beschreibung der SPI-Schnittstelle und stellt anschließend die SPI-fähigen Schalter- und Multiplexer-Produkte von Analog Devices vor, bevor es abschließend darum geht, wie diese Bausteine dazu beitragen können, beim Design von System-Leiterplatten mit weniger digitalen GPIO-Leitungen (General Purpose Input Output) auszukommen.

SPI ist eine synchrone, vollduplexfähige Schnittstelle auf Basis des Master-Slave-Prinzips. Die vom Master bzw. Slave kommenden Daten werden zur steigenden oder fallenden Taktflanke synchronisiert. Master und Slave können gleichzeitig Daten senden. Obwohl die SPI-Schnittstelle drei- oder vier­adrig implementiert werden kann, konzen­triert sich dieser Artikel auf die populäre vieradrige Variante.

Bildergalerie
Bildergalerie mit 13 Bildern

Bauelemente mit vieradrigem SPI-Interface verwenden die vier Signale Takt (Clock) (SPI CLK, SCLK), Chip Select (CS), Master Out, Slave In (MOSI) und Master In, Slave Out (MISO). Als Master fungiert derjenige Baustein, der das Taktsignal erzeugt. Die zwischen Master und Slave übertragenen Daten werden zu dem vom Master generierten Takt synchronisiert. SPI-Bausteine unterstützen deutlich höhere Taktfrequenzen als I²C-Schnittstellen. Die Taktfrequenz-Spezifikation der SPI-Schnittstelle kann dem Datenblatt des jeweiligen Produkts entnommen werden.

Während es bei der SPI-Schnittstelle stets nur einen Master gibt, können einer oder mehrere Slaves vorhanden sein. Die SPI-Verbindungen zwischen Master und Slave sind in Bild 1 dargestellt. Das vom Master generierte Chip-Select-Signal dient der Auswahl des gewünschten Slave-Bausteins. Das Signal hat normalerweise Aktiv-Low-Status und wird auf High-Status gezogen, um den Slave vom SPI-Bus zu trennen. Sind mehrere Slaves vorhanden, muss vom Master für jeden Slave-Baustein ein eigenes Chip-Select-Signal erzeugt werden. In diesem Artikel hat das Chip-Select-Signal immer Aktiv-Low-Charakteristik. MOSI und MISO sind die Datenleitungen. Die MOSI-Leitung dient zur Übertragung von Daten vom Master zum Slave, die MISO-Leitung dagegen für Übertragungen vom Slave zum Master.

Datenübertragung: Zum Einleiten der SPI-Kommunikation muss der Master das Taktsignal senden und durch Freigabe des CS-Signals den gewünschten Slave auswählen. Da das Chip-Select-Signal in der Regel Aktiv-Low-Charakteristik hat, muss der Master dieses Signal auf logisch 0 setzen, um den Slave auszuwählen. Da es sich bei SPI um eine Vollduplex-Schnittstelle handelt, können Master und Slave gleichzeitig, nämlich über die MOSI- bzw. MISO-Leitung, Daten senden. Bei der SPI-Kommunikation werden die Daten gleichzeitig gesendet (d. h. seriell auf den MOSI/SDO-Bus ausgegeben) und empfangen (d. h. die Daten auf dem Bus – MISO/SDI – werden abgetastet bzw. eingelesen). Dabei synchronisieren die seriellen Taktflanken das Ausgeben und Abtasten der Daten. Bei der SPI-Schnittstelle bleibt es dem Anwender überlassen, ob die steigenden oder die fallenden Taktflanken zum Synchronisieren des Abtastens und/oder Ausgebens der Daten verwendet werden sollen. Das Datenblatt des jeweiligen Bausteins gibt Auskunft darüber, wie viele Datenbits mit der SPI-Schnittstelle gesendet werden.

Taktpolarität und Taktphase: Bei der SPI-Schnittstelle kann der Master Polarität und Phase des Takts bestimmen. Das CPOL-Bit legt die Polarität des Taktsignals im Idle-Zustand fest. Dieser ist als diejenige Zeitspanne definiert, wenn CS High-Status hat um am Beginn der Übertragung auf Low-Status wechselt bzw. wenn CS Low-Status hat und am Ende der Übertragung auf High-Status wechselt. Die Phase des Takts wird vom CPHA-Bit festgelegt. Je nach dem Status dieses Bits dient die steigende oder die fallende Taktflanke zum Abtasten und/oder Ausgeben der Daten. Der Master muss die Polarität und die Phase des Takts gemäß den Anforderungen des Slaves wählen. Je nach dem Status der Bits CPOL und CPHA stehen die vier in Tabelle 1 gezeigten SPI-Modi zur Auswahl.

In den Bildern 2 bis 5 sind Beispiele für die Kommunikation in den vier SPI-Modi dargestellt, wobei jeweils die Daten auf der MOSI- und der MISO-Leitung wiedergegeben sind. Beginn und Ende der Übertragung werden durch die gestrichelte grüne Linie gekennzeichnet, während die Abtastflanke orange und die Ausgabe-Flanke in blau dargestellt sind. Zu beachten ist, dass diese Abbildungen nur illustrierenden Charakter haben. Um eine erfolgreiche SPI-Kommunikation zu gewährleisten, sollte man als Anwender stets das jeweilige Datenblatt konsultieren und sich davon überzeugen, dass die Timing-Spezifikationen des verwendeten Bauelements eingehalten werden.

Bild 3 zeigt das Timing-Diagramm für den SPI-Modus 1. In dieser Betriebsart ist die Taktpolarität 0, womit angezeigt wird, dass der Idle-Status des Taktsignals Low ist. Die Taktphase in diesem Modus ist 1, was bedeutet, dass die Daten bei der fallenden Flanke des Taktsignals abgetastet werden (markiert durch die gestrichelte orange Linie) und bei der steigenden Flanke ausgegeben werden (kenntlich gemacht durch die gestrichelte blaue Linie). In Bild 4 ist das Timing-Diagramm für den SPI-Modus 2 zu sehen. In diesem Modus ist die Taktpolarität 1, sodass der Idle-Status des Taktsignals High ist. Die Taktphase ist 1, sodass die Daten bei der fallenden Flanke des Taktsignals abgetastet werden (markiert durch die gestrichelte orange Linie) bei der steigenden Flanke ausgegeben werden (sichtbar an der gestrichelten blauen Linie). Das Timing-Diagramm für den SPI-Modus 3 ist in Bild 5 dargestellt. Auch in diesem Modus ist die Taktpolarität 1, weshalb der Idle-Status des Taktsignals High ist. Die Taktphase in diesem Modus ist dagegen 0, was dazu führt, dass die Daten bei der steigenden Flanke des Taktsignals abgetastet werden (erkennbar an der gestrichelten orangen Linie) und bei der fallenden Flanke des Taktsignals ausgegeben werden (markiert durch die gestrichelte blaue Linie).

Es ist zulässig, mehrere Slaves mit einem SPI-Master zu verbinden. Der Anschluss der Slaves kann auf reguläre Weise oder auch im sogenannten Daisy-Chain-Modus erfolgen.

Regulärer SPI-Modus: Im regulären Modus muss eine eigene Chip-Select-Leitung von jedem Slave zum Master führen. Sobald das Chip-Select-Signal vom Master aktiviert (d. h. auf Low gezogen) wird, sind der Takt und die Daten auf den MOSI/MISO-Leitungen für den ausgewählten Slave verfügbar. Wären mehrere Chip-Select-Signale aktiviert, würden die Daten auf der MISO-Leitung verfälscht, denn der Master hat dann keine Möglichkeit festzustellen, von welchem Slave die Daten stammen. Mit der Zahl der Slaves nimmt auch die Zahl der vom Master ausgehenden Chip-Select-Leitungen zu. Dies kann die Zahl der am Master benötigten Ein- und Ausgänge stark erhöhen. Die Folge: Es lässt sich nur eine begrenzte Anzahl an Slaves nutzen. Im regulären Modus lässt sich die Zahl der Slaves mit verschiedenen Methoden erhöhen – etwa, indem man einen Multiplexer zum Erzeugen eines Chip-Select-Signals verwendet.

Daisy-Chain-Methode: Im Daisy-Chain-Modus werden die Slaves so konfiguriert, dass die Chip-Select-Signale aller Slaves miteinander verbunden und gemeinsam an den Master angeschlossen werden. Die Daten werden dabei von einem Slave zum nächsten weitergeleitet. In dieser Konfiguration empfangen alle Slaves gleichzeitig dasselbe SPI-Taktsignal. Die Daten werden vom Master direkt an den ersten Slave gegeben, der sie dann an den nächsten Slave weitergibt, usw. Dadurch ist die Zahl der erforderlichen Taktzyklen proportional zur Position des jeweiligen Slave in der Kette. In einem 8-Bit-System sind zum Beispiel 24 Taktzyklen erforderlich, um die Daten am dritten Slave verfügbar zu machen. Im regulären SPI-Modus wären es nur 8 Taktzyklen. Nicht alle SPI-fähigen Komponenten unterstützen Daisy-Chaining.

Die neueste Generation SPI-fähiger Schalter bietet eine deutliche Platzersparnis, ohne dass diese mit Abstrichen an der präzisen Schalter-Performance erkauft werden muss. Das folgende Beispiel zeigt, wie SPI-fähige Schalter oder Multiplexer das Systemdesign entscheidend vereinfachen und die Zahl der benötigten GPIO-Leitungen verringern können. Der ADG1412 ist ein vierfacher Ein-/Ausschalter (Single-Pole, Single-Throw, SPST), der für die Steuereingänge der einzelnen Schalter vier GPIO-Leitungen benötigt. Die Verbindungen zwischen einem Mikrocontroller und einem ADG1412 sind in Bild 6 zu sehen. Wenn die Zahl der Schalter auf der Leiterplatte steigt, nimmt die Zahl der benötigten GPIO-Leitungen steil zu. Ein Beispiel ist das Design eines Prüfsystems, in dem eine große Zahl von Schaltern verwendet wird, um die Kanalzahl des Systems zu erhöhen. In einer Konfiguration als 4x4-Koppelfeld kommen vier ADG1412 zum Einsatz. Ein solches System würde 16 GPIOs erfordern, womit die Zahl der GPIO-Ports an einem herkömmlichen Mikrocontroller bereits weitgehend ausgeschöpft wäre. Bild 10 zeigt den Anschluss von vier ADG1412 an die 16 GPIOs des Mikrocontrollers.

Ein Seriell-Parallel-Wandler (Bild 11) kann die Zahl der GPIO-Leitungen reduzieren. Er gibt parallele Signale aus, die an die Steuereingänge der einzelnen Schalter geführt werden können. Das Konfigurieren des Baustein erfolgt über das SPI-Interface. Nachteilig ist, dass ein zusätzlicher Baustein benötigt wird. Eine Alternative sind SPI-gesteuerter Schalter. Dadurch sind weniger GPIOs und kein Seriell-Parallel-Wandler. Anstelle von 16 sind nur noch 7 GPIO-Leitungen des Mikrocon­trollers nötig, um die SPI-Signale an die vier ADGS1412 zu richten.

Eine zusätzliche Daisy-Chain-Konfiguration kann die Anzahl an GPIO-Schnittstellen weiter verringern. Hierbei werden unabhängig davon, wie viele Schalter das System enthält, nur vier GPIO-Ports am Master (Mikrocontroller) benötigt. Bild 13 dient hier zu Illustrationszwecken. Das Datenblatt des ADGS1412 empfiehlt einen Pull-up-Widerstand am SDO-Anschluss. Weitere Einzelheiten über den Daisy-Chain-Modus enthält das Datenblatt zum ADGS1412. Aus Gründen der Einfachheit wurden in dem Beispiel vier Schalter verwendet. Je größer die Zahl der Schalter in einem System wird, umso mehr kommen die Einfachheits- und Platzersparnis-Vorteile dieses Ansatzes zur Geltung. Die SPI-fähigen Schalter von ADI bei einer 4x8-Koppelfeld-Konfiguration mit acht Vierfach-SPST-Schaltern ergeben auf einer sechslagigen Leiterplatte eine Reduzierung der Leiterplattenfläche um insgesamt 20%. Analog Devides zeigt in seinem Whitepaper „Precision SPI Switch Configuration Increases Channel Density” detailliert, wie sich mit der Konfiguration präziser SPI-Schalter die Kanaldichte erhöhen lässt.

* Piyu Dhaker ... ist Applications Engineer in der North America Central Applications Group von Analog Devices.

(ID:47105279)