Forum: Mikrocontroller und Digitale Elektronik SPI - Port-Expander (viele)


von Felix (Gast)


Lesenswert?

Hallo, ich habe folgendes Problem:

Ich habe einen ATmega µC, der viele SPI-Port-Expander ansprechen muss 
(so zwischen 18 und 20 Stück der Sorte MCP23S08).
Jetzt braucht jeder sein eigenes Chip-Select....aber ich kann nicht 
jedem CS einen eigenen µC-Pin geben. Weil ich auch noch ein paar freie 
Pins brauche.

Jetzt dachte ich zuerst, dass ich einfach die jeweiligen CS-Pins selbst 
mit einem übergeordneten SPI-Portexpander anspreche....D.h. vom µC aus 
gehe ich in einen "übergeordneten" Portexpander mittels SPI und CS , und 
dieser Portexpander steuert wiederrum die CS-Pins der 8 
"untergeordneten" Portexpander an....

Das einzige Problem was hierbei wäre, ist, dass sobald ich einen 
Portexpander der untersten Ebene auswähle somit der übergeordnete 
Expander, der ja die untergeordneten Expander ausgewählt hat, auch aktiv 
ist. Somit hängen 2 SPI-Slaves auf demselben Bus, was ja eigentlich 
nicht sein darf....

Oder kann ich das vernachlässigen, weil ich ja eigentlich nichts vom 
übergeordneten Portexpander auslesen will (also nichts von dem über MISO 
an den µC geschickt wird), und somit eh nur Daten vom Untergeordneten 
Expander an den µC gehen (wo Taster dranhängen, deren Status ich 
auslesen will, und ein paar LED´s die ich ansteuern will).

Danke schon mal im Voraus,
LG

von D'oh! (Gast)


Lesenswert?

Kaum zu glauben aber solche SPI-Slaves kann man hintereinander in Reihe 
schalten.

von Stefan F. (Gast)


Lesenswert?

Ansonsten verwende zwei 1-of-16 decoder oder ein bzw. mehrere verkettete 
Schieberegister.

von holger (Gast)


Lesenswert?

>der Sorte MCP23S08).
>Jetzt braucht jeder sein eigenes Chip-Select.

Nein. Mit den Adressleitungen kann man 4 Stück über ein ChipSelect
ansprechen.

von Peter D. (peda)


Lesenswert?

D'oh! schrieb:
> Kaum zu glauben aber solche SPI-Slaves kann man hintereinander in Reihe
> schalten.

Schieberegister (74HC595, 74HC165) ja, aber solche komplexen SPI-Slaves 
eher nicht.
Es muß explizit im Datenblatt stehen, wie z.B. beim MAX7219.

Hier steht nur, daß 4 Chips am selben /CS hängen können.
Man könnte mit einem 74HC138 aus 3 IO-Pins 7 * /CS erzeugen, also bis zu 
28 * MCP23S08 ansteuern.

von Orlegel (Gast)


Lesenswert?

D'oh! schrieb:

> Kaum zu glauben aber solche SPI-Slaves kann man hintereinander in Reihe
> schalten.

Wie geht das beim MCP23S08 für 8 Stück?

von Horst (Gast)


Lesenswert?

Orlegel schrieb:
> Wie geht das beim MCP23S08 für 8 Stück?

Ganz einfach, über die drei Adressleitugen A2:A0. Die Adressierung 
erfolgt dann analog I2C.
Wenn Du dann noch MCP23S17 nimmst hast Du 2x8Bit pro IC und davon dann 8 
pro CS macht 128 IOs auf einem CS.

von Orlegel (Gast)


Lesenswert?

@ D'oh!

Ist es richtig, dass das was du geschrieben hast gar nicht stimmt?

@ Horst

Was du schreibst ist nicht richtig, der MCP23S08 hat nur 2 
Adressleitungen.

von Horst (Gast)


Lesenswert?

Orlegel schrieb:
> Was du schreibst ist nicht richtig, der MCP23S08 hat nur 2
> Adressleitungen.

Sorry, stimmt, ich bin im Datenblatt beim Bild vom MCP23008 
hängengeblieben.
Der MCP23S17 hat aber definitiv 3.

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.