본문 바로가기

메이크 프로젝트/부품 리뷰

[부품] TCA954X i2c Multiplexer 멀티플렉서

728x90
반응형

TCA954X i2c Multiplexer 멀티플렉서

Summary

  • I2C Multiplexer TCA954X 동작에 대해서 간단히 정리한다.

Texas Instruments TCA954X 멀티플렉서

  • TCA954X 는 Texas Instruments (텍사스 인스트루먼트) 에서 만든 저전압 n채널 I2C Multiplexer 이다.
  • TCA954X 의 끝자리 품번에 따라서 channel 수가 결정된다.

Example

I2C Multiplexer 의 용도를 빠르게 이해하기 위해서, 다음과 같은 예제를 살펴본다. MCU I2C 포트 하나에 4 개의 I2C device 가 연결되어있다.

TCA954X 예제 (출처 : 하단첨부 Youtube link)

I2C를 통해 BME280 로부터 읽은 온도, 습도 및 대기압을 3개 I2C OLED Display 에 출력하는 예제로, Micom 과 TCA954X 가 연결된 i2c 채널은 1개이다.

TCA954X port i2c device
ch 1 BMP280
ch 2 OLED LCD SSD1306
ch 6 OLED LCD SSD1306
ch 7 OLED LCD SSD1306

TCA9548A 를 이용한 예제 코드 (출처 : 하단첨부 Youtube link)

//==============================
//I2C Mutiplexing using TCA9548A
//==============================
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_SSD1306.h>
//---------------------------------------------------------- 
Adafruit_SSD1306 display(128, 64, &Wire, 4);
Adafruit_BME280 bme;
float temp, hum, pressure;
//---------------------------------------------------------- 
void TCA9548A(uint8_t bus)
{
  Wire.beginTransmission(0x70);
  Wire.write(1 << bus);
  Wire.endTransmission();
}
//=============================================================================
void setup()
{
  TCA9548A(1);
  bme.begin(0x76, &Wire);
    
  TCA9548A(2);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();

  TCA9548A(6);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  
  TCA9548A(7);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}
//============================================================================= 
void loop()
{
  TCA9548A(1);
  temp = bme.readTemperature();
  hum = bme.readHumidity();
  pressure = bme.seaLevelForAltitude(195.0, bme.readPressure())/100.0;
  //-------------------------------------------------------------------------
  TCA9548A(2);
  display.setTextColor(WHITE); display.clearDisplay();
  display.setTextSize(2); display.setCursor(30,0); display.print("Temp C");
  display.setTextSize(3); display.setCursor(20,30);
  display.print(temp);
  display.display();
  //-------------------------------------------------------------------------
  TCA9548A(6);
  display.setTextColor(WHITE); display.clearDisplay();
  display.setTextSize(2); display.setCursor(0,0); display.print("Humidity %");
  display.setTextSize(3); display.setCursor(20,30);
  display.print(hum);
  display.display();
  //-------------------------------------------------------------------------
  TCA9548A(7);
  display.setTextColor(WHITE); display.clearDisplay();
  display.setTextSize(2); display.setCursor(5,0); display.print("Pressr hPa");
  display.setTextSize(3); display.setCursor(0,30);
  display.print(pressure);
  display.display();
  
  delay(1000);
}

TCA954X 관련 자료

  • https://www.youtube.com/watch?v=HLd_ZyfEFGc
반응형