GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist I2C (Inter-Integrated-Circuit)?

Zielgruppe

Dieser Artikel geht davon aus, dass der Leser mit grundlegenden elektronischen Schaltungen und der Terminologie vertraut ist.

Einführung

Der Zweck dieses Artikels besteht darin, den Leser mit den Grundlagen des I2C-Kommunikationsbusses vertraut zu machen, einschließlich seiner Einrichtung, seiner physikalischen Eigenschaften und wo und warum er häufig verwendet wird.


.

I2C

I2C wird normalerweise „I-two-C“ ausgesprochen, obwohl es manchmal auch als IIC (und ausgesprochen „I-I-C“) oder IC (ausgesprochen „I-Quadrat-C“) geschrieben wird. Die Abkürzung steht für Inter-Integrated-Circuit. Es ist eine Art serieller Computerbus und ein Kommunikationsprotokoll, das erstmals 1982 von Philips Semiconductor auf den Markt gebracht wurde.

I2C ist eine Möglichkeit, mehreren elektronischen Geräten (meistens periphere integrierte Schaltungen mit niedriger Geschwindigkeit) zu ermöglichen, über ein einziges Kabelpaar miteinander zu kommunizieren. Diese Drähte werden auch als Datenleitungen oder Busse bezeichnet. Der erste dieser Busse ist die Datenleitung und heißt SDA (S Serie DA ta) Linie, und der andere Bus ist die Uhr oder SCL (S Serie CL ock) Zeile. Da alle Geräte in jedem I2C-Schaltkreis zur Kommunikation an diese beiden Leitungen angeschlossen sind, haben die meisten I2C-kompatiblen Geräte Pins mit der Bezeichnung SDA und SCL sowie VIN- und GND-Pins für positive und Masseverbindungen.
.

Typisches I2C Schema / lizenziert unter CC BY-SA 3.0

.
Sowohl der Takt- als auch der Datenbus sind Open-Drain-Leitungen. Zwischen jeder Leitung und der positiven Spannungsversorgung der Schaltung (auch als Vcc bezeichnet) muss ein Widerstand angeschlossen werden, damit der Bus richtig funktioniert. Die Größe dieser Widerstände kann variieren, von 1 kΩ bis hin zu 47 kΩ, aber sie müssen zwischen dem Bus und der HIGH-Spannung des Systems vorhanden sein. Wenn sie nicht vorhanden sind, werden alle Leitungen auf Low gezogen und der I2C-Bus funktioniert nicht. Glücklicherweise ist für das gesamte System nur ein Widerstandspaar (einer für jede Leitung) erforderlich, nicht ein Paar für jedes Gerät – das könnte bei vielen Geräten schnell unordentlich werden.

An diese Busse können eine ganze Reihe von Geräten (auch Knoten genannt) angeschlossen werden. Tatsächlich ist die Anzahl der Geräte, die praktisch an jeden I2C-Schaltkreis angeschlossen werden können, normalerweise nur durch den Platz, die Eigenkapazität der Leitungen und die Adressen der angeschlossenen Geräte begrenzt. Die meisten Experten sind sich einig, dass diese Grenze bei etwa 1008 Geräten liegt.

Es gibt zwei Arten von Geräten in der I2C-Kommunikation:Master und Slaves. In den meisten Implementierungen des Protokolls ist ein Master-Gerät mit vielen Slaves verbunden. Es ist möglich, dass mehr als ein Master mit verschiedenen Slave-Geräten sowie anderen Mastern kommuniziert, aber diese Form ist weniger verbreitet und würde den Rahmen dieser Einführung etwas sprengen. Viele I2C-Geräte können je nach den gewünschten Systemergebnissen entweder als Master oder als Slave konfiguriert werden. Der Master-Knoten ist das einzige Gerät, das die Taktleitung (SCL) steuert, und ist das einzige Gerät, das eine Datenübertragung initiieren kann. Die Slave-Knoten sind darauf beschränkt, Anrufe vom Master-Knoten abzuhören und darauf zu antworten. Jeder Knoten, einschließlich des Masters, hat eine eindeutige (normalerweise 7-Bit-) Adresse, die ihn im I2C-Netzwerk identifiziert. In einigen Fällen kann die Adresse 10 Bit lang sein, was mehr als 128 verschiedene Geräte zulässt, aber dies ist kein normales Setup.

