Hallo, Ich bitte euch, mein Verständnis-Problem zu lösen: Eine Baugruppe (Modulträger) mit mehreren Modulen soll 10 (oder 12) i2c-Adressen nutzen. Die Adressen der einzelnen Module stehen fest. Auf der Baugruppe selbst gibt es keine Kollision der Adressen. Nun soll die Baugruppe für Geräte verwendet werden, deren Komponenten bereits bestimmte i2c-Adressen oder Adreßbereiche verwenden. Es werden also einige Adressen doppelt vorhanden sein. Die Geräte existieren bereits und können nicht verändert werden. Die Module der Baugruppe können nicht verändert werden. Also muß der Umgang mit den Adressen auf dem Modulträger gehandhabt werden. Meine Idee war, einen Switch zu verwenden. Ich hatte mir vorgestellt, daß der mit einer einstellbaren Adresse im Bus erscheint. Wie arbeitet nun so ein Switch? Kann ein switch die Adressen der Module vor dem Gerät "verstecken"? - Oder reicht der Switch die Adressen der Module doch auf dem i2c-Bus weiter und es kommt doch zur Kollision zwischen Modul der Baugruppe und Bauteil des Gerätes? Wie könnte man den möglichen Adreßkonflikt mit wenig Aufwand umschiffen? Kurz: i2c-Adressen auf Modulen = fest i2c- Adressen im Gerät = fest auf Modulträger muß Adreßkonflikt gelöst werden
Hallo Es gibt einen I2c Hub der die Adressen auf andere Adressen umschreibt. An sonsten könnte man sich eine eigene Bridge bauen die über SPI zum Beispiel jeweils eine Karte anspricht über I2c.
Noch habe ich von der i2c-Programmierung keine Ahnung. Deshalb benötige ich Hilfe. Es gibt also Switches mit unterschiedlicher Arbeitsweise? Es gibt also i2c-Switches, die die Adressen so managen, daß im Gerät nur die Adresse des Switches auftaucht? Kennt jemand hier eine gute Übersicht darüber, was geht und was nicht geht? Ich habe mir vorgestellt, daß im Datenstrom mitgeteilt werde, daß z.B. der Kanal n angesprochen werden soll. Darüber wird zwar die Adresse z.B. 0xAA genutzt, die taucht selbst aber auf der anderen Seite des Switches nicht als Adresse auf. Geht so etwas ohne Mikrocontroller? Wie wichtig ist es, einen Reset-Pin des Switches nutzen zu können? Mir wurde erzählt, mit einem 2. i2c-Bus am Switch würde das Problem zu lösen sein - ?
Verwende den PCA9544. Damit kannst du bis zu 4 gleiche Adressen am Bus umschalten. Wenn mehr nimm den PCA9548. Kann dir ein paar Beispiel dazu schicken.
Matthias K. schrieb: > Geht so etwas ohne Mikrocontroller? Gegenfrage: Wie geht I2C ohne Mikrocontroller?
> Gegenfrage: Wie geht I2C ohne Mikrocontroller? Ein Chinese hat das mal als Statemachine fuer einen FPGA aufgedroeselt. Die kann aber nicht Spielarten sondern nur das zur Demonstration notwendige Minimum.
Warum nicht einfach zwei I2C Busse verwenden, einen für intern, einen für extern?
Matthias K. schrieb: > Kurz: > i2c-Adressen auf Modulen = fest > i2c- Adressen im Gerät = fest > auf Modulträger muß Adreßkonflikt gelöst werden Besser kann man ein verkacktes Konzept nicht beschreiben.
Matthias K. schrieb: > Wie arbeitet nun so ein Switch? Der Switch heißt eigentlich "I2C-bus multiplexer". Paul schrieb: > Verwende den PCA9544. Schau Dir das Datenblatt des PCA9544 an. Der PCA9544 hat einen Eingang und vier Ausgänge. Bei einem Adresskonflickt muß ein extra I2C - Bus eingerichtet werden. Der 4-fach Multiplexer schaltet jetzt den ursprünglichen I2C-Bus auf einen der 4 Ausgänge. Im nächsten Turn schaltet man den Multiplexer auf einen der anderen Ausgänge, ganz nach belieben. mfg klaus
Klaus R. schrieb: > Der Switch heißt eigentlich "I2C-bus multiplexer". Blöde Bezeichnung. In Richtung vom Gerät/Master zu den Modulen/Slaves funktioniert der natürlich genauso gut und arbeitet dann als Demultiplexer.
Wolfgang schrieb: > Klaus R. schrieb: >> Der Switch heißt eigentlich "I2C-bus multiplexer". > > Blöde Bezeichnung. > > In Richtung vom Gerät/Master zu den Modulen/Slaves funktioniert der > natürlich genauso gut und arbeitet dann als Demultiplexer. Dann lies das Datenblatt. Der erste Satz der Beschreibung lautet: "The PCA9544A is a 1-of-4 bidirectional translating multiplexer, controlled via the I2C-bus." mfg Klaus
Klaus R. schrieb: > Dann lies das Datenblatt. Der erste Satz der Beschreibung lautet: > "The PCA9544A is a 1-of-4 bidirectional translating multiplexer, > controlled via the I2C-bus." Wobei ich vermute daß sich das "translating" darauf bezieht, daß die einzelnen Busse unterschiedliche Spannungspegel verwenden können, nicht darauf daß der sich irgendwie intelligent ins I2C-Protokoll einmischt. Vom Konzept her funktioniert das Ding wie ein per I2C gesteuerter Analogschalter. Er schaltet einen der 4 Ausgangsbusse mit Deinem Master-Bus zusammen. Welcher das sein soll, kontrollierst Du per I2C-Befehl auf dem Master-Bus.
Klaus R. schrieb: > Dann lies das Datenblatt. Habe ich, deshalb die Bemerkung "blöde Bezeichung" - eben genau weil das Ding für beide Datenrichtungen arbeitet. Als Multiplexer fungiert er für die von den Slaves kommenden Daten und als Demultiplexer für die vom Master kommenden.
Wie würdest du denn so ein Kombi-Produkt nennen, wenn nicht "bidirektionaler Multiplexer". Etwa "Multiplexer/Demultiplexer" oder "De-/-Multiplexer". Das sieht mir zu sperrig aus. Ich sage ja auch nicht "Wagen-Heber/-Senker" oder "Wagenheber/Wagensenker".
Stefanus F. schrieb: > Wie würdest du denn so ein Kombi-Produkt nennen, wenn nicht > "bidirektionaler Multiplexer". Etwa "Multiplexer/Demultiplexer" oder > "De-/-Multiplexer". Das sieht mir zu sperrig aus. Hersteller setzen da eher auf funktional richtige Benennung und kümmern sich nicht um sperrig. 4052 https://www.ti.com/lit/ds/symlink/sn74lv4052a.pdf https://assets.nexperia.com/documents/data-sheet/74HC_HCT4052.pdf
Wolfgang schrieb: > Hersteller setzen da eher auf funktional richtige Benennung Offensichtlich nicht alle.
Gerd E. schrieb: > Wobei ich vermute daß sich das "translating" darauf bezieht, daß die > einzelnen Busse unterschiedliche Spannungspegel verwenden können, nicht > darauf daß der sich irgendwie intelligent ins I2C-Protokoll einmischt. > Ja, man kann auch unterschiedliche Spannungspegel verwenden. > Vom Konzept her funktioniert das Ding wie ein per I2C gesteuerter > Analogschalter. Er schaltet einen der 4 Ausgangsbusse mit Deinem > Master-Bus zusammen. Welcher das sein soll, kontrollierst Du per > I2C-Befehl auf dem Master-Bus. Diese Beschreibung trifft es. Mit dem Begriff "Demultiplexer" kann ich in diesem Zusammenhang nichts anfangen. mfg Klaus
:
Bearbeitet durch User
Unglaublich. i2c Multiplexer sind bei Fachleuten täglich Brot und liefern locker die Anforderung des TO Was auch immer man möchte läßt sich kaskadieren und schwubs sind X identische i2c-Gerätschaften ansprechbar. Etwas smarte Ansteuer-Software brauchts es dann schon, aber die Guten kriegen das hin.
Klaus R. schrieb: > Diese Beschreibung trifft es. Mit dem Begriff "Demultiplexer" kann ich > in diesem Zusammenhang nichts anfangen. Ein Multiplexer fädelt Signale von mehreren Leitungen/Datenströmen auf eine gemeinsame Leitung/Datenkanal, ein Demultiplexer fädelt die Daten am anderen Ende wieder auseinander.
Oder kurz: Ein Multiplexer hat mehrere Eingänge und einen Ausgang, ein Demultiplexer hat einen Eingang und mehrere Ausgänge. Bei bidirektionalen Bausteinen sind beide Richtungen möglich und folglich sind beide Funktionen vorhanden.
Joe F. schrieb: > Matthias K. schrieb: >> Kurz: >> i2c-Adressen auf Modulen = fest >> i2c- Adressen im Gerät = fest >> auf Modulträger muß Adreßkonflikt gelöst werden > > Besser kann man ein verkacktes Konzept nicht beschreiben. Es wäre zu einfach, wenn man alle Fäden in der Hand hätte. Hier geht es aber darum, zwei Welten (unterschiedliche Hersteller) sinnvoll zusammenzubringen. Die Fachleute streiten sich. Ich glaube an eine elegante Lösung. Die Beiträge sind schonmal sehr lehrreich. Ich fürchte nur, daß mir nicht genug Zeit gelassen wird, alle Möglichkeiten intensiv zu studieren. > Geht so etwas ohne Mikrocontroller? - bezieht sich darauf, daß an der Hardware nur auf dem Modulträger Veränderungen möglich sind. Dort soll keine eigene Software nötig sein, um die i2c-Welten zusammenzubringen. Translater wie LTC4316 ~17 ~18 könnten eine Lösung sein, wenn die Beschaltung tatächlich so einfach funktioniert. In die Möglichkeiten von PCA9544 oder PCA9548 muß ich mich reinlesen.
Wolfgang schrieb: > ein Demultiplexer fädelt die Daten > am anderen Ende wieder auseinander. Und das ist beim I2C-Bus nicht erforderlich. mfg Klaus
Matthias K. schrieb: > Ich fürchte nur, daß mir nicht genug Zeit gelassen wird, alle > Möglichkeiten intensiv zu studieren. Naja, so umfangreich ist das Thema ja nun nicht, mehr als einen Tag solltest du dafür nicht brauchen :-)
Klaus R. schrieb: > Wolfgang schrieb: >> ein Demultiplexer fädelt die Daten >> am anderen Ende wieder auseinander. > > Und das ist beim I2C-Bus nicht erforderlich. Und wie werden dann, bei gleicher I2C-Adresse der Module, die Daten die an die verschiedenen Slaves gehen, auseinandersortiert? Genau mit einem Demultiplexer, der dafür sorgt, dass jedes der Module die passenden Daten zugeschoben bekommt.
Wolfgang schrieb: > Klaus R. schrieb: >> Dann lies das Datenblatt. > > Habe ich, deshalb die Bemerkung "blöde Bezeichung" - eben genau weil das > Ding für beide Datenrichtungen arbeitet. > > Als Multiplexer fungiert er für die von den Slaves kommenden Daten und > als Demultiplexer für die vom Master kommenden. Dann ist dein Problem, daß du in einer so kleinen Blase lebst, wo Multiplexer generell unidirektional sind. Spätestens seit dem Erscheinen des 4051 (das war so in den 70ern) sind bidirektionale aka Analog-Multiplexer gebräuchlich. Und daß ein Multiplexer für einen Bus mit bidirektional genutzten Leitungen auch bidirektional sein muß ... das erschließt sich auch einem Nicht-Nobelpreisträger. OK, außer dir natürlich. Für jemanden, der aus der Netzwerk-Ecke kommt, ist "Multiplexer" auch ein besserer Begriff als ausgerechnet "Switch". Denn in einem Netzwerk verteilt ein Switch Pakete automatisch anhalt ihres Inhaltes. Der genannte IC tut das nicht. Von der Funktion her ist das ein simpler Schalter, der den Master-Bus mit einem der Slave-Busse verbindet. Diese Verbindung bleibt dann so lange bestehen, bis man sie explizit ändert. Keinerlei Automatismus im Spiel.
Wolfgang schrieb: > Klaus R. schrieb: >> Wolfgang schrieb: >>> ein Demultiplexer fädelt die Daten >>> am anderen Ende wieder auseinander. >> >> Und das ist beim I2C-Bus nicht erforderlich. > > Und wie werden dann, bei gleicher I2C-Adresse der Module, die Daten die > an die verschiedenen Slaves gehen, auseinandersortiert? > > Genau mit einem Demultiplexer, der dafür sorgt, dass jedes der Module > die passenden Daten zugeschoben bekommt. Nö Das muß die schlaue Software schon selber machen welche Daten an die i2c Slaves senden will. Sie muß die Kontrolle über die dazwischen liegenden Multiplexer haben und eventuell vor dem Endslavezugriff den Multiplexer umschalten. Der Eisenbahnfreak wird Parallelen zu seinem Weichewerk erkennen. 1 Gleis kommt Richtung Bahnhof und teilt sich mit z.B. insgesamt 3 Weichen erst auf 2 Gleise und dann auf 2 * 2 = 4 Gleise auf. Der Zug rollt immer nacheinander über 2 Weichen egal auf welches Gleis er muß. Das geht, wie beim i2c-Multiplexer, in beide Richtungen. Ist doch wirklich nicht soo schwer zu verstehen. Es gibt kaum simplere i2c Bausteien als Multiplexer.
Wolfgang schrieb: > Und wie werden dann, bei gleicher I2C-Adresse der Module, die Daten die > an die verschiedenen Slaves gehen, auseinandersortiert? Es wurde eigentlich schon alles gesagt. Der I2C - Master geht auf den Eingang des Multiplexers und wählt seinen gewünschten I2C - Kanal zum I2C - Slave an. Beim PCA9544 hat man 4 I2C Kanäle die angewählt werden können. Es sind dann auch 4 I2C - Slaves mit gleicher Adresse einsetzbar. Da immer nur der angewählte Kanal aktiv ist gibt es auch keine Adresskonflicke zwischen den 4 Slaves mit gleicher Adresse. Eine praktische Sache. Temperatursensoren brauchen schon mal einige zehntel Sekunden. Also initiere ich die Sensoren der Reihe nach. Danach kann ich dann der Reihe nach die Werte abfragen. Man kann auch am Kanal einen weiteren Multiplexer anschliessen. So könnte man einen ganzen Baum aufbauen. Den Hauptkanal in mehrere Kanäle aufzuteilen bringt noch den Vorteil das die Reichweite erhöht werden kann. Anstatt das 8 I2C - Slaves mit ihren Eigen- und Leitungskapazitäten die Reichweite begrenzen, könnte man mit 2 I2C-Bussen die Kapazitäten dann deutlich vermindern und wieder ein paar Meter Länge gewinnen oder die Taktfrequenz erhöhen. mfg Klaus
Axel S. schrieb: > Dann ist dein Problem, daß du in einer so kleinen Blase lebst, wo > Multiplexer generell unidirektional sind. Spätestens seit dem Erscheinen > des 4051 (das war so in den 70ern) sind bidirektionale aka > Analog-Multiplexer gebräuchlich. Dann guck mal auf das Datenblatt so eines 4051. Da liest du: "... analog multiplexer/demultiplexer..." Auf seinen Bruder, den 4052 hatte ich oben als Beispiel schon verwiesen. Wolfgang schrieb: > ... 4052 ...
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.