BEARBEITEN: Dies wurde mehrmals wiederholt, also obendrauf: Ja, es ist bekannt, dass es keinen "Standard" für I2C-Verbindungen zwischen Geräten gibt, aber diese Community kann sicherlich eine Liste von "Leitlinien" für die Herstellung formulieren solche Verbindungen, basierend auf Signalverhalten, Rauschminimierung und Minderung des Risikos aufgrund falscher Verbindungen.
Soweit ich weiß, hat NXP den I2C-Standard definiert, ohne eine Pinbelegung für I2C-Anschlüsse anzugeben. Die einzige Anleitung von NXP scheint eine Erwähnung zu sein, eine Erdung und / oder Vss zwischen SDA und SCL zu platzieren, wenn Vss / Gnd über die Verbindung übertragen werden.
Der Kauf verschiedener I2C-Module hat mich mit einer Vielzahl von I2C-Pinbelegungen zurückgelassen, und es war eine kleine Aufgabe, den Überblick über die verschiedenen kleinen Flachbandkabel-Schaltscheiben zu behalten, die ich für sie herstellen musste.
z.B
Meine Frage lautet also :
Gibt es eine endgültige / maßgebliche Richtlinie für die zu verwendende Pinbelegungssequenz des 4-poligen I2C-Anschlusses, bei der sowohl Vss als auch GND vom Host zum Gerät übertragen werden müssen?
Gibt es andernfalls ein Verzeichnis, wenn auch unvollständig, von I2C-Modulen / Geräten, in dem die Pinbelegung aufgeführt ist, die jedes übernommen hat?
Klarstellung: Suchen Sie nach Richtlinien wie "Vss näher an SCL heranführen, weil ..." und nicht nach einem definierten Standard, der eindeutig nicht existiert.
Ich habe kürzlich meine eigenen so weit wie I2C-Anschlüsse gerollt. Der Stecker selbst ist nicht sehr wichtig, im Moment verwende ich nur einen 100-mil-Pitch-Header (normalerweise weiblich an Bord, damit er nicht so eng ist, wenn er nicht angeschlossen ist), aber jeder 4-Plus-Pin-Stecker reicht aus. Außerdem verwende ich den P82B715von TI als I2C-Bus-Extender. Dies überwindet die Kapazitätsprobleme, die mit dem Laufen langer I2C-Abfälle von Bord verbunden sind, wofür I2C, wie gesagt wurde, ursprünglich nicht vorgesehen war. Ich habe viele verschiedene Kombinationen ausprobiert, wie in den Beispielen, die Sie gegeben haben, und ich habe absolut keinen Unterschied in der Leistung bemerkt. Ich glaube, das liegt daran, dass I2C relativ langsam ist und Interferenzen zwischen SDA und SCL kein großes Problem darstellen. Grundsätzlich ist die Anstiegszeit für Spannungen (wenn Störungen auftreten) auf dem Bus viel viel kleiner als eine Bitlänge. Das ist vielleicht nicht das, was Sie hören möchten, aber es bietet mehr Optionen. Persönlich habe ich mich für [VCC, SDA, GND, SCL] entschieden, um leicht zu / von diesem Chip geroutet zu werden und auch immun gegen eine VCC / GND-Verwechslung zu sein, wenn es rückwärts eingesteckt wird.
Als er zum ersten Mal eingeführt wurde, war der I2C-Bus (Inter-Integrated Circuit) nur dazu gedacht, Chips auf einer einzigen PCB-Baugruppe zu verbinden. Es war nie beabsichtigt, auf Kabeln verwendet zu werden, um mehrere Platinen miteinander zu verbinden, und daher wurden keine Steckverbinder für diesen Zweck definiert.
Die einzigen "standardmäßigen" I2C-basierten externen Schnittstellen, die mir bekannt sind, sind der kurzlebige ACCESS.bus zum Anschließen von Benutzerschnittstellengeräten an Computer und der VESA Display Data Channel zum Abrufen von Monitorinformationen über VGA-, DVI- und HDMI-Anschlüsse.
Viele Leute verwenden eine Art Steckverbinder, um I²C-Signale und Strom zwischen zwei Leiterplatten zu übertragen. Zum Beispiel,
Einige allgemeine Tipps zur Übertragung von I²C-Signalen über längere Distanzen:
ps: Ich sehe, dass Wikipedia: I²C Circuit Interconnection diese Frage verlinkt hat.
Keine Standardbelegung, kein Standardstecker. Der I2C-Standard ist für solche Dinge nicht wirklich zugänglich. Es wird auf Busebene angegeben, nicht auf Geräteebene. Wenn Sie beispielsweise ein I2C-Gerät anschließen möchten, wissen Sie per Standard, ob sich die Pullups auf dem Host oder auf dem Gerät befinden? Nein. Viele andere Dinge, die Sie auch nicht wissen, wie z. B. wo Ihre Kabelkapazitäten sind, was Vcc sein muss ....
Tatsächlich gibt es sogar I2C-Geräte, die zusätzliche Leitungen für Interrupts und andere einfache alte digitale E/A benötigen. Wie fügen Sie diese dem Standard hinzu, wenn Sie sich nicht darauf einigen können, wie viele Stifte Sie benötigen?
Fazit: Wenn Sie nach Portabilität und Stabilität in Ihren Verbindungen suchen, sind I2C und SPI nicht das Richtige für Sie.
Es gibt zwar keine I²C-Pinbelegung oder einen Steckerstandard, aber es gibt einige Stellen, an denen I²C verwendet wird, die standardisiert sind. Einige, die mir in den Sinn kommen, sind Speichermodule (DIMM, SO-DIMM), Videoanschlüsse ( DDC in DVI , VGA ) und SM-Bus (ja, ihre Webseite sieht aus wie etwas, das ein Kind Mitte der 90er gemacht hat). Insbesondere der SM-Bus-Anschluss ist verschlüsselt und enthält nur I²C und Strom, aber SM-Bus bringt zusätzliche Einschränkungen mit sich, sodass technisch gesehen nicht jedes I²C-Gerät an einen tatsächlichen SM-Bus angeschlossen werden sollte. Es gibt auch einige weitere proprietäre Stecker, wie z. B. Lego NXT-Sensoren.
Wie üblich für jeden Beitrag, der fragt, warum etwas [nicht] standardisiert ist:
Von XKCD
Es gibt keine Norm.
Es gibt keine gemeinsame Praxis.
In Bezug auf Probleme, selbst zu entscheiden, was zu tun ist:
Adam Lawrence
Anindo Ghosh
Tobi Lawrence
Anindo Ghosh
Tobi Lawrence
Anindo Ghosh
Olin Lathrop
Anindo Ghosh
Spannende Projekte
Anindo Ghosh
Rob Starling