Warum wird bei SPI nicht die SS Leitung gleichzeitig als SCK Leitung genutzt?

Gast #4389912
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
#4389925
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.
Gast #4389929
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).
#4389931
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.
Gast #4389932
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
Moderator Persönliche Seite #4389936
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 :-)
#4389943
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.
#4389947
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.
Gast #4389948
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.
Gast #4389994
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.
Persönliche Seite #4390007
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.
Gast #4390027
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
#4390037
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).
Gast #4390615
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren