Verschiedene SPI Devices mit einem SS/CS

Gast #4278418
Lesenswert?

Hallo,

gibt es Bausteine, die ich ansprechen kann, mit denen ich aus einer 
SS/CS Leitungen mehre machen kann?

Ich habe nur MOSI, MISO, SCK und SS zur Verfügung, möchte aber 
verschiedene Geräte ansprechen.

Dachte mir so etwas wie ein Umschalter IC. Was kann man da einsetzen?
Gast #4278433
Lesenswert?

Für i2c gibt es sowas.

Idee - ungetestet:

ein Schieberegister / eine Porterweiterung die nur bei CS=H Daten 
einliest und die Ausgänge dann mit dem CS UND verknüpfen.
Also dann zuerst ein Byte bei CS=H über MOSI und SCK ausgeben und danach 
normal mit CS=L und den verundeten Ausgängen des Registers an die 
einzelnen SPI Devices durchreichen.

Einfacher ist natürlich vom µC noch ein Pin zu opfern - oder mehr - und 
ggf
einen Dekoder zu benutzen.
#4279377
Lesenswert?

Falk B. schrieb:
> @ Michael U. (amiga)
>
> Ich habe dss jetzt nicht zuende geschaut, mit dem 595 müßte das fast
>>ohne Zusatzteile machbar sein.
>
> Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder
> ala 74HC138
Wenn er den /OE des 595 auch mit dem uC verbindet und den CS Eingängen 
Pullups spendiert sollte das gehen.
#4279387
Lesenswert?

@ Max H. (hartl192)

>Wenn er den /OE des 595 auch mit dem uC verbindet und den CS Eingängen
>Pullups spendiert sollte das gehen.

Ok, mit dem Trick geht es.

@ Bernd (Gast)

>> Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder
>> ala 74HC138.

>Hast du das schon probiert?

Nein.

> Kannst du das begründen?

Ich weiß es ;-)

Ohne den Trick von oben hast du keine Möglichkeit, das Schieberegister, 
welches als normales SPI-IC am Bus hängt, zu deaktivieren, sodass 
keinerlei anderes SPI-IC sich angesprochen fühlt.

Beispiel.

- Dein 595 hat alle Ausgänge auf HIGH -> Alles anderen SPI-ICs sind 
deaktiviert.
- Nun schiebst du ein 0x7F rein, das SPI-IC am Bit#7 wird jetzt 
aktiviert.
- Beim nächsten SPI-Zugriff fühlt es sich angesprochen, man kann keine 
Daten mehr ins Schieberegister laden, ohne dass ein anderes IC "zuhört"

Das nennt man einen Deadlock.
Gast #4279410
Lesenswert?

Falk B. schrieb:
> @ Bernd (Gast)
>
>>> Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder
>>> ala 74HC138.
>
>>Hast du das schon probiert?
>
> Nein.

Das ist schlecht :)

>> Kannst du das begründen?
> Ich weiß es ;-)

Das ist doch stark zu bezweifeln :)

µC             595                SPI-Bausteine
--------------------------------------------
SerialOut      SerialIn           SerialIn plus PullUps
Clock          SRCLK              Clock
SlaveSelect    /OE RCLK


SlaveSelect High bewirkt, dass der 595 über /OE alle Ausgänge auf 
Tri-State schaltet und damit die SPI-Bausteine nicht ausgewählt sind.

Über den SerialOut des µCs wird der 595 "geladen".

Nach dem Laden, wird der /OE-Eingang des 595 über den SlaveSelct des µCs 
auf Low gelegt. Die alten Chipselect erscheinen an den Ausgängen.

Wird SlaveSelcet jetzt wieder auf High gesetzt, dann über nimmt der 595 
die neuen Daten, da RCLK eine High-Flanke sieht.

Diese erscheinen nach einem erneuten Setzen des SlaveSelct auf Low an 
den Ausgängen des 595.

Ab jetzt kann der ausgewählte Baustein mit Daten versorgt werden.

Kann das jemand prüfen, ob es so funktioniert?
Gast #4279503
Lesenswert?

Hallo Leute,

da es mich auch interessiert hat ob das so funktioniert habe ich mal 
wieder meinen Simulator bemüht. Ist nicht für den 595 sondern für ein 
Schieberegister im CPLD, sollte aber nachvollziehbar sein.

Wichtig ist das vor einen normalen SPI Zugriff das Register gefüttert 
wird, sonst sind alle Ausgänge auf Low!
Angehängte Dateien:

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