I2C

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Der I2C-Bus (Inter Integrated Circuit) ist ein einfacher Zweidraht-Bus, der für die Kommunikation zwischen ICs innerhalb eines größeren Systems verwendet wird. Insbesondere bietet er sich an zur Kommunikation zwischen Microcontrollern und Peripheriegeräten.

Das Ethersex-System kann sowohl als Master als auch als Slave in einem I2C-Bus arbeiten.

In der Atmel-Dokumentation wird I2C als TWI (Two Wire Interface) geführt.

Master Mode

Im Master-Mode kann das Ethersex-System auf angeschlossene I2C-Slaves zugreifen. Unterstützt werden im Moment:

  • 24cXX EEPROMs (Als Storage Backend für das Virtuelle Dateisystem)
  • LM75 Temperatursensoren
  • PCA9531 8 bit LED Dimmer
  • PCF8574x Port Extension

Slave Mode

  • Kann per I2C auf die ECMD Schnittstelle zugegriffen werden.

Anschluss

Die Leitungen SCL (Clock) und SDA (Data) liegen als "Alternate Function" auf I/O Leitungen der Controller. Beim ATmega32 sind dies PC0 (SCL) und PC1 (SDA).

Etherrape

Beim Etherrape ist der I2C-Bus auf einem separaten Steckverbinder herausgeführt.

Pollin AVR-NET-IO

Beim Pollin AVR-NET-IO liegen die Leitungen des Ports C auf J3, dem 25poligen SUB-D Steckverbinder. Dort lassen sich auch Versorgungsspannung und Masse für die angeschlossenen Slaves abgreifen:

Pin Funktion
2 PC0 (SCL)
3 PC1 (SDA)
15 5V
18 GND

Konfiguration

Die Leitungen sind fest vorgegeben, daher muss keine Konfiguration des Pinnings erfolgen.

Die Einstellungen für den Master-Mode finden sich unter "I/O support", "I2C Master Support".

ECMD

Mittels "i2c detect" werden die gefundenen I2C Adressen aufgelistet

i2c detect
detected at: 0x20 (32)
detected at: 0x48 (72)
detected at: 0x60 (96)

Um den LM75 Temperatursensor auszulesen (Basisadresse 0x48) muss die IC Adresse angegeben werden. In diesem Falle ist das "0" weil die IC Adresse a0 bis a2 auf Masse gesetzt werden. -> binär 000 = 0

lm75 0
21.5

Für die Porterweiterung gilt das Schema "pcf8574x read adresse chip" wobei die adresse 0-7 sein kann, und chip "0" oder "1", je nachdem ob man den pcf8574 oder den pcf8574A benutzt.

pcf8574x read 0 0
FFFF

Schalten von Ausgängen mit Wert 0xF0 am PCF8574 mit Adresse 0x25 (Das bedeutet das a0=1 und a2=1 ist, ergo 101) d.h. die ersten 4 Ausgänge werden auf "1" die anderen 4 Ausgänge auf "0" gesetzt

pcf8574x set 5 0 F0