Heutzutage ist die I2C-Kommunikation eine der am häufigsten verwendeten Methoden, um mehrere Geräte mit einem Mikrocontroller wie Arduino zu verbinden. Er TCA9548A ist ein 2-Kanal-I8C-Bus-Extender, der eines der häufigsten Probleme bei dieser Art von Verbindungen löst: den I2C-Adresskonflikt. Dieser Artikel hilft Ihnen zu verstehen, wie dieser Extender funktioniert und wie Sie ihn in Ihre Arduino-Projekte integrieren können.
Wenn Sie jemals auf Geräte gestoßen sind, die dieselbe Adresse auf dem I2C-Bus haben, wissen Sie, wie frustrierend es sein kann, mit ihnen zu kommunizieren, ohne Konflikte zu verursachen. Mit der Verwendung von TCA9548Akönnen wir diese Probleme vermeiden und die Anzahl der an einen einzelnen I2C-Bus angeschlossenen Geräte erhöhen. Lassen Sie uns die von diesem Multiplexer gebotenen Möglichkeiten im Detail untersuchen.
Was ist ein TCA9548A?
El TCA9548A ist ein 2-Kanal-I8C-Bus-Extender, der speziell für Geräte wie Arduino entwickelt wurde. Seine Hauptfunktion besteht darin, die Verbindung mehrerer Busse zu einem einzigen I2C-Bus zu ermöglichen, was ihn zu einem grundlegenden Element für die effiziente Verwaltung der Kommunikation mit mehreren Geräten macht. Es könnte sogar mit einem Multiplexer verglichen werden, ist jedoch speziell für die I2C-Kommunikation konzipiert.
Dieses Gerät verfügt über einen I2C-Bus-Eingang, der aus zwei Leitungen, SDA (Daten) und SCL (Takt), besteht, die mit 8 unabhängigen Ausgängen verbunden sind, jeweils mit seinem entsprechenden SDA und SCL. Dies ermöglicht Der Mikrocontroller kommuniziert mit bis zu 8 GerätenWählen Sie aus, mit wem Sie in jedem Moment interagieren möchten.
Darüber hinaus wird der TCA9548A häufig zur Verwaltung von Geräten verwendet, die dieselbe I2C-Adresse haben, was bei bestimmten Sensoren und Displays üblich ist, deren Adresse nicht geändert werden kann. Mit diesem Multiplexer können Sie einen Kanal aktivieren und mit einem Gerät kommunizieren, ohne andere Kanäle zu stören.
Vorteile und Highlights
Zu den wichtigsten Vorteilen von TCA9548A Es besteht die Möglichkeit, mit I2C-Bussen unterschiedlicher Spannungsebenen zu arbeiten, ohne dass Logikadapter verwendet werden müssen. Dies ermöglicht die Kommunikation mit Geräten, die mit 1.8 V, 2.5 V, 3.3 V und 5 V betrieben werden, was die Möglichkeiten der Integration in verschiedene Projekte erweitert.
Ein weiteres wichtiges Merkmal besteht darin, dass der Multiplexer direkt über den I2C-Eingangsbus gesteuert werden kann, was die Bedienung über den Mikrocontroller sehr einfach macht. Seine Betriebsspannung reicht von 1.65 V bis 5.5 V und er unterstützt I2C-Busse mit Frequenzen bis zu 400 kHz, wodurch er für eine Vielzahl von Geräten geeignet ist.
Verbindung und Konfiguration
Der Anschluss des TCA9548A ist recht einfach. Sie müssen lediglich den Eingangsbus an die SDA- und SCL-Leitungen des Arduino anschließen, zusammen mit den entsprechenden Stromanschlüssen (z. B. GND und 5 V). Am anderen Ende können Sie bis zu 8 I2C-Geräte anschließen, jedes auf seinem jeweiligen Kanal mit SDA und SCL.
Eine interessante Funktion ist, dass Sie die I2C-Adresse des TCA9548A mithilfe der Pins A0, A70 und A0 von 77x0 auf 1x2 ändern können. Dies ist nützlich, wenn Sie mehr als einen Multiplexer im selben Projekt verwenden müssen. Wenn Sie aus irgendeinem Grund den Multiplexer zurücksetzen müssen, können Sie dies auch tun, indem Sie den RST-Pin auf LOW setzen, der standardmäßig auf Pull-Up eingestellt ist.
Es ist unbedingt zu bedenken, dass es mit zunehmender Kabellänge oder zunehmender Komplexität der angeschlossenen Geräte erforderlich sein kann, Pull-up-Widerstände hinzuzufügen, um die korrekte Datenübertragung auf dem I2C-Bus sicherzustellen.
Codebeispiel zum Scannen von I2C-Geräten
Vor der Interaktion mit Geräten, die mit dem verbunden sind TCA9548A, ist es zunächst wichtig sicherzustellen, dass der Multiplexer korrekt erkannt wird. Dazu können Sie einen Scan des I2C-Busses durchführen. Nachfolgend zeigen wir ein einfaches Beispiel zur Erkennung des Multiplexers selbst am Bus.
#include "Wire.h"
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("Escaneando bus I2C...");
for (byte address = 8; address <= 119; address++) {
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("Encontrado dispositivo en dirección 0x");
Serial.println(address, HEX);
}
}
Serial.println("Escaneo finalizado");
}
void loop() {
delay(1000);
}
Der obige Code durchsucht die möglichen I2C-Busadressen und sucht nach TCA9548A oder andere angeschlossene Geräte. Sobald der Multiplexer identifiziert wurde, können Sie mit der Auswahl des Kanals fortfahren, den Sie aktivieren möchten.
Auswählen eines Kanals des TCA9548A
Sobald wir den Multiplexer konfiguriert und erkannt haben, müssen wir den richtigen Kanal für die Kommunikation mit dem gewünschten Gerät auswählen. Dies kann einfach durch Schreiben eines Bytes erfolgen, das den spezifischen Kanal aktiviert. Hier ist ein Beispiel für die Auswahl eines Kanals:
#define TCAADDR 0x70
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
void setup() {
Wire.begin();
Serial.begin(115200);
for (uint8_t t=0; t<8; t++) {
tcaselect(t);
Serial.print("Escaneando salida ");
Serial.println(t);
}
}
Mit diesem Code können Sie jedes mit dem verbundene Gerät auswählen und mit ihm interagieren TCA9548A, einer nach dem anderen. Denken Sie daran, dass Sie den Code auch ändern können, um die Ausgänge jedes Kanals nach zusätzlichen Geräten zu durchsuchen.
El TCA9548A ist ein hervorragendes Tool zur Erweiterung der Fähigkeiten des I2C-Busses in Ihren Arduino-Projekten und ermöglicht Ihnen den effizienten und einfachen Anschluss mehrerer Geräte mit derselben Adresse oder unterschiedlichen Spannungspegeln.