Verständnisfrage I2C

  • Hallo zusammen,

    ich bin neu hier und möchte mich als erstes bedanken, da in diesem Forum einige Themen erläutert wurden, die mir als Elektronikanfänger sehr geholfen haben.

    Eine Frage habe ich aber dennoch (im Netz habe ich leider keine Antwort gefunden, korriegiert mich hier bitte ggf.), es is mehr eine Verständnisfrage. Und zwar:

    Ich möchte mit Hilfe des folgenden Tutorials Servo-Motoren ansteuern.

    http://learn.adafruit.com/adafruit-16-ch…your-pi-for-i2c

    Nachdem ich alles wie angegeben verschaltet habe und dann mit "i2cdetect" das ganze prüfen möchte, dann erscheint bei mir auch genau die unten auf der Seite als Bild gezeigt Tabelle.
    Da ich auf dieses Tutorial weiter meine eigene Schaltung aufbauen möchte, wollte ich an dieser Stelle fragen, wie diese Tabelle zustande kommt, denn das verstehe ich nicht wirklich.

    1. I2C ermöglicht es mir ja mehrere Slaves über zwei Kabel mit dem Raspberry zu verbinden. Eine Zuweisung der einzelnen Slaves erfolgt jeweils über eindeutige Adressen, die in der "i2cdetect-Tabelle" angezeigt werden. Ich frage mich jetzt aber, wieso in dem Tutorial und bei mir immer wieder die gleiche Adresse vergeben wird. Ich stelle mir das so vor, dass der Raspberry prüft, welche Slaves angeschlossen sind und dann beliebig Adressen zuweist. Aber die Adressenverteilung scheint ja nach einem bestimmten Kriterium zu verlaufen, sonst würde nicht immer die gleiche Adresse vergeben werden.
    Könnt ihr mit hier auf die Sprünge helfen?

    2. Vielleicht hilft mir hier ja schon die Antwort auf die 1. Frage weiter, aber wenn ich jetzt mehrere Slaves angeschlossen habe, wie erkenne ich dann welche Adresse zu welchem Slave gehört?

    3. Warum gibt es im Tutorial die 0x70 als Adresse? Wo kommt diese her, wofür steht sie und warum wird sie in dem Tutorial nie erwähnt?

    Ich würde mich sehr freuen, wenn ihr mir helfen könnt!

    Schöne Grüße,
    Daniel

  • Du kannst bis zu 8 I2C Slaves anschließen, da die Adressierung über 3bit (2^3 = 8) erfolgt.
    Sind also alle 3 auf GND geschaltet, wäre das 000. Als Test kannst du i2cdetect mal ausprobieren, nachdem du einen Pin an + angeschlossen hast.

    Hier sind die Adress Pins A0-A2
    mcp23017_pinout-300x243.png

  • Moin,

    also mit den Adressen verhält es sich so, dass nicht der Master Adressen vergibt sondern jeder Baustein eine eindeutige Adresse hat, manche Bausteine lassen sich versch. adressieren diese haben eine "Grundadresse" +Adresspins die beschaltet werden (wie z.b. der MCP23017, PCF8574, usw) andere haben eine feste Adresse.

    Die Post kommt bei Dir an, weil Du eine eindeutige Adresse hast, nicht die Post vergibt die Adressen sondern Du teilst dem Versender Deine Adresse mit damit er was zusendet.

    Probleme gibt es also immer dann wenn das nicht mehr zutrifft, z.b. zwei Bausteine mit gleicher Adresse oder ein undefinierter Adresszustand (wenn die Adresspins offen bleiben und nicht auf Gnd oder VCC liegen) vorliegen.

    greetz

    Programmierer und Bastler mit der Lizenz zum Löten...........

  • Genau, dann kommt es zu Unstimmigkeiten. Um mehrere Bausteine gleicher Adresse zu nutzen kann man die Schaltung z.b. so gestalten, dass man immer nur einen Baustein auf dem Bus hat oder z.b beim RPO beide Bussysteme nutzt

    Programmierer und Bastler mit der Lizenz zum Löten...........

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!