Mehrere SPI Geräte nur ein CS

Gast #3036233
Lesenswert?
• ▲
▼
Hallo,

mir kam da gerade so ein Gedanke, sagt mir mal ob das Unsinn ist.

Ich habe in der Vergangenheit gerne, wenn ich SPI über große Distanzen 
übertragen musste SPI auf Differentiell gewandelt. Das ist super, denn 
dann hat man 2x4 Strippen, die gehen genau durch ein Ethernetkabel. 
Kabellängen von 50m sind hierbei kein Problem.

Offenkundig hat man in diesen 4 Leitungen (MISO, MOSI, SCK, CS) nur ein 
chip select, will sagen, ich kann nur ein SPI Gerät anschießen. Jetzt 
hatte ich gestern zufällig ein Datenblatt von einem doppelten DAC-IC in 
der Hand, der ließ sich durch die ersten SPI-bits multiplexen.

Da frage ich mich, ob man sowas nicht händisch nachbauen könnte? Hat 
jemand ne Idee? Das fänd ich ziemlich sexy.

Spontan fallen mir zwei Lösungen ein
1. Controllbits am Anfang
2. seriellisieren aller SPI Kommandos (CLK geht erst zu Gerät A, dann zu 
B, CS für alle gleich)

Man könnte zum Beispiel mit nem Counterbaustein die CS der einzelnen 
Geräte auslösen lassen.

Vielleicht habt ihr ja bessere Ideen

Schorsch
Gast #3036249
Lesenswert?
• ▲
▼
In der Firma machen wir das so:
ein /CS an SPI-Flash und über Inverterstufe an SPI-EEPROM, d.h. es ist 
immer genau ein Device selektiert. Wenn keine Daten kommen, ist es ja 
auch egal.
Mussten wir so machen, da alle µC GPIOs schon verbraucht waren.
Gast #3036279
Lesenswert?
• ▲
▼
Hallo,

klar n atmega8 im slave betrieb geht, ich hatte gehofft, dass es eine 
einfachere Lösung gäbe.

Könnte man zB nicht einfache einen hc595 (8bit output shift-register) 
dranhängen und über seine Leitungen die CS steuern. Ich denke, das würde 
gehen, nur die Programmierung wird dann häßlich - schöner wäre es statt 
8bit immer 16 rauszuschicken, oder statt 8bit 9bit.

@Arne:
CS einmal auf High und einmal auf Low gehen zu lassen finde ich nicht so 
schön. Lässt sich, denke ich, nicht universell einsetzen, nicht alle 
Geräte mögen dauerhaftes CS Low. Oder, was ist wenn ich mehrere von 
diesen SPI Slave-boards habe....


Danke
(Firma: fritzler-avr.de) #3036331
Lesenswert?
• ▲
▼
Nö, der 595 bräuchte noch ne Taktflanke am RCK um den Inhalt des 
Schieberegisters ins Ausgangslatch zu übernehmen.
Könnte man die CS TFlanke für missbrauchen.
-> machts gleiche nur anders beschalten und warscheinlich unsicherer

Der verlinkte IC ist doch SPI, steht eben nur was von I2C weils den in 2 
Varianten gibt.
Gast #3036343
Lesenswert?
• ▲
▼
> Der verlinkte IC ist doch SPI, steht eben nur was von I2C weils den in 2
Varianten gibt.

Jaja, das kapier ich schon....

vielleicht versteht ihr noch nicht, was ich gerne hätte.

Normalerweise, mit 2CS Leitung würde ich machen

CS1 Low
MOSI laufen lassen 11001100
CS1 High
CS2 Low
MOSI laufen lassen 10101010
CS2 High

Ich würde jetzt gerne mit Hilfe der oben beschriebenen Anschlußvariante 
(Ethernetkabel, nur ein CS):
CS Low
MOSI laufen lassen 1100110010101010
CS High

Auf dem Satelite Board müsse alles von Selbst gemuxt werden

alternativ könnte man auch ein select-bit mitschicken

CS Low
MOSI laufen lassen 011001100 (0 vorweg, der erste ist selektiert)
CS High

CS Low
MOSI laufen lassen 110101010 (1 vorweg, der zweite ist selektiert)
CS High


Schorsch
Gast #3036408
Lesenswert?
• ▲
▼
asd schrieb:
> Du kannst ja die CS Leitung umwidmen und einen uC dran hängen der per
> RS232-Protokoll (braucht nur eine Leitung) die Anweisung kriegt welches
> CS er aktivieren soll.

Ich denke, die Lösung die weiter oben beschrieben wurde, einen µC als 
Slave anzuschlißen ist deutlich performanter.

Ohne das jetzt im detail ausrechnen zu wollen, aber mit SPI kannst Du 
bei halber CLK rate arbeiten, ein asynchrones Protokoll schafft das 
nicht

Schorsch

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.