Forum: Mikrocontroller und Digitale Elektronik Verschiedene SPI Devices mit einem SS/CS


von Sebbi (Gast)


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?

von hp-freund (Gast)


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.

von hp-freund (Gast)


Lesenswert?

Oder falls die Devices in der Lage dazu sind wie im Bild1:

https://de.wikipedia.org/wiki/Serial_Peripheral_Interface

von Michael U. (amiga)


Lesenswert?

Hallo,

@ hp-freund: ich brauche es zwar gerade nicht, die Idee gefäält mir 
aber, die muß ich mir merken.
Ich habe dss jetzt nicht zuende geschaut, mit dem 595 müßte das fast 
ohne Zusatzteile machbar sein.

Gruß aus Berlin
Michael

von Ralph (Gast)


Lesenswert?

Und wie willst du den Multiplexer ansprechen ?
Der IC muss ja schließlich auch wissen welcher CS Pin geschaltet werden 
soll.

Also ein paar Pins mehr als das was du jetzt hast wirst du schon 
investieren müssen.

von Falk B. (falk)


Lesenswert?

@ 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.

von Bernd (Gast)


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.

Hast du das schon probiert? Kannst du das begründen?

von Max H. (hartl192)


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.

von Michael U. (amiga)


Lesenswert?

Hallo,

in die Richtung ging meine Überlegung. Einfach reinschieben mit SPI, /OE 
mit an SS und PullUps. Ich habe aber noch nicht geschaut, ob sich mit SS 
= L der 595 festnageln läßt, entweder über das Latch oder über den 
Clock-Eingang.

Gruß aus Berlin
Michael

von Falk B. (falk)


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.

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

Falk B. schrieb:
> Ich weiß es
Dann solltest du an deinem Wissen noch ein bisschen arbeiten.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Max H. (hartl192)

>> Ich weiß es
>Dann solltest du an deinem Wissen noch ein bisschen arbeiten.

Du hast meinen Beitrag vollständig gelesen?

Beitrag "Re: Verschiedene SPI Devices mit einem SS/CS"

von Bernd (Gast)


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?

von Max H. (hartl192)


Lesenswert?

Falk B. schrieb:
> Du hast meinen Beitrag vollständig gelesen?
Ja

: Bearbeitet durch User
von hp-freund (Gast)


Angehängte Dateien:

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!

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
Noch kein Account? Hier anmelden.