TCA9548A 是低压 8 通道 I2C开关,工作电压范围1.65V 至 5.5V,本例中适配ESP8266没有任何问题。
内部构成框图:
典型的应用电路:
TCA9548A支持硬件复位的,由RESET引脚控制,实际测试时,被悬空了,没有接入ESP8266。
A0~A2用来设置地址,实际测试时,全部接地了。
地址的配置:
本例中使用的TCA9648的模块及其电路:
Arduino的程序:
/* * ESP8266通过TCA9548驱动两个OLED */ #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include "TCA9548A.h" #define TCA9548_ADDR 0x70 #define TCA9548_RESET 16 #define OLED_ADDR 0x3C TCA9548A I2CMux; // 接线备注:SCL(GPIO5---D1), SDA(GPIO4---D2) // 分辨率: 128 * 32 像素单位 // 使用Wire默认总线:SCL(D1) - GPIO5 ; SDA(D2) - GPIO4 Adafruit_SSD1306 oled(128, 32, &Wire, -1); uint8_t cnt = 0; void setup() { // 初始化串口 Serial.begin(115200); Serial.println(); Serial.println("Test TCA9548A."); pinMode(TCA9548_RESET, OUTPUT); I2CMux.begin(Wire); I2CMux.closeAll(); // 选择第一个I2C口 I2CMux.openChannel(0); oled.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); // 白色字体 oled.setTextColor(WHITE); // 清屏 oled.clearDisplay(); // 设置字体大小 oled.setTextSize(1); // 设置显示位置 oled.setCursor(35, 5); // 显示的文字 oled.println("OLED0"); // 开显示 oled.display(); // 关闭通道 I2CMux.closeChannel(0); // 选择第一个I2C口 I2CMux.openChannel(1); oled.begin(SSD1306_SWITCHCAPVCC,0x3C); oled.setTextColor(WHITE);//开像素点发光 oled.clearDisplay();//清屏 oled.setTextSize(2);//设置字体大小 oled.setCursor(35, 5);//设置显示位置 oled.println("OLED1"); oled.display(); // 开显示 I2CMux.closeChannel(1); } void loop() {}
测试效果: