Forum: News Einführung des I2C Bus


von EETech N. (eetech)



Lesenswert?

Dieser Artikel behandelt die wesentlichen Merkmale und Vorteile des Inter-Integrierten Kreis (kurz I2C) serien-kommunikations Protokolls.

Kommunizieren trotz Alphabet Suppe

Es sollte keine Überraschung sein, dass elektronische Systeme die Fähigkeit besitzen sollten, Informationen zwischen zwei, drei oder sogar zehn getrennten Komponenten auszutauschen. Entwickler haben dafür eine Reihe von Standardprotokollen entwickelt, welchen es den Chips ermöglicht, sich untereinander auszutauschen—Ein Fakt, mit dem man sich konfrontieren muss, wenn man die Barrieren der Kommunikation auf der Liste der Mikrocontroller oder Signalprozessoren überwinden will: UART, USART, SPI, I2C, CAN. . . . Jedes Protokoll hat seine Vor- und Nachteile, und es ist wichtig sich darüber im klaren zu sein, bevor man eine Entscheidung bei der Auswahl von Komponenten oder Schnittstellen trifft.

Dieser Artikel handelt vom I2C, welcher typischerweise für die Kommunikation zwischen einzelnen integrierten Schaltungen verwendet wird, welche sich auf der selben Platine befinden. Zwei weitere üblich verwendete Protokolle die in diese allgemeine Kategorie passen, sind UART (Universal Asynchronous Receiver/Transmitter) und SPI (Serial Peripheral Interface). Sie sollte die Grundmerkmale vom I2C kennen, bevor Sie einen Vergleich zwischen diesen drei Schnittstellen ziehen und verstehen können. Daher werden wir auf dieses Thema am Ende des Artikels eingehen.



Viele Namen, Ein Bus

Es besteht kein Zweifel daran, dass das I2C Protokoll an ernsthaften Terminologieproblemen leidet. Der eigentliche Name lautet Inter-Integrierter Schaltbus. Die einfachste – und wahrscheinlich am wenigsten übliche Abkürzung ist IIC. Vielleicht hat sich diese Abkürzung nicht durchgesetzt, weil die zwei großen I's wie zwei 1en oder zwei kleine L's oder wie die römischen Zahlen II oder aber wie das Symbol für parralelen Widerstand aussehen. . . . Auf jeden Fall hat sich die Abkürzung I2C (gesprochen I quadrat C) durchgesetzt und das trotz der eher Fragwürdigen Logik der Behandlung eines normalen Buchstabens gleichzustellen wie mit einer Variable die der Exponentierung unterliegt. Die dritte Möglichkeit ist I2C (I zwei C), welche die ungeliebte hochgestellte Formatierung vermeidet und auch leichter auszusprechen ist als “I quadrat C.”

Der letzte Dunst des Nebels setzt dann ein, wenn man merkt, dass SMB oder SMBus anscheinend eine weitere Möglichkeit des Verweises auf den I2C-Bus benutzen. Tatsächlich beziehen sich diese Abkürzungen auf den System Management Bus, welcher sich kaum vom I2C unterscheidet. Das originale I2C Protokoll wurde von Phillips Semiconductor entwickelt und Jahre später nutzte Intel das SMBus Protokoll als neue Erweiterung vom I2C. Die beiden Busse sind weitgehend austauschbar. Wenn Sie sich für die geringfügigen Unterschiede interessieren, finden Sie diese auf Seite 57 des System Management Bus Handbuchs.



Es ist wie das ernste Gespräch in einem Raum voller Leute zu suchen. . . Um die cleveren Techniken zu schätzen, die den I2C so effektiv machen, müssen Sie an die Schwierigkeit denken, die eine zuverlässige und dennoch vielseitige Kommunikation zwischen mehreren unabhängigen Komponenten ausmacht. Die Situation wird vereinfacht, wenn ein Chip immer als “Master” benutzt und den anderen immer als “Slave”. Aber was passiert, wenn es mehrere Slaves gibt? Was passiert, wenn die Slaves nicht unterscheiden können, wer nun das Masterslave ist? Was ist, wenn es mehrere Master gibt? Was passiert, wenn ein Master die Daten von einem Slave anfordert, dieser aber in der zwischenzeit aus irgendeinem Grund nicht mehr funktionsfähig ist? Oder was passiert, wenn der Slave während einer Übertragung nicht mehr funktionsfähig ist? Was passiert, wenn ein Master den Bus beauftragt etwas zu übertragen, der Bus dann aber abstürzt, bevor der Bus freigegeben wurde?

Image:Einfuhrung_I2C_image1.jpg

