SPI


Image

Übertragungsverfahren

Das SPI-Übertragungsverfahren basiert auf dem Master-Slave-Prinzip. Ein Master kommuniziert immer nur mit einem Slave gleichzeitig, es können aber eine beliebige Zahl Slave-Geräte an einen Master angeschlossen werden. In neueren Systemen wird bei der Verwendung von SPI-Slaves die keine Statusinformationen melden auf die Verbindung des Datenausgangssignal MISO mit dem Master verzichtet. Typich dafür sind DAC Bausteine wie der ltc2624, die 8 Stelligen LED Display Treiber MAX7219/MAX7221 oder die OLED Displays. Werden mehrere solche Bausteine in einem System eingesetzt, dann wäre es gut alle Bausteine gleichzeitig intialisieren zu können. Der SpartanMC Master bietet dazu die Möglichkeit mehrere Slave Selekt Signale (SS) gleichzeitig zu aktivieren. Die Datenausgabe kann dann aber trotzdem für jeden Baustein einzeln erfolgen.
Ein Gerät benötigt grundsätzlich vier Anschlüsse: Takt, Slave-Select-Leitung, Daten-Ein- und Ausgang. Beim Master sind Takt und Slave-Select Ausgänge, beim Slave hingegen Eingänge. Will nun der Master mit einem Slave Daten austauschen, so legt er dessen Slave-Select-Leitung auf Low, woraufhin die Daten mit dem vorgegebenen Takt aus dem Schieberegister des Master in das Schieberegister des Slave geladen werden. Gleichzeitig wird auf der zweiten Datenleitung dieselbe Prozedur in entgegengesetzter Richtung ausgeführt. Die Datenleitungen werden nach ihrer Funktion als MISO(Master In Slave Out) oder MOSI(Master Out Slave In) bezeichnet, die Taktleitung wird meist mit SCLK bezeichnet und die Slave-Select-Leitung mit SS oder CS(für Chip select). Bei einem SPI-Datentransfer ist es wichtig, die korrekte Phasenlage der Daten zum Takt einzustellen. Dafür werden die Parameter CPOL und CPHA benutzt, wobei CPOL für die Polarität des Taktsignals steht und CPHA für die Phasenlage zum Datensignal. Es sollte darauf geachtet werden, dass die Einstellungen passend zu denen der Gegenstelle gewählt werden.

CPAH = 0 -- Datenübernahme an der 1. Flanke von SCLK und Bitwechel nach der 2. Flanke von SCLK
CPAH = 1 -- Datenübernahme an der 2. Flanke von SCLK und Bitwechel nach der 1. Flanke von SCLK
CPOL = 0 -- SCLK ist im Ruhezustand 0
CPOL = 1 -- SCLK ist im Ruhezustand 1

Polarität CPOL bei CPHA = 0

Image
  Datenübernahme an der 1. Flanke von SCLK

Polarität CPOL bei CPHA = 1

Image
  Datenübernahme an der 2. Flanke von SCLK

Bilder zum SPI

1. CPOL=0 CPHA=0  /  2. CPOL=0 CPHA=1  /  3. CPOL=1 CPHA=1  /  4. CPOL=1 CPHA=0
Image Image Image Image
Gelb = MISO  /  Grün = MOSI  /  Violet = SCLK  /  Blau = SS
Protokoll zum Test von Master und Slave prot_all_tests_1041khz.pdf

SpartanMC SPI-Master(external link)

SpartanMC SPI-Slave(external link)

WEB-Seiten mit Informationen zur Funktion des SPI

http://de.wikipedia.org/wiki/Serial_Peripheral_Interface(external link)
http://www.mct.de/faq/spi.html(external link)



SpartanMC