Gründe und Anleitung für die Verwendung der SPI zur Vereinfachung von Verbindungen zwischen mehreren Geräten

Von Art Pini

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von Digi-Key

Eingebettete Systeme arbeiten mit einem oder mehreren Prozessoren oder Mikrocontrollern, um in einem komplexeren System spezialisierte Operationen auszuführen. Diese eingebetteten Controller müssen mit anderen Systemkomponenten, Sensoren und sogar anderen Controllern kommunizieren. Komplexe serielle Schnittstellen und Protokolle sind zwar allgegenwärtig, lassen sich jedoch nur schwer programmieren und von Fehlern befreien, insbesondere wenn die Anzahl der Geräte, mit denen kommuniziert wird, gering ist.

Entwickler benötigen Mikrocontroller, Peripheriegeräte und Sensoren mit einer einfachen digitalen Schnittstelle von Gerät zu Gerät, die Daten mit beliebiger Länge mit hoher Geschwindigkeit verarbeiten kann und komplexe, protokollbezogene Programmieraufgaben überflüssig macht.

Die einfache Lösung besteht in der Auswahl von Controllern mit einer seriellen Peripherieschnittstelle (SPI), die den Controller mit einigen lokalen Peripherie-ICs oder -Sensoren verbindet. Es handelt sich um eine einfache synchrone Schnittstelle, die mit Hardware-Adressierung und einer Taktrate von bis zu 50 Megahertz (MHz) arbeitet. Die SPI nutzt kein kompliziertes Protokoll, das die Adressierung und Statusprüfung erfordert. Vielmehr handelt es sich um eine Basisschnittstelle für die schnelle Datenübertragung ohne den Programmieraufwand, wie ihn ein komplexer Schnittstellenbus erfordert.

In diesem Artikel werden die Grundlagen der SPI-Schnittstelle mit ihrer Vielzahl an Betriebsarten behandelt. Anschließend werden Mikrocontroller und andere Geräte vorgestellt, die über eine SPI-Schnittstelle verfügen, und deren Anwendung erläutert.

Was ist SPI?

SPI wurde um das Jahr 1985 von Motorola (inzwischen Teil von NXP Semiconductors) entwickelt. Es handelt sich um eine synchrone serielle Schnittstelle für die Kommunikation von Gerät zu Gerät über kurze Entfernungen. Inzwischen ist sie ein Industriestandard, der von vielen Halbleiterherstellern verwendet wird, insbesondere bei Mikroprozessoren und Mikrocontrollern.

Grund für die weite Verbreitung der SPI sind ihre vielen Vorteile. Erstens ist sie eine einfache, hardwareadressierte Schnittstelle, die vollständige Flexibilität bietet, was die Anzahl der übertragenen Bits angeht. Sie nutzt ein Master-Slave-Modell mit einem einzigen Master und kann mehrere Slave-Geräte per Vollduplex-Datenübertragung mit Taktgeschwindigkeiten von bis zu 50 MHz bedienen. Sie nutzt kein Standardprotokoll und überträgt nur Datenpakete und eignet sich daher ideal für die Übertragung langer Datenströme.

SPI nutzt maximal vier Signalleitungen (Abbildung 1). Das Master-Gerät, in der Regel ein Prozessor oder Controller, stellt die Clock- (SCK) und Chip-Select-Leitungen (CS) und steuert diese. Der Voll-Multiplexbetrieb wird durch die Datenleitungen MOSI (Master Out Slave In) und MISO (Master In Slave Out) abgewickelt. In einer einfachen Konfiguration mit einem Master und einem Slave kann die Chip-Select-Leitung entfallen und der CS-Eingang des Slaves in den aktivierten Logikzustand versetzt werden. Wenn das Slave-Gerät nur Daten senden kann (Halbduplex-Kommunikation), kann auch die MOSI-Leitung entfallen. Dadurch wird die Signalanzahl noch geringer. Die Daten werden durch das Taktsignal so getaktet, dass die Datenübertragung einem Schieberegister ähnelt, bei dem für jeden Takt ein Bit verschoben wird.

