Skip to main content

Grove - 8 チャンネル I2C マルチプレクサ/I2C ハブ (TCA9548A)

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

すでに Grove - I2C Hub (4 Port)Grove - I2C Hub (6 Port) をリリースしています。まだ足りないですか?そうですね、もっと多くを求めていることは分かっています。そこで、Grove - 8 チャンネル I2C ハブをお届けします。

さらに重要なのは、これは単なるポート数の積み重ねではありません。ご存知の通り、I2C デバイスは同じバスシステム内で異なるアドレスを使用する必要があります。Grove I2C Hub (4 ポートまたは 6 ポート) を使用しても、このルールは変わりません。しかし、Grove - 8 チャンネル I2C ハブを使用すれば、最大 8 台の同じアドレスの I2C デバイスを同じ Grove I2C システムに接続することができます。これはすべて TCA9548A I2C マルチプレクサチップのおかげです。このチップは時分割多重化技術を採用しており、同じコントローラーで同じアドレスの 8 台の I2C デバイスを制御することが可能です。アドレスの競合を心配する必要はもうありません。

特徴

  • 8 つの Grove I2C ポート
  • 同じ I2C アドレスを持つ複数のデバイスをサポート
  • 3.3V/5V システム対応

対応プラットフォーム

ArduinoRaspberry Pi

はじめに

Grove - 8 Channel I2C Hub に接続されたデバイスの I2C アドレスを読み取る

必要な材料

Seeeduino XIAOGrove ブレッドボードGrove - 8 Channel I2C Multiplexer/I2C Hub (TCA9548A)
今すぐ購入今すぐ購入今すぐ購入

また、最大8つの I2C デバイスが必要です。お好きな Grove I2C デバイスを見つけるには こちら をクリックしてください。 この例では、3つの I2C デバイスを使用します。

ハードウェア接続

I2C Hub を Seeeduino XIAO の I2C インターフェースに接続し、各 I2C デバイスを各ハブに接続します。

ソフトウェアコード

#include "TCA9548A.h"

// ソフトウェア I2C を使用する場合は、TCA9548A.h 内の define SOFTWAREWIRE をコメント解除してください。
#ifdef SOFTWAREWIRE
#include <SoftwareWIRE.h>
SoftwareWire myWIRE(3, 2);
TCA9548A<SoftwareWire> TCA;
#define WIRE myWIRE
#else
#include <Wire.h>
TCA9548A<TwoWire> TCA;
#define WIRE Wire
#endif

#define SERIAL Serial

void setup()
{
SERIAL.begin(115200);
while(!SERIAL){};

//WIRE.begin();
TCA.begin(WIRE);
// デフォルトではすべてのチャンネルが閉じています
//TCA.openAll();
//TCA.closeAll();

// 開きたいチャンネルを選択します。複数のチャンネルを開くことができます。
TCA.openChannel(TCA_CHANNEL_0); //TCA.closeChannel(TCA_CHANNEL_0);
TCA.openChannel(TCA_CHANNEL_1); //TCA.closeChannel(TCA_CHANNEL_1);
TCA.openChannel(TCA_CHANNEL_2); //TCA.closeChannel(TCA_CHANNEL_2);
TCA.openChannel(TCA_CHANNEL_3); //TCA.closeChannel(TCA_CHANNEL_3);
TCA.openChannel(TCA_CHANNEL_4); //TCA.closeChannel(TCA_CHANNEL_4);
TCA.openChannel(TCA_CHANNEL_5); //TCA.closeChannel(TCA_CHANNEL_5);
TCA.openChannel(TCA_CHANNEL_6); //TCA.closeChannel(TCA_CHANNEL_6);
TCA.openChannel(TCA_CHANNEL_7); //TCA.closeChannel(TCA_CHANNEL_7);

}

void loop()
{

uint8_t error, i2cAddress, devCount, unCount;

SERIAL.println("スキャン中...");

devCount = 0;
unCount = 0;
for(i2cAddress = 1; i2cAddress < 127; i2cAddress++ )
{
WIRE.beginTransmission(i2cAddress);
error = WIRE.endTransmission();

if (error == 0)
{
SERIAL.print("I2C デバイスが見つかりました: 0x");
if (i2cAddress<16) SERIAL.print("0");
SERIAL.println(i2cAddress,HEX);
devCount++;
}
else if (error==4)
{
SERIAL.print("不明なエラー: 0x");
if (i2cAddress<16) SERIAL.print("0");
SERIAL.println(i2cAddress,HEX);
unCount++;
}
}

if (devCount + unCount == 0)
SERIAL.println("I2C デバイスが見つかりませんでした\n");
else {
SERIAL.print(devCount);
SERIAL.print(" デバイスが見つかりました");
if (unCount > 0) {
SERIAL.print(", 不明なエラーが ");
SERIAL.print(unCount);
SERIAL.print(" アドレスで発生しました");
}
SERIAL.println();
}
SERIAL.println();
delay(1000);
}
  • ステップ 1 リソースからライブラリをダウンロードし、Arduino IDE に「zip」ライブラリを追加します。Arduino ライブラリのインストール方法 を参照してください。

  • ステップ 2 サンプルコードを見つけてボードにアップロードします。コードのアップロード方法 を参照してください。

  • ステップ 3 コードをアップロードした後、シリアルモニターから各デバイスの I2C アドレスが確認できます。アドレス 0x70 は I2C Hub の I2C アドレスです。

回路図オンラインビューア

リソース

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートを用意しております。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...