Forum: Mikrocontroller und Digitale Elektronik Warum wird bei SPI nicht die SS Leitung gleichzeitig als SCK Leitung genutzt?


von SPI-Fragensteller (Gast)


Lesenswert?

Frage steht im Betreff,

Bin SPI gerade nur theorethisch durchgegangen (arbeite eig immer mit 
I²C) und da stellte sich mir die obengenannte Frage. Hab ich irgendwas 
wichtiges übersehen? Oder könnte man nicht THEORETHISCH das ganze auf 3 
Leitungen reduzieren? Es ist nur ein Gedankengang, habe nicht vor das 
ganze Umzusetzen.

LG

von julian (Gast)


Lesenswert?

SPI-Fragensteller schrieb:
> Warum wird bei SPI nicht die SS Leitung gleichzeitig als SCK Leitung genutzt?

Weil es die SCK Leitung schon gibt? Oder vielleicht solltest du deinen 
Gedanken noch detaillierter ausführen.

von Karl (Gast)


Lesenswert?

Weil man mit SCK den Takt ausgibt und mit SS den anzusprechenden Chip 
wählt? Im Gegensatz zu I2C gibt es bei SPI keine Adressen.

von Stefan S. (sschultewolter)


Lesenswert?

Nein, dann hast du es nicht verstanden.
Es gibt einige IC-Bausteine, die keinen Latch/CS/SS haben. Hier muss du 
dich dann selbst darum kümmern, dass die SCK abgeschaltet wird.

Was heißt für dich 3 Leitungen?
VCC kannst du weglassen, wenn das IC fremdgespeisst wird mit einer 
identischen Spannung. GND sollte immer mitgenommen werden. Dazu dann 
noch mindestens MOSI und SCK. MISO wird nur benötigt, wenn man auch eine 
Antwort von dem Gerät zu erwarten hat. Latch/CS/SS wie oben beschrieben.

von Karl (Gast)


Lesenswert?

SPI-Fragensteller schrieb:
> Oder könnte man nicht THEORETHISCH das ganze auf 3
> Leitungen reduzieren?

Ja, wenn du nur einen IC hast, dann kannst du auf SS verzichten

von Achim S. (Gast)


Lesenswert?

bei I2C sendest du eine Device-Adresse mit, um eins von mehreren 
Bauteilen am Bus auszuwählen.

Bei SPI ist das nicht der Fall. Deswegen brauchst du (sofern du mehrere 
Bauteile am selben MOSI, MISO-Paar betreiben willst), irgendeine andere 
Art, um die Bauteile zu unterscheiden. Das geht über individuelle 
SS-Signale (je eins pro SPI-Slave).

von Stefan S. (sschultewolter)


Lesenswert?

Karl schrieb:
> Weil man mit SCK den Takt ausgibt und mit SS den anzusprechenden Chip
> wählt? Im Gegensatz zu I2C gibt es bei SPI keine Adressen.

Hallo Karl,
ganz richtig ist das nicht. Auch wenn es nur wenige ICs sind, die 
Adressen unterstützen. Zum Beispiel können die MCP23S17/08 
SPI-Portexpander auch über eine Adresse angesprochen werden. Aber vom 
Funktionsprinzip SPI ist es schon richtig, dass die Geräte per CS 
gewählt werden sollen.

von SPI-Fragensteller (Gast)


Lesenswert?

Ahhhhh... Sorry doof formuliert,

Warum wird bei SPI nicht die SS Leitung als SCK Leitung genutzt.

Ergo keine SCK Leitung und die Clock halt über die Select Leitung. Ich 
seh nicht so ganz den Sinn der Clock Leitung wenn man das ganze doch 
auch über die Select Leitung schicken könnte. würde man sich Halt eine 
Leitung sparen.

Sicherlich ist mein Gedanke falsch, doch ich wüsste gerne warum

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

SPI-Fragensteller schrieb:
> Ergo keine SCK Leitung und die Clock halt über die Select Leitung. Ich
> seh nicht so ganz den Sinn der Clock Leitung wenn man das ganze doch
> auch über die Select Leitung schicken könnte. würde man sich Halt eine
> Leitung sparen.
>
> Sicherlich ist mein Gedanke falsch, doch ich wüsste gerne warum

Man müsste dann für jeden Slave eine eigene Taktquelle am µC haben. Bei 
der bestehenden Lösung hat man eine an drei Pins realisierte (und 
synchronisierte!) SPI-Schnittstelle und kann dann einfache I/O-Ports für 
das SS nehmen.

Das wäre zumindest mein Erklärungsversuch :-)

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

SPI-Fragensteller schrieb:
> Sicherlich ist mein Gedanke falsch, doch ich wüsste gerne warum

