• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Praxisbericht SPI - Schnittstelle beim Arduino & Co

BAXL

Admin
Mitarbeiter
Zuletzt bearbeitet:

yoshi

Betreiber
Mitarbeiter
Witzig beim SPI finde ich die Möglichkeit den aktuellen Slave durch ein extra Signal auszuwählen. Wer kennt noch die ISA-Schnittstelle und die IRQs? Wenn man diese Möglichkeit der SPI-Schnittstelle verstanden hat, dann versteht man auch, warum man, je nach Hardware, nur bestimmte IRQs zur Auswahl hatte.
 

BAXL

Admin
Mitarbeiter
Bei der SPI-Schnittstelle werden in der Regel vier Signalleitungen benötigt, zuerst eine Leitung die sich MOSI nennt, das ist die Abkürzung für "Master Out Slave In" und bedeutet, dass über diese Leitung das Mastergerät Daten an den Empfänger (Slave) sendet.

Die zweite Dateleitung heißt MISO "Master In Slave Out", darüber sendet der Slave Daten an den Master zurück.

Zur Synchronisierung wird ein Taktsignal erzeugt, das am Signalpin SCK erzeugt wird.

Damit bei mehreren parallel an MISO und MOSI angeschlossenen Empfängern (Slaves), der jeweilige Slave weiß, dass er gemeint ist, gibt es noch die CS-Leitung. CS steht für Chip select, also "ausgewählter Slave". Der Master kann damit über mehrere einzelene Digitalausgänge , den gewünscheten Slave aktivieren.

Bekommt ein Slave auf der CS-Leitung ein Signal, weiß er, dass die nun kommenden Daten für ihn gedacht sind. Die übrigen Slaves, deren CS nicht angesteuert werden, ignorieren dann die Daten, die über ihren MOSI-Eingang hereinkommen.

Für MOSI wird auch manchmal die Pinbezeichnung SDI "Slave Data In" verwendet und für MISO SDO für " Slave Data Out". Zusammengefasst:

MOSI - SDI - Daten, die vom Master zum Slave gesendet werden
MISO - SDO - Daten, die vom Slave zum Master gesendet werden
SCK (Serial Clock) - CLK (Clock) - Clock, bzw. Takteleitung
CS (Chip Select) - SS (Slave Select) - , also Anwahl des gewünschten Slaves, der Daten als die seinigen annimmt




Es gibt auch noch eine weitere Möglichkeit mehrere Slave-Geräte anzuschließen, die wird gewählt, wenn ein Master nur begrenzte Digitalleitungen besitzt und nicht jeden Slave separat mit CS anwählen kann. Die erwähne ich nur kurz hier und vertiefe das nicht weiter.
Bei diese speziellen Verschaltung, die sich "Daisy Chained Connection" nennt, schiebt man immer für alle Slaves gleichzeitig die Daten seriell über den MOSI-Ausgang raus. Die Slaves reichen die Daten jeweils über ihren MISO-Port zum MOSI-Port des nächsten Slaves weiter. Der Taktausgang SCK und der Chip Select CS-Ausgang des Masters ist dann jeweils parallel mit den SCK und CS Anschlüssen der Slaves verbunden.



Je nach vewendetem Gerät ist es möglich, dass noch weitere Signalleitungen benötigt werden. Z.B. bei einem Display könnte noch eine Resetleitung vorhanden sein, die RST oder RES heißen kann, sowie eine leitung, mit der man die Hintergrundbeleuchtung aktiviert, die LED oder BLC heißen kann. Eine DC oder RS Leitung ist für Daten, bzw. Befehlsauswahl.
 
Zuletzt bearbeitet:

BAXL

Admin
Mitarbeiter
In zwei anderen Themen arbeite ich mit dem SPI-Bus : WEMOS D1 mini mit 240x320 2,4" TFT Display RGB und WEMOS D1 mini mit NRF24l01 , da werden die kleinen Problemchen mit dem Anschluß offenbar. Die verschiedenen Prozessorplattformen (Arduino, ESP z.B. WEMOD D1 mini usw.) nutzen teilweise bereits vorgesehene Ports für den Anschluß der für den SPI-Bus typischen Signalleitungen. IdR. sind das MISO, MOSI, SCK und CS. Wobei CS eigentlich selbst gewählt werden kann.
Zur Info mal die mir bekannten Ports:

SignalArduino (UNO, NANO)ESP
MISOD12D6
MOSID11D7
SCKD13D5
CSvariabelvariabel


Schließt man mehrere Sensoren, Displays usw. an einem Prozessormodul (Arduino, ESP) an, muß man sehen, welche Digitalport dann noch für die CS-Leitungen frei sind. Jedes Device benötigt dann eine eigene Portleitung. Das muß dann im Programm natürlich bekanntgemacht werden. MOSI, MISO und SCK können parallel geschaltet werden.

Je nach angeschlossenem Gerät kann es aber vorkommen, dass der MISO-Port nicht benötigt wird und deshalb nicht angeschlossen werden muß. Das ist z.B. bei einem einfachen Display (ohne Touchfunktion) der Fall. Das Display sendet dann keine Daten zurück.
 
Zuletzt bearbeitet:
Top Bottom