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
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.
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.
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.
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
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).
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.
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
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 :-)
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 :-)
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.
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.
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.
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.
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.
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
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).
vielen Dank Karl Heinz damit ist meine Frage beantwortet
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.