Ich würde jetzt mal annehmen, weil mit der CS-Leitung der Chip "häufig" 
nicht nur ausgewählt, sondern auch aktiviert wird. Und das wäre mit 
einem Pegel deutlich einfacher, als mit einer Flanke zu erreichen.

Die Frage ist aber gut :-)

von Jan H. (jan_m_h)


Lesenswert?

SPI-Fragensteller schrieb:
> Ergo keine SCK Leitung und die Clock halt über die Select Leitung.

Ein Chip wird also abgewählt, indem ihm die Clock-Leitung geklaut wird?
Machen zum Beispiel APA102 so. Vermutlich ist es aber für die Hardware 
des Masters einfacher, die Taktung immer auf den gleichen Pin zu legen.
Außerdem hat SS/CS keine hohen Anforderungen an die Signalqualität, SCK 
schon höhere.

von Arc N. (arc)


Lesenswert?

SPI-Fragensteller schrieb:
> Ahhhhh... Sorry doof formuliert,
>
> Warum wird bei SPI nicht die SS Leitung als SCK Leitung genutzt.
>
> Ergo keine SCK Leitung und die Clock halt über die Select Leitung. Ich
> seh nicht so ganz den Sinn der Clock Leitung wenn man das ganze doch
> auch über die Select Leitung schicken könnte. würde man sich Halt eine
> Leitung sparen.
>
> Sicherlich ist mein Gedanke falsch, doch ich wüsste gerne warum

Wie sollen da mehrere Geräte ausgewählt/unterschieden werden?
I2C ist physikalische Schnittstelle + Protokoll, SPI hat dagegen kein 
definiertes Protokoll.

von dummy (Gast)


Lesenswert?

SS setzt auch die SPI Logik auf einen definierten
Zustand. Wenn man z.B. aus irgend einem Grund nur
drei Takte reingegeben hat und dann SS high, SS low
macht, werden diese drei Takte quasi verworfen und
man kann einfach wieder 8 Bits schicken. Bei SPI
Flash wird z.B. ein Schreibzyklus erst gestartet
wenn die CS Leitung wieder high wird.

von eagle user (Gast)


Lesenswert?

Man muss auch bedenken, dass SPI aus einer Zeit stammt, als RAM und 
EPROM noch getrennte Chips waren, mit je 28 oder mehr Pins. Da kam es 
auf den einen SPI-SS wirklich nicht an.

Der Motorola MC68332 hat z.B. 132 Pins, davon 1 UART, 1 SPI (allerdings 
mit 4 SS) und 17 Timer-Pins - der Rest wird hauptsächlich für Speicher 
gebraucht, z.B. 11 Chip-Select.

von Marian (phiarc) Benutzerseite


Lesenswert?

dummy schrieb:
> SS setzt auch die SPI Logik auf einen definierten
> Zustand. Wenn man z.B. aus irgend einem Grund nur
> drei Takte reingegeben hat und dann SS high, SS low
> macht, werden diese drei Takte quasi verworfen und
> man kann einfach wieder 8 Bits schicken. Bei SPI
> Flash wird z.B. ein Schreibzyklus erst gestartet
> wenn die CS Leitung wieder high wird.

Oder auch die einfachste Form von SPI-Peripherie, Schieberegister. CS 
fungiert hier als Latch - denn das Schieberegister schiebt bei jedem 
SPI-Transfer mit, übernimmt aber nur durch CS-Flanken den Registerinhalt 
ins Ausgangsregister. Das wäre ohne CS alles deutlich komplexer.

von SPI-Fragensteller (Gast)


Lesenswert?

Chris D. schrieb:
> Man müsste dann für jeden Slave eine eigene Taktquelle am µC haben. Bei
> der bestehenden Lösung hat man eine an drei Pins realisierte (und
> synchronisierte!) SPI-Schnittstelle und kann dann einfache I/O-Ports für
> das SS nehmen.
>
> Das wäre zumindest mein Erklärungsversuch :-)

Jan H. schrieb:
> Ein Chip wird also abgewählt, indem ihm die Clock-Leitung geklaut wird?
> Machen zum Beispiel APA102 so. Vermutlich ist es aber für die Hardware
> des Masters einfacher, die Taktung immer auf den gleichen Pin zu legen.
> Außerdem hat SS/CS keine hohen Anforderungen an die Signalqualität, SCK
> schon höhere.

Das Klingt für mich beides danach als wenn SPI eine Hardware Clock 
nutzt.
Ich gehe von einer SW gesteuerten Clock aus, bin ich damit auf dem 
falschen Dampfer? Bei einer SW gesteuerten Clock dürfte ihm doch Piep 
egal sein welcher I/O Pin genutzt wird oder?

Torsten R. schrieb:
> Ich würde jetzt mal annehmen, weil mit der CS-Leitung der Chip "häufig"
> nicht nur ausgewählt, sondern auch aktiviert wird. Und das wäre mit
> einem Pegel deutlich einfacher, als mit einer Flanke zu erreichen.
>
> Die Frage ist aber gut :-)

Das stimmt!


dummy schrieb:
> SS setzt auch die SPI Logik auf einen definierten
> Zustand. Wenn man z.B. aus irgend einem Grund nur
> drei Takte reingegeben hat und dann SS high, SS low
> macht, werden diese drei Takte quasi verworfen und
> man kann einfach wieder 8 Bits schicken. Bei SPI
> Flash wird z.B. ein Schreibzyklus erst gestartet
> wenn die CS Leitung wieder high wird.

Auch logisch, aber wie oft verwirft man schon seine eigenen Daten?!

eagle user schrieb:
> Man muss auch bedenken, dass SPI aus einer Zeit stammt, als RAM und
> EPROM noch getrennte Chips waren, mit je 28 oder mehr Pins. Da kam es
> auf den einen SPI-SS wirklich nicht an.
>
> Der Motorola MC68332 hat z.B. 132 Pins, davon 1 UART, 1 SPI (allerdings
> mit 4 SS) und 17 Timer-Pins - der Rest wird hauptsächlich für Speicher
> gebraucht, z.B. 11 Chip-Select.

Also ich kämpfe hin und wieder schon um eine Leitung mehr oder weniger 
:)




Also:
Wenn ich weder vorhabe meine eigenen Daten eventuell beim Senden zu 
verwerfen oder ein IC "zu wecken" gibt es keinen Grund eine SCK Leitung 
zu legen? Vorausgesetzt man schreibt sich die Datenübertragen etwas 
zurecht?

Ist wie gesagt nur eine theorethische Fragestellung die mir so durch den 
Kopf gegangen ist. Wer weiß vielleicht kann ich irgendwann kein I²C 
nutzen und hab auch nur 3 I/O's offen :-)

Vielen Dank für eure Antworten!
LG

von Karl H. (kbuchegg)


Lesenswert?

SPI-Fragensteller schrieb:

> Das Klingt für mich beides danach als wenn SPI eine Hardware Clock
> nutzt.
> Ich gehe von einer SW gesteuerten Clock aus, bin ich damit auf dem
> falschen Dampfer? Bei einer SW gesteuerten Clock dürfte ihm doch Piep
> egal sein welcher I/O Pin genutzt wird oder?

Es geht beides.
SPI ist in Hardware recht einfach zu realisieren.

> Auch logisch, aber wie oft verwirft man schon seine eigenen Daten?!

Es soll auch schon einmal vorgekommen sein, dass Kabel gebrochen sind, 
Stecker rausgefallen sind etc.

>
> Also ich kämpfe hin und wieder schon um eine Leitung mehr oder weniger
> :)

Niemand hindert dich, dir aus dem SS und dem SCLK dir dein eigenes 
Kombisignal zu basteln. 2 Signale zu kombinieren ist einfacher als aus 
einem Kombisignal die Einzelteile wieder zu extrahieren.

> Wenn ich weder vorhabe meine eigenen Daten eventuell beim Senden zu
> verwerfen oder ein IC "zu wecken" gibt es keinen Grund eine SCK Leitung
> zu legen? Vorausgesetzt man schreibt sich die Datenübertragen etwas
> zurecht?

Das kommt auf die Gegenstelle an.
Wenn die mit dem, was du ihr gibst etwas anfangen kann, dann mach es so.

Aber für die meisten Slaves ist es halt um einiges einfacher einen 
'Master-Eingang' zu haben (den Chip Select). Solange der nicht richtig 
steht, ignoriert das IC alles an seinen Pins und hält sich aus allem 
anderen raus (aktiviert also auch nicht seinen MISO Ausgang).

von SPI-Fragensteller (Gast)


Lesenswert?

vielen Dank Karl Heinz damit ist meine Frage beantwortet

von avr (Gast)


Lesenswert?

CS ist vor allem auch für die Synchronisation zwischen den ICs. Das was 
bei I2C eine Startcondition ist, entspricht bei SPI der CS-Leitung. Man 
könnte diese auch weglasssen und ein CLK/Slave verlegen, aber sobald aus 
irgendeinem Grund ein Takt nicht beim Slave ankommt, kannst du dich mit 
diesem nicht mehr synchronisieren.

von Peter D. (peda)


Lesenswert?

Es gibt SPI-ICs, wo man /CS dauerhaft auf GND legen kann.
Z.B. der MM5450 synchronisiert auf das erste 1-Bit, d.h. man kann ihn 
mit 2 Leitungen ansteuern.

http://www.farnell.com/datasheets/57504.pdf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.