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() {}测试效果:

我要赚赏金
