Forum: Mikrocontroller und Digitale Elektronik I/O Expander kaskadieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von nxp (Gast)


Lesenswert?

Hallo,

will bei einem µC die Ports erweitern, sprich ich hänge mehrere externe 
Geräte an einen µC.
Hintergrund ist eine einfache Haussteuerung zu realisieren ohne eine SPS 
kaufen zu müssen.

1.) Hauptgerät ist Master, dort befindet sich Intelligenz in Form von µC
2.) über den I2C Bus greife ich auf Slaves zu
3.) diese besitzen das Expander IC Typ PCA9536 der Fa. NXP bzw. TI 
(siehe:
http://focus.ti.com/lit/ds/symlink/pca9536.pdf )
Dadurch kann ich verschiedene Module z.B. 4x In, 4x Out oder mixed I/O 
realisieren.

Mein Problem ist nun, wie kann ich den PCA9536 kaskadieren?
Denke momentan an hardcodiert per Mäuseklavier, ideal wäre aber eine 
automatische Adressvergabe durch den Master µC.
Ich befürchte momentan, dass dies nur unter Einsatz eines Salve µC auf 
den Modulen gehen könnte.

von Schrotty (Gast)


Lesenswert?

Wenn ich es richtig verstehe, willst du die Slave-Module im Haus 
verteilen und alle mittels I²C zum Master (im Keller) führen.

Wenn das so ist, dann wirst du an der Leitungslänge scheitern..

von nxp (Gast)


Lesenswert?

Ja dass hab ich auch schon befürchtet, wie hoch sit die max. 
Leitungslänge? ein paar 10m ?

von Schrotty (Gast)


Lesenswert?

Das wurde hier schonmal diskutiert:
Beitrag "Max. Länge / Abstand I2C Netz"

Du musst also einen gewissen Aufwand treiben, um IIC für größere 
Leitungslängen zu ertüchtigen.

Ich würde vielleicht über ein Konzept auf Basis von CAN nachdenken.
Da ist die HW sehr einfach und es tut.

von spess53 (Gast)


Lesenswert?

Hi

Wenn ich das Datenblatt richtig verstanden habe, gibt es diess IC nur 
mit einer Adresse. Wie willst du dann kaskadieren?

MfG Spess

von Michael L. (michaelx)


Lesenswert?

Vergiss das mit dem Kaskadieren gleich wieder, der I2C-Bus hat mit einem 
SPI nicht viel gemein. Bei SPI können die Chips in Reihe geschaltet 
werden (Data_out -> Data_in, ...), beim I2C hängen sie immer parallel an 
Takt und Daten.

Der PCA9536 hat nur eine feste 7-Bit-Adresse, da kannst du also nur 
einen Chip an einen I2C-Bus hängen.

Gängige I/O-Chips für den I2C, wie beispielsweise der PCF8574, haben 
einen festen 4-Bit-Adressteil + einen über 3 Pins konfigurierbaren 
3-Bit-Adressteil. Außerdem gibt es passend dazu den PCF8574A, der sich 
vom PCF8574 nur durch einen anderen 4-Bit-Adressteil unterscheidet. 
Somit könntest du 16 gleiche Chips an einen Bus hängen, während du bei 
"deinem" Wunschtyp für jeden Chip einen eigenen I2C-Bus brauchst.

PS:
Ein guter Teil deines Problems löst sich schon bei kurzer Betrachtung 
des von dir verlinkten Datenblattes auf. Da wärst du mit lesen deutlich 
schneller zum Ziel gekommen. ;-)

von nxp (Gast)


Lesenswert?

Ja wer lesen kann ist klar im Vorteil :-)

Ich bin momentan gerade dabei mich mit dem MCP23008 zu beschäftigen.
Werde mir aber eure Beteiträge noch mal zu Herzen nehmen.
CAN-Bus wäre wahrscheinlich einfacher, der hat doch was zur auto. 
Adressvergabe OnBorad?

von Pete K. (pete77)


Lesenswert?

Vielleicht hilft ja der P82B96, die Leitungslänge etwas zu vergrößern.

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.