Darstellung einer einfachen SPI-Vollduplex-Verbindung

Abbildung 1: Die einfache SPI-Vollduplex-Verbindung nutzt zwei Datenleitungen (MOSI, MISO), eine Taktleitung (SCK) und eine Chip-Select-Leitung (CS). MOSI wird bei einem Slave mitunter als „Slave Data In“ (SDI) bezeichnet. MISO ist auch unter der Bezeichnung „Slave Data Out“ (SDO) geläufig. (Bildquelle: Digi-Key Electronics)

Für die Anbindung mehrerer Slave-Geräte gibt es zwei Ansätze (Abbildung 2).

Darstellung von zwei Konfigurationen für die Schnittstellenanbindung mehrerer Slave-Geräte

Abbildung 2: Zwei Konfigurationen für die Schnittstellenanbindung mehrerer Slave-Geräte. Bei der Direktverbindung wird für jeden Slave eine Chip-Select-Leitung benötigt. Die Reihenverbindung (Daisy Chain) arbeitet mit nur einer Chip-Select-Leitung und kombiniert alle Daten auf einer Leitung. (Bildquelle: Digi-Key Electronics)

Bei der Direktverbindung wird für jedes Slave-Gerät eine Chip-Select-Leitung genutzt. Die meisten Mikroprozessoren haben drei oder vier Chip-Select-Leitungen. Dies begrenzt die maximale Anzahl der Slaves auf die Anzahl der Chip-Select-Leitungen. In den meisten Fällen ist das kein Problem. Aber wenn bei einem Design mehr Geräte am Bus erforderlich sind, können einige nach dem Daisy-Chain-Prinzip konfiguriert werden. Bei einer Daisy Chain wird eine gemeinsame Chip-Select-Leitung für mehrere Slave-Geräte verwendet, und Daten werden auf einer gemeinsamen Datenleitung gestreamt. Auch hier werden die Daten unter Verwendung des Modells der SPI-Slave-Geräte als ein Schieberegister von den Slaves in einem seriellen Multiplex-Strom übertragen.

SPI-Taktmodi

Der Master steuert und erzeugt den Takt. Die beiden Taktattribute sind die Taktpolarität (CPOL) und die Taktphase (CPHA). Diese steuern die aktive Taktflanke, mit der das Slave-Gerät relativ zu den Daten getaktet wird. CPOL = 0 setzt den Takt bei logischer 0 auf Ruhezustand. Bei CPOL = 1 befindet sich der Takt bei logischer 1 im Ruhezustand. Bei CPHA = 0 werden die Daten auf der ansteigenden Flanke und bei CPHA = 1 auf der abfallenden Flanke getaktet (Abbildung 3).

Darstellung der SPI-Taktgabe-Modusauswahl

Abbildung 3: Die SPI-Taktgabe-Modusauswahl legt die aktive Taktflanke fest, auf der die Daten abgetastet werden. (Bildquelle: Digi-Key Electronics)

Die Einstellungen der CPOL- und CPHA-Leitung im Master bestimmen die Taktpolarität und die aktive Flanke zum Takten der Daten. Modus 1 wird am häufigsten verwendet. Die anderen drei Modi stehen dem Entwickler aber auch zur Verfügung.

Die drei Signalkomponenten einer SPI-Übertragung lassen sich mit einem Oszilloskop beobachten (Abbildung 4). In diesem Beispiel werden Acht-Bit-Datenpakete übertragen. Die Übertragung wird mit dem Oszilloskop HDO4104A von Teledyne LeCroy mit seiner seriellen SPI-Decodierungsoption beobachtet.

Bild des SPI-Datenflusses bei Betrachtung mit einem HDO4104A-Oszilloskop von Teledyne LeCroy

Abbildung 4: Beispiel für den SPI-Datenfluss bei Betrachtung mit einem HDO4104A-Oszilloskop von Teledyne LeCroy mit einer seriellen Decodierungsoption. Folgende Wellenformen liegen vor: Die obere Kurve ist die Datenleitung, die mittlere der Takt und die untere die Chip-Select-Leitung. Die blaue Überlagerung auf der Datenkurve zeigt den decodierten Inhalt im Hexadezimalformat. (Bildquelle: Digi-Key Electronics)

