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
Kaum zu glauben aber solche SPI-Slaves kann man hintereinander in Reihe schalten.
Ansonsten verwende zwei 1-of-16 decoder oder ein bzw. mehrere verkettete Schieberegister.
>der Sorte MCP23S08). >Jetzt braucht jeder sein eigenes Chip-Select. Nein. Mit den Adressleitungen kann man 4 Stück über ein ChipSelect ansprechen.
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.
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?
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.
@ 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.