i2c multiplexing

Gast #1587248
Lesenswert?
• ▲
▼
Hallo,

ich habe hier ein Problem, vielleicht kann mir jemand dabei helfen.
Ich habe 4 i2c Sensoren, die ich nacheinander auslesen will. Alle 4 
besitzen die gleiche HW Adresse. Die Leitungslänge beträgt ca 2m.

Die direkte Kommunikation (mit einem Sensor) funktioniert. Um nun alle 4 
anzusprechen verwende ich einen Multiplexer (4052BE). Allerdings bekomme 
ich keine Daten mehr von den Sensoren, sobald der Mux dazwischen hängt.

In den Sensoren sind 10k Pullups verbaut. Die SDA und SCL Leitungen habe 
ich schon versucht mit jeweils 10k vor dem µC hoch zu ziehen. Mit dem 
gleichen Erfolg. Ich habe leider kein Oszi, um mir die Leitung 
anzugucken.

Hat vielleicht jemand noch eine Idee?

Danke!
Gast #1587288
Lesenswert?
• ▲
▼
> Hat vielleicht jemand noch eine Idee?

Also theorethisch sollte das was du da machst funktionieren. Es ist nur 
wichtig das es nie zu undefinierten Pegeln an den nicht aktivierten 
Devices kommt!
Jetzt sagst du aber da in deinen Devices 10k Pullupseingebaut sind. Bist 
du dir da sicher? Das ist naemlich eigentlich Murks da man dann ja nicht 
viele Devices an einem Bus verwenden kann. Ein Hersteller der etwas 
standardconformes baut der wird immer OpenDrain Ausgaenge verwenden.

Wenn du die interne I2C Hardware deines Controllers verwendest dann 
musst du natuerlich sehr sicher sein erst umzuschalten wenn die 
Uebertragrung beendet ist. Es koennte sein das dich die Statemaschine 
beluegt, also bereits sagt sie sei fertig wenn sie noch das letzte Byte 
oder Bit uebertraegt. Mach da mal Testweise eine Wartezeit hin?

> Ich habe leider kein Oszi, um mir die Leitung
> anzugucken.

Und? Das ist doch I2C und kein 1Wire Abfall. Mach die Uebertragung 
einfach so langsam das du es mit deinem Multimeter oder zwei 
Leuchtdioden verfolgenkannst. Oder lass es mit 1kHz laufen und schau es 
dir mit deiner Soundkarte an.


Ansonsten koenntest du I2c auch noch in Software machen. In deinem Falle 
waere sogar eine Routine moeglich die alle drei ICs ohne Aufwand 
gleichzeitig einliesst.

Olaf
Gast #1587304
Lesenswert?
• ▲
▼
Hallo Olaf,

ja bzgl der 10k bin ich mir sicher. Es steht im Datenblatt.
Man kann eigentlich den Fehler beim Umschalten ausschliessen - denn mit 
dem MUX kann ich nicht mal einen Sensor ansprechen.

Viele Grüße
Alex

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.