Wie verbinde ich Nicht-I2C-Geräte mit einem I2C-Bus?

Ich bin ziemlich neu in der Elektronik und versuche gerade, mein erstes Raspberry Pi-basiertes System zu bauen: eine Diode, ein Drucksensor und LCD 1602 mit Tastaturschild (das für ein Arduino-Board). Die Art und Weise, wie ich alle Geräte verbinden möchte, ist die Verwendung von I2C (der Raspberry Pi hat nicht viel GPIO).

Und hier kommt die Frage: Wie kann ich eventuell Nicht-I2C-Geräte an den I2C-Bus anschließen? Ich habe von verschiedenen Expandern wie dem MCP23017 gehört, wird das das Problem lösen?

Hängt davon ab, was das Nicht-I²C-Gerät benötigt. Können Sie die Schnittstelle etwas genauer beschreiben?
zum Beispiel wird die oben erwähnte Diode ein- und ausgeschaltet. Das LCD-Display mit Tastaturschild soll einige grundlegende Informationen über das System anzeigen (wie den Namen des Benutzers, der vom Himbeer-Pi abgerufen wird) und einige Informationen (das Signal zum Neustart des Systems) zurücksenden, wenn die Reset-Taste auf dem Schild gedrückt wird . Der Drucksensor ist bereits als I2C-Gerät ausgelegt.
Wenn Sie die Art und Weise gemeint haben, wie Geräte angeschlossen werden sollen, dann benötigt das LCD mit Tastaturabdeckung sechs analoge Ports, um das Signal von den Tasten abzuziehen, und sieben Ports für digitale Signale. Die Diode benötigt nur eine Art Steuerstift, um ein- und ausgeschaltet zu werden.
@jippie könntest du bitte einige mögliche Lösungen zu diesem Thema nennen?

Antworten (1)

Es ist möglich, dass die Frage ein Missverständnis oder eine Fehlkommunikation der Art der gewünschten Verbindung darstellt: Nicht etwas, das an den I2C-Bus selbst angeschlossen werden soll, sondern über ein zwischengeschaltetes I2C-zu-GPIO- Gerät gesteuert werden soll , das außerdem an den I2C-Bus angeschlossen ist.

Die Idee, dass Nicht-I2C-Geräte an einen I2C-Bus angeschlossen werden, ist bedeutungslos. Das I2C-Protokoll hat spezifische Anforderungen, damit der I2C-Master das Slave-Gerät adressieren und Daten in beide Richtungen übertragen kann.

Das in der Frage erwähnte LCD arbeitet beispielsweise mit einem anderen Satz von Kommunikationsprotokollen, verwendet mehrere GPIO-Pins und erkennt (aus der Beschreibung) höchstwahrscheinlich I2C nicht. Es sind jedoch I2C-LCD-Module erhältlich, die I2C-Slave-Funktionalität an Bord enthalten – entweder über einen LCD-Controller oder einen dedizierten Mikrocontroller mit I2C-Slave-Kommunikationscode. Anstelle des erwähnten Basis-LCD-Moduls wäre ein solches I2C-Anzeigemodul für den Einsatz an einem I2C-Bus erforderlich.

I2C-Bus-Expander können I2C-Funktionalität nicht auf magische Weise auf einem angeschlossenen Gerät erzeugen. Was I2C-Bus-Expander jedoch tun können, ist, zusätzliche GPIO-Pins bereitzustellen , die dann per Code vom Raspberry Pi oder Mikrocontroller über den Expander gesteuert werden, der selbst auf I2C-Befehle reagiert.

Vielleicht ist das gewünscht - in diesem Fall funktioniert es sicher, aber nicht wie beschrieben: Ein GPIO-gesteuertes Gerät wie das LCD-Modul oder eine LED kann mit den GPIO-Pins des Expanders verbunden werden, und der Expander ist das Gerät die mit dem I2C-Bus verbunden ist.

Danke schön! Diese Antwort ist genau das, was ich hier erwartet hatte.