如何使用Arduino使用TCA9548A I2C多路复用器

How to Use the TCA9548A I2C Multiplexer with Arduino

TCA9548A是I2C多路复用器,可让您将具有相同I2C地址的多个设备连接到单个Arduino。它通过创建多达八个独立的I2C总线来实现这一目标,可以单独访问。本教程将指导您通过与Arduino的TCA9548A进行接口,以管理多个I2​​C设备。


你需要什么

  1. TCA9548A I2C多路复用器模块
  2. Arduino董事会(例如Uno,Mega,Nano)
  3. I2C设备(例如,传感器,显示)
  4. 面包板和跳线电线
  5. 安装了带有Arduino IDE的计算机

步骤1:了解TCA9548A

TCA9548A最多可以控制8个独立的I2C总线(通道)。每个通道可以打开或关闭以隔离具有相同地址的设备。

引脚

别针 功能
VCC 电源(3.3V/5V)
gnd 地面
SDA I2C数据线
SCL I2C时钟线
SDX/SCX 单独的I2C公共汽车(0-7)
A0,A1,A2 地址配置

I2C地址配置

  • TCA9548A的I2C地址由A0,A1和A2引脚确定:
    • 所有引脚到GND: 0x70 (默认地址)
    • 高和低的组合可以从 0x700x77.

步骤2:将TCA9548A接线到Arduino

将TCA9548A连接到Arduino

TCA9548A PIN Arduino Pin
VCC 5V
gnd gnd
SDA A4
SCL A5

将I2C设备连接到TCA9548A

  • 将I2C设备的SDA和SCL线连接到TCA9548A上相应的SDX和SCX引脚。
  • 确保设备的VCC和GND引脚也连接。

步骤3:安装所需的库

要简化使用TCA9548A的工作,请安装“电线”库(预安装在Arduino IDE中)。

如果您喜欢库以更容易处理,则可以使用 Adafruit TCA9548A 图书馆:

安装步骤:

  1. 打开Arduino IDE。
  2. 草图 > 包括库 > 管理库.
  3. 搜索“ Adafruit TCA9548A”,然后单击 安装.

步骤4:上传代码

以下示例演示了如何选择特定的I2C总线并与设备进行通信:

示例代码

#include <Wire.h>

#define TCA9548A_ADDR 0x70 // Default I2C address of TCA9548A

void tcaSelect(uint8_t bus) {
  if (bus > 7) return; // Ensure the bus number is valid
  Wire.beginTransmission(TCA9548A_ADDR);
  Wire.write(1 << bus); // Select the specific bus
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("TCA9548A Test");

  // Test selecting each channel
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i);
    Serial.print("Channel ");
    Serial.print(i);
    Serial.println(" selected.");
    delay(500);
  }
}

void loop() {
  // Add specific I2C communication here
}

步骤5:在每个频道上与设备进行通信

要与特定频道上的设备进行通信,请致电 tcaSelect(bus) 启动I2C通信之前的功能。例如:

从传感器读取数据

#include <Wire.h>

#define TCA9548A_ADDR 0x70

void tcaSelect(uint8_t bus) {
  if (bus > 7) return;
  Wire.beginTransmission(TCA9548A_ADDR);
  Wire.write(1 << bus);
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("Reading from multiple sensors");
}

void loop() {
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i); // Select channel
    Serial.print("Reading from channel ");
    Serial.println(i);

    Wire.requestFrom(0x40, 1); // Replace 0x40 with the I2C address of your sensor
    if (Wire.available()) {
      int data = Wire.read();
      Serial.print("Data: ");
      Serial.println(data);
    }
    delay(500);
  }
}

TCA9548A的应用

  1. 管理多个相同的I2C设备(例如,具有相同地址的多个传感器)。
  2. 在项目中扩展I2C设备。
  3. 降低大型系统中的接线复杂性。

故障排除

  • 没有设备的响应: 确保选择正确的I2C总线并检查接线。
  • 地址冲突: 验证连接设备的I2C地址以避免冲突。
  • 不正确的巴士切换: 确保正确配置了TCA9548A的地址并与代码匹配。

结论

您已成功将TCA9548A I2C多路复用器与Arduino联系起来。这个功能强大的模块使您可以使用相同的地址连接和控制多个I2C设备,从而成为复杂项目的宝贵工具。尝试不同的设备和配置,以解锁其全部潜力!

发表评论

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.