I2C - Adressierung

Im i2c-Protokoll würde ich gerne wissen, wie die Slave- und Master-Adresse zugewiesen werden. Die meisten Internetdokumente sprechen darüber, wie das Protokoll funktioniert, aber ich konnte kein Dokument über i2c-Slave- und Master-Adressierung finden.

Zum Beispiel möchte ich zwischen meinem tm4c129 LP und einem SparkFun-Lichtsensor- Datenblatt kommunizieren . Im Tivaware- Datenblatt (TI-Treiber) legen sie die Master-Adresse als 0x3B fest.

Kann ich eine andere legale Adresse für dieses Master-Gerät festlegen?

Gleiches gilt für den Lichtsensor, das Datenblatt verweist darauf, dass die Geräteadresse entweder 0x39, 0x29 oder 0x49 hat? Kann ich die Slave-Adresse ändern oder ist sie im IC der Platine eingebaut?

Antworten (1)

Die I 2 C-Adresse wird im Chip selbst eingestellt. Es können Pins verfügbar sein, um eine alternative Adresse innerhalb eines Bereichs auszuwählen, aber es gibt keine Möglichkeit, ihm einen völlig anderen Bereich zu geben, außer ihn von Grund auf neu zu implementieren.

Und ich denke, Sie müssen Phillips bezahlen, um eine Adresse zu haben? Wenn Sie dasselbe Gerät mehrmals haben und alle mit demselben i2c-Bus verbinden möchten, benötigen Sie eine Art Demux, um mit dem richtigen zu kommunizieren?
Sie benötigen eine Lizenz, um Hardware zu erstellen, die I2C implementiert, aber Sie können jede beliebige Adresse nehmen (obwohl die Verwendung einer gemeinsamen Adresse Ihnen bei Systemdesignern keinen Gefallen einbringen wird). Ein I2C-Hub kann verwendet werden, um einen einzelnen I2C-Bus in mehrere virtuelle Busse aufzuteilen, von denen jeder seinen eigenen isolierten Adressraum hat.
Eine Anmerkung, als I2C-Master in einem Single-Master-System ist die Master-Adresse ziemlich irrelevant.
@IgnacioVazquez-Abrams Möglicherweise benötigen Sie eine Lizenz, um den Begriff "I2C" zu verwenden, aber viele Unternehmen haben den Namen "Zwei-Draht-Protokoll" oder "Zwei-Draht-Schnittstelle" übernommen und I2C ohne Belastung von NXP implementiert.
@MathieuL du musst niemanden für eine Adresse bezahlen; es gibt kein Normungsgremium, das eine Datenbank mit Adressen führt. Sie wählen eine Adresse, bei der es unwahrscheinlich ist, dass es zu Konflikten mit anderen I2C-Geräten kommt, mit denen Sie möglicherweise den Bus teilen.
@MathieuL - Bei 7-Bit-Adressierung gibt es nur 127 (verwenden Sie nicht 0000000b) mögliche Adressen. Offensichtlich kann nicht jedes Gerät eine eindeutige Adresse haben.
I2C-Adresskonflikte sind ein häufiges Problem. Kürzlich hat Linear Technology den LTC4316 herausgebracht , einen I2C-Adressumsetzer-IC.