Der Modus-1-Takt besteht aus Gruppen von je acht Impulsen, bei denen der Ruhezustand auf 0 gesetzt ist (CPOL = 0) und die Daten auf der abfallenden Flanke (CPHA = 1) getaktet werden. Das in diesem Beispiel verwendete Oszilloskop hat eine serielle Decodierungsoption, die den Dateninhalt decodiert. Der Dateninhalt wird im Hexadezimalformat in der blau getönten Überlagerung der Datenkurve ausgelesen. Die Decodierung ist nur den Daten zugeordnet, die bei aktiver Chip-Select-Leitung auftreten (Stufe 0). Insgesamt gibt es siebzehn Taktbursts, von denen jedoch nur fünf aktiven Chip-Select-Zuständen entsprechen.

Die Tabelle unter den Wellenform-Anzeigerastern listet für jedes Paket neben der Zeit (relativ zum Oszilloskop-Trigger) den aktiven Dateninhalt und die gemessene Taktrate auf – in diesem Fall 100 KBit/s. Die Anzahl der Taktzyklen in jedem Burst legt die Anzahl der Datenbits fest, die aus dem Slave-Gerät getaktet werden.

Mikroprozessor-I/O-Auswahl

Der ATtiny816-MNR von Microchip Technology ist dahingehend typisch für viele Mikrocontroller, als dass er mehrere I/O-Schnittstellen unterstützt (Abbildung 5). Dieser konkrete Controller verwendet die leistungsstarke, stromsparende AVR® RISC-Architektur und kann mit bis zu 20 MHz betrieben werden. Er wird von bis zu 4 bzw. 8 KB Flash, 256 bzw. 512 Byte SRAM und 128 Byte EEPROM in einem 20-Pin-Gehäuse unterstützt.

Blockschaltbild des Mikrocontrollers ATtiny816 von Microchip Technology

Abbildung 5: Ein Blockschaltbild des Mikrocontrollers ATtiny816 von Microchip Technology zur Veranschaulichung der I/O-Ports. Dieser Controller umfasst sowohl einen SPI-Port als auch einen USART-Port. Letzterer kann als zweiter SPI konfiguriert werden. (Bildquelle: Microchip Technology)

Schnittstellenseitig umfasst der Mikrocontroller einen USART (Universal Synchronous/Asynchronous Receiver Transmitter), eine I2C-kompatible zweiadrige Schnittstelle (TWI) und die SPI. Der USART kann als zweiter SPI-Port konfiguriert werden.

Die SPI ermöglicht die Vollduplex-Kommunikation zwischen einem AVR-Gerät und Peripheriegeräten oder zwischen mehreren Mikrocontrollern. Das SPI-Peripheriegerät kann als Master oder als Slave konfiguriert werden. Das ermöglicht die Kommunikation zwischen Mikrocontrollern.

SPI-basierte Sensoren

Die vielen Mikroprozessoren und Mikrocontroller, die SPI enthalten, werden durch eine Vielzahl von Sensoren ergänzt, die digitale Daten über SPI bereitstellen. Der digitale Temperatursensor TC77-3.3MCTTR von Microchip Technology ist beispielsweise ein seriell zugriffsfähiger digitaler Temperatursensor für kostengünstige Anwendungen mit kleinem Formfaktor. Der TC77 deckt einen Temperaturbereich von –55 bis +125 °C ab. Er läuft mit einer Spannungsversorgung von 2,7 bis 5,5 Volt, zieht im Betrieb 250 Mikroampere (µA) und hat einen Abschaltmodus, in dem die Stromaufnahme bei nur noch 1 µA liegt.

In einer typischen Anwendung ist der Temperatursensor über eine Standard-SPI-Verbindung an den Prozessor angebunden. Die Temperaturdaten werden als 13-Bit-Digitalwort formatiert (siehe Abbildung 6).