Während des Betriebs eines I2C-Systems sendet der Master-Knoten Befehle und Anfragen auf der Datenleitung. Diese Signale sind 8 Bit lang, werden nur begonnen, wenn die Taktleitung HIGH ist, und werden mit einer bestimmten „Start“-Sequenz gestartet und mit einer bestimmten „Stop“-Sequenz beendet. Die Startsequenz warnt alle angeschlossenen Slave-Knoten, dass eine Datenübertragungsanfrage unmittelbar bevorsteht. Die nächste Sequenz, die der Master aussendet, ist die Adresse des Slaves, mit dem er kommunizieren möchte. Der benannte Slave-Knoten antwortet dann dem Master, beginnend mit dem nächsten HIGH-Taktsignal, und die anderen Slaves lauschen wieder auf ihre anzurufende Adresse.

Das achte Bit, das mit dem Befehl nach der 7-Bit-Geräteadresse gesendet wird, ist ein einfaches Lese-/Schreibbit. Es teilt dem adressierten Gerät mit, ob das Master-Gerät von ihm lesen oder darauf schreiben wird. Dadurch kann das empfangende Gerät entweder Daten zum Senden oder zum Empfangen von Daten entlang der SDA-Leitung beim nächsten Takt-HIGH-Signal vorbereiten.

Die Taktgeschwindigkeit (und die damit verbundenen Signalübertragungen) auf den meisten I2C-Schaltungen liegen normalerweise irgendwo zwischen serieller Kommunikation und SPI-Geschwindigkeiten, zwischen 100 kHz und 400 kHz. I2C wird häufig in Systemen verwendet, in denen Einfachheit, niedrige Kosten und geringer Stromverbrauch wichtiger sind als Geschwindigkeit. Einige dieser Anwendungen umfassen Analog-Digital-Wandler, LCD-Displays, Echtzeituhren und viele verschiedene Sensoren wie Barometer, Kompasse und sogar GPS-Empfänger.

I2C ist ein sehr nützliches Kommunikationsprotokoll, obwohl es möglicherweise nur auf eine kleine Anzahl von Anwendungen anwendbar ist. Es ist ideal für kleine Einstellungen mit geringem Stromverbrauch und hat daher eine Anhängerschaft unter vielen Bastlern gefunden, die es verwenden, um Sensoren und Steuerungen mit eingebetteten Geräten und Mikrocontrollern wie dem Arduino und dem Raspberry Pi zu verbinden. Zwei der GPIO-Pins des Pi sind voreingestellt, um mit Geräten über das Protokoll zu kommunizieren, und die Arduino-Drahtbibliothek ermöglicht die Kommunikation mit I2C-Geräten. Das Erlernen und Verwenden von I2C kann den Werkzeugkasten eines Bastlers erheblich erweitern, wenn es um Bauprojekte geht.

Atlantic.Net

Atlantic.net bietet VPS-Hosting sowie Managed-Hosting-Services an, die eine Schicht von geschäftsessentiellen Managed Services zu Ihren Hosting-Paketen beinhalten. Kontaktieren Sie uns noch heute für weitere Informationen.


Linux
  1. Was ist ein Linux-Benutzer?

  2. Was ist ein Systemadministrator?

  3. Was ist :-!! im C-Code?

  4. Was ist eine .so.2-Datei?

  5. Linux-Bänder, was sind l a und m am Ende von Bandgeräten in dev?

Was ist SFTP?

So finden Sie heraus, welche Geräte in Linux mit dem Netzwerk verbunden sind

Was kommt in GNOME 42?

Was ist digitaler Analphabetismus?

Was ist Termux auf Android?

Was ist eine .sh-Datei?