WikiDer > I²C-Bus

I²C-bus

Das ich2C-Bus (ausgesprochen: I quadrierter C-Bus), früher bezeichnet mit IIC-Bus (Inter-IC-Bus), ist ein synchroner, serieller Bus, entwickelt für die Datenkommunikation zwischen microProzessoren und andere ICs, normalerweise auf einem einzigen a PCB.

Geschichte

Das i2C-Bus wurde 1979 eingeführt Philips entwickelt und 1980 patentiert als zuverlässige und kostengünstige Alternative zu einer Reihe anderer Datenbusse, die damals in Verbrauchergeräten verwendet wurden. Seit 2006 gehört dieser Geschäftsbereich von Philips zum Unternehmen NXP, die somit auch die Verantwortung für die I . trägt2C-Standard.

Manchmal sprechen die Leute von Zweidraht-Schnittstelle (TWI) wenn man das I . verwendet2C-Protokoll. TWI ist der allgemeinere, nicht von Philips/NXP lizenzierte Begriff für I2C. Philips hat I2C jedoch, daher ist TWI der inoffizielle Begriff.

Das i2Das C-System hatte anfangs einige Nachteile, wie eine geringe Geschwindigkeit (100 kbit/s) und eine geringe Zuverlässigkeit für lange Leitungen (in der Praxis sollte die Gesamtlänge des Busses sicherlich nicht länger als 3 Meter sein), später jedoch die Geschwindigkeit Es wurden spezielle Puffer-ICs entwickelt, um die Busleitungslänge zu erhöhen.

Operation

ich2C arbeitet auf Basis von zwei Busleitungen, nämlich SDA (serial data) und SCL (serial clock). Die Daten werden über die SDA-Leitung gesendet und das Taktsignal wird über die SCL-Leitung gesendet.

Das folgende Timing-Diagramm veranschaulicht, wie SDA und SCL zusammenarbeiten:

Datenübertragungssequenz

Wie ich .funktioniere2C-Datenübertragung:

  1. Das Senden von Daten wird mit einem START-Bit (S) eingeleitet, das dem SDA signalisiert, heruntergezogen zu werden, während der SCL hoch bleibt.
  2. SDA gleicht das erste Datenbit aus, während SCL niedrig gehalten wird (während des blauen Zeitbalkens). Die Daten werden empfangen, wenn SCL hochgeht (grün).
  3. Wenn die Übertragung abgeschlossen ist, wird ein STOP-Bit (P) gesendet, das die Datenleitung freigibt, so dass sie hochgezogen werden kann, während SCL kontinuierlich hoch gehalten wird.
  4. Um Fehlerkennungen zu vermeiden, wird der Pegel des SDA an der fallenden Flanke (Übergang von High nach Low) von SCL geändert. Das Lesen erfolgt an der steigenden Flanke (dem Übergang von Low nach High) von SCL.

Um zu kommunizieren, habe ich I2C benötigt einen Master und mindestens einen Slave. Der Meister hat die Kontrolle über das I2C-Bus und erzeugt das Taktsignal, das Startbit und das Stoppbit. Die Slaves kommunizieren erst nach Aufforderung durch den Master.

Zur Kommunikation sendet der Master zunächst ein Startbit. Es besteht aus einem High-to-Low-Signal auf der SDA-Leitung (flankengesteuert), während die SCL-Leitung hoch ist. Dann sendet der Master eine Adresse plus ein Lese-/Schreibbit über die I2C-Linie. Das Read/Write-Bit zeigt an, ob der Master Daten senden oder empfangen möchte. Der Slave mit der gerufenen Adresse antwortet dann mit einem 'Acknowledge', damit der Master weiß, dass der gerufene IC aktiv ist.

Ein Acknowledge oder eine 'Acknowledgement' bedeutet, dass der Master nach dem Senden des letzten Datenbits die SDA-Leitung freigibt, wodurch diese Leitung hochgezogen wird und der Master dann 1 zusätzlichen Takt sendet, wobei vor dem Hochfahren der SCL-Leitung der zieht die SDA-Leitung als Bestätigung für guten Datenempfang nach unten und gibt sie wieder frei, nachdem die SCL-Leitung wieder auf Low gegangen ist. Bei der Übertragung von zB 1 Byte bestehend aus 8 Bit sendet der Master 9 Takte auf der SCL-Leitung.

Nun können die Daten gesendet werden. Es wird jeweils ein Byte gesendet plus eine Bestätigung vom Empfänger, um zu bestätigen, dass die Daten empfangen wurden. Nachdem die Daten gesendet wurden, sendet der Master das Stoppbit: ein Low-to-High-Signal auf der SDA-Leitung (flankengesteuert), während die SCL-Leitung High ist.

Um richtig zu funktionieren, ist es notwendig, beide Busleitungen mit einem Pull-Up-Widerstand hoch zu halten. Der Wert des Widerstandes hängt von der Spannung am Bus ab (bei 3,3-V-Systemen zwischen ca. 1,8 kΩ und 2,7 kΩ, bei 5V aber meist 4,7 kΩ). Dies hängt auch von der Geschwindigkeit ab, mit der der Bus arbeiten soll.

Leistungen

Bei geeigneten Anwendungen sind die Hauptvorteile:

  • Kostengünstig.
  • Einfache Verdrahtung (nur zwei Signalleitungen).
  • Wenige Lötstellen, kleine ICs.
  • Große Auswahl an ICs mit dem I2C-Schnittstelle.
  • Kompatible ICs anderer Hersteller.
  • Robuste Konstruktion.
  • Langsame Peripheriechips können Wartezyklen erzwingen.
  • Integrierte Multi-Master-Fähigkeit, d.h. mehrere Mikrocontroller (Master) können denselben Bus nutzen und sogar miteinander kommunizieren.

Nachteile

Neben den vielen Vorteilen gibt es auch einige Nachteile:

  • Wenn ein angeschlossener Chip (IC) im I . defekt ist2C-Bus, kann das die ganze Linie von I nehmen?2C-Block, was dazu führt, dass auf dem I . überhaupt keine Kommunikation stattfindet2C-Linien können stattfinden.
  • ich2C wird bei größeren Datenmengen langsam.

Spätere Versionen

In späteren Versionen des I2C-Bus wurden mehrere Verbesserungen vorgenommen. So wurde beispielsweise die maximale Geschwindigkeit auf 400 kbit/sec (Fast Mode) und später auf 3,4 Mbit/sec (High Speed ​​Mode) erhöht, der Adressraum der angeschlossenen ICs von 7 auf 10 erhöht. bisschen und es wurden Vorkehrungen getroffen2Schließen Sie C-Busse mit unterschiedlichen Versorgungsspannungen an.

Externe Links