Darstellung vom Temperatursensor TC77 von Microchip Technology

Abbildung 6: Der TC77 von Microchip Technology ist ein einfach einzusetzender, kleiner und kostengünstiger Temperatursensor. Er kann schnell an einen Controller oder Prozessor angeschlossen werden und überträgt die Temperaturwerte als 13-Bit-Digitalwörter. Wie in der Zeitkurve dargestellt, wird die Datenübertragung durch Setzen der CS-Leitung auf eine Logik-0 eingeleitet. (Bildquelle: Microchip Technology)

Die Abbildung zeigt eine Zeitkurve eines Lesevorgangs des Temperaturregisters des T77. Die Datenübertragung wird durch Aktivieren der CS-Leitung durch Setzen auf eine logische 0 eingeleitet. Dann überträgt der Sensor das erste Datenbit. Der Mikrocontroller liest die Daten an der ansteigenden Flanke von SCK. Die abfallende Flanke von SCK wird dann genutzt, um die restlichen Daten aus dem Sensor zu takten. Dies ist eine Modus-1-Übertragung wie im vorherigen Beispiel, jedoch mit einem längeren Datenwort.

Vergrößern der Reichweite von SPIs

Neben der Integration von SPIs in viele Mikroprozessoren und Mikrocontroller haben mehrere IC-Hersteller den Funktionsumfang des Busses erweitert. Ein gutes Beispiel dafür ist die isolierte isoSPI-Datenübertragungsschnittstelle LTC6820 von Analog Devices. Dieser IC bietet eine galvanische Trennung zwischen zwei SPI-Geräten, die über eine einzige Twisted-Pair-Verbindung unter Verwendung von differenzieller Signalgabe kommunizieren (Abbildung 7). Dieser Signalgabemodus erweitert den nutzbaren Bereich der SPI-Schnittstelle des LTC6820 auf bis zu 100 Meter (m) – allerdings mit einer geringeren Taktrate als der Nennrate von 1 MBit/s, wie sie über eine Entfernung von 10 m erzielt wird.

Abbildung der LTC6820-Isolatoren von Analog Devices

Abbildung 7: Ein Paar LTC6820-Isolatoren bietet eine galvanische Trennung zwischen zwei SPI-Geräten. Der IC unterstützt Datenübertragungen von bis zu 1 MBit/s auf Entfernungen bis 10 m und bis zu 100 m bei reduzierten Taktraten. (Bildquelle: Analog Devices)

Die galvanische Trennung wird durch Impulswandler realisiert. Diese Technik kommt häufig bei industriellen Netzwerkanwendungen und beim Lesen von Fernsensoren zum Einsatz.

Fazit

Die SPI deckt die Nachfrage nach einer einfachen, kostengünstigen Schnittstelle mit geringem Overhead bei Anwendungen, bei denen die Quelle als Datenstrom beschrieben werden kann – anstatt Daten an Adressen zu lesen und zu schreiben. Dadurch eignet sie sich ideal für die geräteübergreifende Kommunikation zwischen Mikrocontrollern und Sensoren, Digitalumsetzern, Verarbeitungsgeräten für digitale Signale sowie anderen Prozessoren.

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der Digi-Key Electronics oder offiziellen Politik der Digi-Key Electronics wider.

Über den Autor

Art Pini

Arthur (Art) Pini ist ein aktiver Autor bei Digi-Key Electronics. Seine Abschlüsse umfassen einen Bachelor of Electrical Engineering vom City College of New York und einen Master of Electrical Engineering von der City University of New York. Er verfügt über mehr als 50 Jahre Erfahrung in der Elektronikbranche und war in leitenden Positionen in den Bereichen Technik und Marketing bei Teledyne LeCroy, Summation, Wavetek und Nicolet Scientific tätig. Er hat Interesse an der Messtechnik und umfangreiche Erfahrung mit Oszilloskopen, Spektrumanalysatoren, Generatoren für beliebige Wellenformen, Digitalisierern und Leistungsmessern.

Über den Verlag

Nordamerikanische Fachredakteure von Digi-Key