mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C-Multiplexing - Hat jemand Erfahrung?


Autor: heinvonnewerft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Für meine Diplomarbeit möchte ich drei Tuner mithilfe eines 
µ-Controllers steuern!
Die Tuner haben dafür eine I²C-Schnittstelle (alle drei haben dieselben 
Hardware-Adressen, welche sich auch nicht ändern lassen), allerdings 
besitzt mein Controller nur 2 I²C-Schnittstellen.

Wenn ich also 2 Tuner anspreche, fehlt mir die letzte Schnittstelle um 
den dritten Tuner anzusprechen!

Bislang habe ich versucht, dieses Problem mit einem SPI-zu-I²C-Chip zu 
lösen, was auch eigentlich funktioniert, allerdings ist diese Lösung 
nun, da ich richtig viel Daten schaufeln möchte, zu langsam!

Grundsätzlich hatte ich nun zwei Lösungsideen:
1) Einen I²C-Multiplexer verwenden
2) Mit zwei GPIOs eine eigene I²C-Schnittstelle am µ-Controller aufbauen

Allerdings habe ich mit beiden Sachen keine Erfahrung, also frage ich 
Euch, ob jemand vielleicht Erfahrung in diesen Dingen hat und mir eine 
der beiden möglichen Lösungen empfehlen kann, bzw. mir eher abrät.

Gruß und Dank in vorraus,

Hein vonne Werft

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
software I2C ist meist sogar besser als das hardware mässige.
nimm einfach 2 pins und schreib dir die paar zeilen selbst.
falls du einen AVR benutzt, schau mal auf der seite von atmel, da gibts 
schon fertige lösungen dazu!!

leider keine zeit, aber kannst ja mal selber schauen, ansonsten, schau i 
heut abend mal.

gruss

Autor: heinvonnewerft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort!

Werde es wohl so machen, und ein Software-I²C basteln!
Benutze nur leider keinen AVR, sondern einen ARM (LPC2138) - aber ich 
denke, dass werde ich auch ohne eine Vorlage schon irgendwie hinkriegen, 
danke für deine Mühe!

Gruß

Hein vonne Werft

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ heinvonnewerft

>Die Tuner haben dafür eine I²C-Schnittstelle (alle drei haben dieselben
>Hardware-Adressen, welche sich auch nicht ändern lassen), allerdings
>besitzt mein Controller nur 2 I²C-Schnittstellen.

>Grundsätzlich hatte ich nun zwei Lösungsideen:
>1) Einen I²C-Multiplexer verwenden

Geht gut, gibts bei NXP (ehem. Philips)

>2) Mit zwei GPIOs eine eigene I²C-Schnittstelle am µ-Controller aufbauen

Geht aus gut und ist billiger.

@ fubu1000

>software I2C ist meist sogar besser als das hardware mässige.

Was soll daran besser sein?

MfG
Falk


Autor: heinvonnewerft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, alles sehr hilfreich! Danke euch!

Allerdings bin ich jetzt auf ein Problem gestossen:

I²C braucht Open-Drain!
Ich kann allerdings beim LPC2138 keine Angaben finden, dass er 
Open-Drain GPIOs hat!
Aber ich muss es meinem Slave doch irgendwie ermöglichen, dass er die 
Clock-Leitung auf LOW hält, wenn er beschäftigt ist!
Wie bekomme ich das hin??

Gruß

Hein vonne Werft

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ heinvonnewerft

>I²C braucht Open-Drain!

So isses.

>Ich kann allerdings beim LPC2138 keine Angaben finden, dass er
>Open-Drain GPIOs hat!

Die meisten uC können die IOs als Ausgang oder Eingang schalten. Damit 
kann man Open Drain nachbilden.

Ausgang mit Wert 0 -> LOW
Eingang -> High Impedanz, der externe Pull-Up zieht auf HIGH

MFG
Falk

Autor: Nitram L. (nitram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ heinvonnewerft

Schau dich mal im Shop von CC-Tools um: http://cctools.hs-control.de

=> Platinen, Bausätze, Bausteine => I²C-Bus-Komponenten =>
 1812 => I2C-MUX7 I²C-Bus-Multiplexer

Da findest du alles was du suchst (als Denkanstoß oder schon fertig)


nitraM

Autor: heinvonnewerft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey, Super!
Danke für die schnelle Antwort (da kann ich ja heute noch anfangen, den 
Kram zu programmieren)! :)

Mein µC hat auch ein solches Register, mit dem ich die IOs auf 
Eingang/Ausgang schalten kann!
Das sollte also die Lösung sein!!

Hein vonne Werft

Autor: heinvonnewerft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke nochmal für die hilfreichen Antworten!

Es hat geklappt, ich habe mir eine eigene IIC-Schnittstelle geschrieben!
Es gab dazu einige Hilfe im Netz!

Multiplexing habe ich nicht mehr ausprobiert (warum auch, wenn die 
eigene Schnittstelle läuft? :)

Für alle die, die es vllt interessiert: Habe mal meine C-Code in der 
codesammlung gepostet:
Beitrag "3. IIC-Schnittstelle auf LPC 2138"

Gruß

Hein

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.