Der Punkt ist, dass es eine Menge Dinge gibt, die in dieser Kommunikationsumgebung schief laufen können. Sie müssen dies im Hinterkopf behalten, wenn Sie mit dem I2C arbeiten, sonst wird Ihnen das Protokoll unerträglich kompliziert und knifflig erscheinen. Fakt ist, dass es genau diese zusätzliche Komplexität ist, was es dem I2C ermöglicht, flexible, erweiterbare und robuste Low-Pin-Zählungen in der seriellen Kommunikation abzuliefern.



Übersicht Bevor wir ins Detail gehen, hier die Schlüsselkompetenzen des I2C:

Image:Einfuhrung_I2C_image2.jpg

(Clock-Takt, Data-Daten) Es werden nur zwei Signale (Takt und Daten) verwendet, unabhängig davon, wie viele Geräte im Bus sind. Beide Signale werden durch entsprechend große Widerstände auf eine positive Versorgungsspannung gezogen. Jedes Gerät verbindet sich mit dem Takt- und Datensignal über Open-Drain- (oder Open-Collector-) Ausgangstreiber. Jedes Slave-Gerät wird mittels einer 7-Bit-Adresse identifiziert; Der Master muss diese Adressen kennen, um mit einem bestimmten Slave zu kommunizieren. Alle Übertragungen werden von einem Master initiiert und beendet; Der Master kann Daten an einen oder mehrere Slaves schreiben oder Daten von einem Slave anfordern. Die Bezeichnungen "Master" und "Slave" sind inhärent nicht permanent: Jedes Gerät kann als Master oder Slave fungieren, wenn es die notwendige Hardware und/oder Firmware beinhaltet. In der Praxis übernehmen eingebettete Systeme oftmals eine Architektur, in der ein Master Befehle an mehrere Slaves sendet oder sammelt. Das Datensignal wird an der fallenden Flanke des Taktsignals aktualisiert und auf der ansteigenden Flanke wie folgt abgetastet:

image:EinfuhrungI2C_image3.jpg

Die Daten werden in Ein-Byte-Abschnitten übertragen, wobei jedes Byte gefolgt wird von einem Ein-Bit-Handshake-Signal, das als das ACK/NACK-Bit (quittieren oder nicht quittieren) bezeichnet wird.



I2C vs. UART und SPI Die Vorteile von I2C lassen sich wie folgt zusammenfassen: Behält auch bei zahlreichen Geräten auf dem Bus eine niedrige Pin / Signal-Zählung bei Passend für die Bedürfnisse verschiedener Slave-Geräte Unterstützt mehrere Master Integriert ACK / NACK Funktionalität für eine verbesserte Fehlerbehandlung

Und hier die Nachteile: Erhöht die Komplexität von Firmware oder Low-Level-Hardware Impliziert Protokoll-Overhead, der den Durchsatz reduziert Benötigt Pull-up-Widerstände, die die Taktrate begrenzen Verbraucht wertvolle PCB-Einheiten in extrem speicherbeschränkten Systemen Erhöht die Verlustleistung

Wir können an Hand dieser Punkten sehen, dass der I2C besonders gut geeignet ist, wenn Sie ein kompliziertes, vielfältiges oder umfangreiches Netzwerk von kommunizierenden Geräten haben. UART-Schnittstellen werden in der Regel mit Point-to-Point-Verbindungen verwendet, da es keine normale Art der Adressierung verschiedener Geräte oder der Freigabe von Pins gibt. SPI ist großartig, wenn man einen Master und ein paar Slaves hat. Allerdings benötigt jeder Slave ein separates "Slave Select"-Signal, was zu hohen Pin-Zählungen und Routing Schwierigkeiten führen kann, wenn zahlreiche Geräte auf dem Bus sind. Zudem ist SPI umständlich, wenn man mehrere Master unterstützen muss.

Möglicherweise müssen Sie I2C vermeiden, wenn der Durchsatz ein ernstes Anliegen ist. SPI unterstützt höhere Taktfrequenzen und minimiert den Overhead. Auch das Low-Level-Hardware-Design für SPI (oder UART) ist viel einfacher. Wenn Sie also mit einem FPGA arbeiten und Ihre serielle Schnittstelle von Grund auf neu entwickeln, sollte der I2C wahrscheinlich als letzter Ausweg betrachtet werden.



Schlussfolgerung Wir haben die herausragenden Eigenschaften des I2C vorgestellt, und wir wissen jetzt genug über die Vor- und Nachteile des Protokolls, um eine fundierte Entscheidung zu treffen, welchen seriellen Bus Sie für eine bestimmte Anwendung wählen können. In künftigen Artikeln werden wir das Protokoll erforschen und wie man es noch ausführlicher umsetzen kann.

16 Dezember.2015 von Robert Keim


: Bearbeitet durch NewsPoster
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.