Forum: Mikrocontroller und Digitale Elektronik SPI: 2 Slaves mit nur einem SS Pin


von Dave P. (serre69)


Lesenswert?

Hallo,

ich frag mich gerade (weil ich keinen weiteren Pin auf meine µC frei 
hab) ob ich zwei Slaves auf einen SS Pin packen kann indem ich den 
Ausgang einmal invertiert zum einen Slave und normal zum anderen Slave 
schicke. Geht um SPI.

LG

: Bearbeitet durch User
von uff basse (Gast)


Lesenswert?

Dave P. schrieb:
> ich frag mich gerade (weil ich keinen weiteren Pin auf meine µC frei
> hab)

Pfusch am Bau beginnt offensichtlich schon bei der Planung.
Bei meinen "Konstruktionen" sind meist 5-20% der Pins frei
für eventuelle Änderungen/Erweiterungen.

von Christian S. (roehrenvorheizer)


Lesenswert?

Das sollte wohl möglich sein, sofern an den Pins nichts anderes gemacht 
wird, denn einer der Slaves ist immer aktiv.

: Bearbeitet durch User
von Walter T. (nicolas)


Lesenswert?

Dave P. schrieb:
> ich frag mich gerade (weil ich keinen weiteren Pin auf meine µC frei
> hab) ob ich zwei Slaves auf einen SS Pin packen kann indem ich den
> Ausgang einmal invertiert zum einen Slave und normal zum anderen Slave
> schicke.

Die Chance, dass das unerwartete Probleme erzeugt, würde ich auf 50% 
schätzen - je nachdem wie das Timing vom Chip Select von den zwei 
Slave-Geräten erwartet wird.

Aber nachdem Du eh SPI hast, könntest Du gegen den Pin-Mangel ein 
Schieberegister mit Latch verwenden. Theoretisch kannst Du mit einem 
Schieberegister mit Latch und Enable beliebig viele weite SPI-Slaves mit 
CS versorgen.

von Dirk F (Gast)


Lesenswert?

Oder einfach das Chip select per Software machen:

Als erstes Byte eine Adresse senden, damit sich nur ein slave 
angesprochen fühlt, der dann sein SPI_Out niederohmig schaltet.

von Peter D. (peda)


Lesenswert?

Manche SPI-Slaves kann man auch kaskadieren, z.B. MAX7219.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Manche SPI-Slaves kann man auch kaskadieren
Stichwort Daisy-Chain

https://www.mikrocontroller.net/articles/SPI_Daisychain

https://www.maximintegrated.com/en/design/technical-documents/app-notes/3/3947.html

Dave P. schrieb:
> zwei Slaves auf einen SS Pin packen kann indem ich den Ausgang einmal
> invertiert zum einen Slave und normal zum anderen Slave schicke.
Normalerweise eine schlechte Idee, denn dann ist immer irgendeiner der 
beiden selktiert. Du darfst also eigentlich nie was mit dem SCK-Pin 
machen (z.B. Mode umschalten), weil dann einer der beiden evtl. einen 
Taktimpuls bekommt, der nicht zum Telegramm gehört.

Das ist wie die heiße Kartoffel, die du zwischen deinen beiden Händen 
hin- und herjonglierst, aber eigentlich einfach nur weghaben willst... 
;-)

: Bearbeitet durch Moderator
von PittyJ (Gast)


Lesenswert?

Für sowas haben wir auch schon GPIO-Extender am I2C benutzt. Falls der 
I2C verfügbar ist, mal sowas noch anschliessen:

https://www.nxp.com/products/interfaces/ic-spi-serial-interface-devices/ic-general-purpose-i-o/remote-4-bit-general-purpose-outputs-for-1-mhz-ic-bus:PCA9570

von Veit D. (devil-elec)


Lesenswert?

Hallo,

für zu Hause und zur Not geht das schon. Einfach vorm ansprechen nochmal 
bewusst das CS Signal umschalten, damit die Flanke direkt kurz vorher 
sauber kommt, das wirkt wie ein Reset auf den Slave.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Veit D. schrieb:
> wirkt wie ein Reset auf den Slave.
Kommt wie üblich auf den Slave drauf an...

von uff basse (Gast)


Lesenswert?

Veit D. schrieb:
> für zu Hause und zur Not geht das schon. Einfach vorm ansprechen nochmal
> bewusst das CS Signal umschalten

Also praktisch "Pfusch as Pfusch can".

Bloss nicht von vorne herein richtig machen, immer schön von
hinten durch die Brust ins Auge.

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Das mit dem Inverter für SS kann funktionieren, muss nicht. Kommt auf 
die ICs an. Man könnte, da man so oder so ein Gatter braucht, aber auch 
mit DREI Pegeln, sprich, LOW, HIGH und Tristate arbeiten. Daraus kann 
man 2 digitale SS-Signale dekodieren, wobei der Fall, daß beide aktiv 
sind nicht möglich ist.

von Wolfgang (Gast)


Lesenswert?

Lothar M. schrieb:
> Kommt wie üblich auf den Slave drauf an...

Bei SPI wird genau die CS-Flanke benötigt, um Master und Slave zu 
synchronisieren. Das ist eins der Grundprinzipien von SPI.

von Maxim B. (max182)


Lesenswert?

Dave P. schrieb:
> ich frag mich gerade (weil ich keinen weiteren Pin auf meine µC frei
> hab) ob ich zwei Slaves auf einen SS Pin packen kan

Je nachdem.
MSP23S17 kannst du 8x auf einem SS haben, MSP23S08 4x.

von A. S. (Gast)


Lesenswert?

Falk B. schrieb:
> Daraus kann man 2 digitale SS-Signale dekodieren,

Aber nur, wenn die Schwelle bei tristate für beide unterschiedlich ist. 
Also 2/5 Low ist und 3/5 high. Das ist arg grenzwertig.

von Falk B. (falk)


Lesenswert?

A. S. schrieb:
> Falk B. schrieb:
>> Daraus kann man 2 digitale SS-Signale dekodieren,
>
> Aber nur, wenn die Schwelle bei tristate für beide unterschiedlich ist.

Nö. CMOS hat relativ genau VCC/2 als Schaltschwelle, das paßt schon.

> Also 2/5 Low ist und 3/5 high. Das ist arg grenzwertig.

2/5 sind 40% VCC, die meisten CMOS-ICs verlangen offiziell 30% oder 
weniger. Praktisch funktioniert es.

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.