- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: I2C - Wie mehrere Geräte an einen Anschluss?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.01.2006
    Ort
    Braunschweig
    Alter
    34
    Beiträge
    76

    I2C - Wie mehrere Geräte an einen Anschluss?

    Anzeige

    E-Bike
    Hallo!

    Kann sein, dass ich mich gerade total blöd anstelle und den Wald vor lauter Bäumen nicht sehe, aber wie kann ich an einem I2C Anschluss mehrere Geräte anschließen?

    Ich habe nun schon mehrere Male gehört, dass dies möglich sei, und auch die I2C Geräte-Adressen lassen einen darauf schließen, aber ich habe keine Ahnung, wie man sowas machen kann.

    Kann man die Geräte einfach in Reihe schalten oder wie sieht das ganze aus?

    Mit freundlichen Grüßen,
    Shadow²
    Mit freundlichen Grüßen,
    Shadow²

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2006
    Beiträge
    559
    wie genau adressiert wird kann ich dir nicht sagen, aber im grunde funktioniert das so:

    es gibt einen Master z.B. ein PC und mehrere Slaves die einfach Module darstellen,
    von denen Daten abgefragt werden können

    beispielweise gibt es eine RD und eine TD leitung zum senden und empfangen, wie bei RS232
    (weis nicht wie das bei I2C ist)

    wenn nun der Master von einem bestimmten Modul Daten will, bzw. ihm etwas sagen will,
    sendet er erst die Geräte Adresse und dann die Daten,
    dadurch wissen die anderen Geräte dass das nichts mit ihnen zu tun hat
    und nur das durch die Adresse ausgewählte Modul darf antworten

    dann wartet der PC wieder bis das Modul fertig mit senden ist,
    bzw. wartet den Timeout ab und kann dann wieder mit einem anderen Modul reden


    das ganze hat den Vorteil das nur wenige Leitungen benötigt werden
    (in meinem Beispiel ja nur 2)

    hat aber auch den Nachteil dass eben nur ein Gerät gleichzeitig angesprochen werden kann


    hiersteht das Ganze nochmal genauer erklärt:
    http://de.wikipedia.org/wiki/I2C
    (nicht böse gemeint, aber mit ein paar Sekunden suchen hättest du das selber rausfinden können )

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    Bis auf den Link leider ziemlich falsch
    I2C hat keine getrennten Sende- und Empfangsleitungen, sondern eine Takt- und eine Datenleitung. Über zwei definierte Reihenfolgen der Flankenwechsel an den beiden Leitungen, die während der Datenübertragung nicht auftreten dürfen, wird Start- bzw Stoppbedingung realisiert, dazwischen werden die Informationen mit steigender Flanke der Clock-Leitung (SCL) von der Datenleitung (SDA) gelesen. Jede Übertragung beginnt mit der Adresse und einem Bit, das anzeigt, ob gelesen oder geschrieben werden soll. Danach kommen dann Daten - Steuerbefehle, Nutzdaten, wobei die Richtung der Daten durch das zuvor gesendete Schreib-/Lesebit festgelegt wird. In der Regel wird jedes Byte vom jeweiligen Empfänger mit einem Bestätigungsbit (Acknowledge) quittiert, Ausnahmen bestätigen diese Regel, aber das darfst Du selbst nachlesen. Sämtliche Bausteine hängen parallel am Bus und hören mit, aber nur der, dessen Adresse gesendet wurde, "wacht" auf und hört weiter zu bzw antwortet auch mal.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    60
    Beiträge
    1.305
    Blog-Einträge
    1
    I2C Bausteine werden entweder hardwaremässig mit z.B. Jumpern
    oder DIP-Switches (Mäuseklavier) adressiert
    ein Baustein wäre z.B. der PCF8574 (einfachstes Beispiel),
    oder
    können auch softwareseitig adressiert werden,
    hierzu muss zunächst der Baustein alleine
    oder mittels eines spez. Jumpers für die Konfiguration
    (Adressierung) vorbereitet werden,
    als Beispiel hierfür kann ich den TMC222 nennen.


    Die einzelnen Baugruppen können dann entweder auf einer Platine
    parallel auf den I2C-Bus geschschaltet werden
    oder es kann der I2C Anschluss einfach weiteregführt werden
    (wie eine Perlenkette), wie in meinem Foto der
    Schrittmotorsteuerung mit TMC222:

    Im Bild die bunte Flachbandleitung:

    Welche Adressen möglich sind,
    ist immer aus den Datenblättern nachzulesen.


    Ganz Wichtig ist dass alle I2C Bausteine eine eindeutige Adresse haben, sonst kann der I2C nicht funktionieren!
    Eindeutig ist wörtlich zu nehmen,
    jedes Gerät (Slave) MUSS eine eigene Adresse haben.

    ---
    @shaun:
    Deine Erklärung ist natürlich wichtig für das Protokoll auf den Leitungen,
    und gehört auch zur Kategorie Grundlagen,

    jedoch nehemen diverse I2C Routinen/Funktionen
    z.B. in Bascom (I2Csend/I2Creceive) einem diese Arbeit ab.

    Dann braucht man sich damit nicht unbedingt auseinandersetzten.
    Tritt dann ein Problem auf dem Bus auf, kann der Fortgeschrittenen mit
    Hilfe diverser Meßgeräte die Signalfolge und deren korrekheit
    herausmessen.

    Für Einsteiger sage ich nur, nehmt es als gegeben hin,
    die Programmiertools nehmen Euch die Arbeit ab.

    Seht zu dass Ihr zunächst mit Eurem Programmen zurecht kommt.

    Ganz nach dem Motto: "Wir wissen nicht wie, aber es funktioniert"
    ---
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.01.2006
    Ort
    Braunschweig
    Alter
    34
    Beiträge
    76
    Zitat Zitat von scales
    (nicht böse gemeint, aber mit ein paar Sekunden suchen hättest du das selber rausfinden können )
    Hi!

    Erstmal danke! Aber die Sachen hatte ich mir schon vorher herausgesucht. Es ging mir nur um die hardwaremäßige Aneinanderschließung mehrerer Geräte, die ich mir nicht ganz vorstellen konnte

    An darwin.nuernberg: Ah, genau das meinte ich. Ok, dann kann man die I2C Anschlüsse weiterführen. Ich denke das ist dann quasi sowas wie beim Computer, wo es auch diese Master und Slave Datenkabel gibt für Festplatten, richtig?
    Mit freundlichen Grüßen,
    Shadow²

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2006
    Beiträge
    559
    Bis auf den Link leider ziemlich falsch
    ich sag ja, wie das bei I2C selber funktioniert weis ich nicht,
    ich habs am beispiel von RS232 erklärt wie das mit dem adressieren funktionieren könnte


    Erstmal danke! Aber die Sachen hatte ich mir schon vorher herausgesucht. Es ging mir nur um die hardwaremäßige Aneinanderschließung mehrerer Geräte, die ich mir nicht ganz vorstellen konnte
    achso, dann nehm ich das zurück

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    60
    Beiträge
    1.305
    Blog-Einträge
    1
    Zitat Zitat von Shadow²
    Ah, genau das meinte ich. Ok, dann kann man die I2C Anschlüsse weiterführen. Ich denke das ist dann quasi sowas wie beim Computer, wo es auch diese Master und Slave Datenkabel gibt für Festplatten, richtig?
    Naja fast,
    Bei IDE (ATA) Festplatten kann man halt "nur" zwei Geräte an ein BUS-Kabel anschließen,
    SCSI (I/II) kann je nach Art 7-15 Geräte pro BUS- Kabel
    Naürlich haben diese BUS-Systeme auch mehr Daten und Steuerleitungen, sind aber auch eben BUS-Systeme ähnlich wie der I2C (TWI) nur mit anderen Funktionen und anderen Protokollen.
    bei SATA geht wieder nur eine Platte pro Kabel

    Aber darüber braucht man sich ja keinen Kopf machen, Das was Du wissen willst ist ja jetzt erklärt oder?

    Wichtig ist auch noch zu wissen, dass das Kabel für I2C (TWI) nicht zu lange sein darf also keine 2m Leitung anschließen, sonst könntest Du überagungsprobleme kriegen. Beachte dies bitte. Wie lange genau der I2C - Bus jetzt genau sein darf und welche Möglichkeiten es gibt die Leitungslänge durch Repeater/Booster dennoch zu verlängern kann ich jetzt nicht sagen.

    Alles klar?
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2006
    Ort
    Dresden
    Alter
    69
    Beiträge
    370
    Hallo,
    Im Bezug auf IIC-Buspuffer/Extender: bei http://cctools.hs-control.de/home.php gibts die ( und andere IIC) im Bereich Bauteile, auch ein link zum Datenblatt ist vorhanden.
    MfG Lutz
    Wir haben so viel mit so wenig solange versucht, das wir jetzt qualifiziert sind, fast alles mit fast nichts zu bewerkstelligen.

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.308
    Zitat Zitat von darwin.nuernberg
    Wichtig ist auch noch zu wissen, dass das Kabel für I2C (TWI) nicht zu lange sein darf also keine 2m Leitung anschließen, sonst könntest Du überagungsprobleme kriegen. Beachte dies bitte. Wie lange genau der I2C - Bus jetzt genau sein darf und welche Möglichkeiten es gibt die Leitungslänge durch Repeater/Booster dennoch zu verlängern kann ich jetzt nicht sagen.
    ich arbeite seit jahren mit leitungslängen von 1.5-2 m - bisher sind ca. 90 schaltungen im einsatz und noch nie hat es ein problem deswegen gegeben. ich verwende als pull-ups 1 kohm - als kabel 4x0.14mm² geschirmt. darauf liegt +5V, GND, SCL & SDA - schirm auf masse.

    .... und es gibt repeater mit denen leitungslängen im km-bereich möglich sind
    Ich programmiere mit AVRCo

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress