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
Je nach Geschwindigkeit kannste doch nen Prozessor zwischenschalten. Der bekommt über die Diffleitung seine Befehle und befragt dann die SPI Geräte hinter ihm.
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.
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
So was http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf vielleicht? Ist ein SPI IO-Expander...
Den Expander kombiniert mit der low/high Methode und schon hat mans: CS low spricht den Expander an, hinter den Expander kommt nen NAND und schon is bei CS high und gesetztem Ausgang der Slave aktiviert.
Ich ralls nicht, macht der hc595 nicht genau das gleiche? Nur in billiger Gibts nicht vielleicht einen SPI-Multiplexter-IC? Schorsch
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.
Außerdem ist es ein I/O Expander. Ein 595 kann ja nur Ausgänge bereit stellen.
> 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
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.
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
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.