Klarstellung bezüglich I2C-Adresse

Ich habe den folgenden Link durchlaufen, der die "I2C-Adresszuweisungstabelle" beschreibt.

http://simplemachines.it/doc/IC12_97_I2C_ALLOCATION.pdf

Beim Lesen der oben genannten Informationstabelle dachte ich, dass die Geräteadresse "0x5x", wobei "0x5" die Gruppen-ID ist, für keines der I2C-Geräte verwendet wird.

Kann es sein, dass ich mich auf eine sehr alte Information beziehe?

Wenn NEIN, dann bin ich kürzlich auf ein ST-Produkt gestoßen (Link unten), das die Adresse "0x5x" hat!

http://www.st.com/resource/en/datasheet/vl53l0x.pdf

Jetzt bin ich verwirrt.

Mein Zweifel ist: Ist es möglich, jedem I2C-Gerät eine Gruppen-ID von "0x5" zuzuweisen?

Antworten (4)

Kann es sein, dass ich mich auf eine sehr alte Information beziehe?

Ja, das Datum auf dem Dokument ist 1999 und das Unternehmen ist Philips Semiconductors, das jetzt als NXP bekannt ist.

I2C-Adressen werden von NXP zugewiesen und sie können jede gewünschte Adresse zuweisen. NXP veröffentlicht keine I2C-Adressliste mehr, da sie von Unternehmen missbraucht werden kann, die keine Lizenzgebühren zahlen wollen. Daher kann nicht garantiert werden, dass eine Liste, die Sie finden, auf dem neuesten Stand ist.

Die neueste Version der I²C-Spezifikation sagt:

Zwei Gruppen von acht Adressen (0000 XXX und 1111 XXX) sind für die in Tabelle 3 gezeigten Zwecke reserviert.
[...]
Die Zuweisung von Adressen innerhalb eines lokalen Systems obliegt dem Systemarchitekten, der die verwendeten Geräte berücksichtigen muss des Busses und jede zukünftige Interaktion mit anderen konventionellen I²C-Bussen. [...] Wenn bekannt ist, dass die reservierte Adresse niemals für den vorgesehenen Zweck verwendet wird, kann eine reservierte Adresse als Slave-Adresse verwendet werden.

Es ist also tatsächlich möglich, beliebige Adressen zuzuordnen.

Beachten Sie, dass Ihr ST-Datenblatt diese Geräte-ID als 0x52 und 0x53 anzeigt. Dies sind 8-Bit-Adressen, da I2C-Bus-Transaktionen immer acht Bit lang sind. Das niederwertigste Bit ist nicht Teil der Adresse . Es ist das "Lesen/Schreiben"-Bit.
Von NXP zugewiesene Adressen werden häufig als 7-Bit aufgeführt, ausgenommen das Lese-/Schreibbit. Dies kann bei Benutzern zu einiger Verwirrung führen, die diese Adresse nach links verschieben müssen, bevor sie das niedrigstwertige Bit zum Lesen oder Schreiben festlegen.
Bei der Verwendung von I2C ist es ratsam, noch einmal zu überprüfen, ob Adressen als 7-Bit oder 8-Bit-gerechtfertigt angegeben werden.

Du hast in der Tat recht. Sowohl diese Tabelle als auch ihre moderne Version hier führen die sogenannte „0101“ „Gruppe“ nicht auf. Ich würde mich jedoch nicht sehr darum kümmern, es sei denn, Sie entwerfen einen völlig neuen I2C-fähigen IC, der der Öffentlichkeit allgemein zugänglich sein wird. Wenn Sie dies tun, müssen Sie sich an NXP wenden, um eine Adresszuweisung zu erhalten, und dafür wird Ihnen eine Gebühr berechnet.

Wenn Sie ein Gerät mit I2C-Bus entwerfen, sollten Sie sich nur darum kümmern, ob Sie I2C-Adresskonflikte auf Ihrem Bus haben oder nicht. Und das lässt sich leicht lösen, indem man die Datenblätter der verwendeten ICs sorgfältig überprüft und bedenkt, dass einige Hersteller (wie ST) 8-Bit-Adressen und andere 7-Bit-Adressen verwenden.