Hello,
The RFID 2 unit works fine when connected directly to M5Core2.
Now, I connect the I2C hub to the M5Core 2 and connect the RFID 2 device to channel 0 of the I2C hub.
I run the following programs. I would assume that the RFID 2 device would show with address 0x28. But it does not, it only gives 0X70 which is the I2C device itself. What am i missing here?
#include <M5Core2.h>
#include "ClosedCube_TCA9548A.h"
#define FRONT 2
#define X_LOCAL 100
#define Y_LOCAL 35
#define X_OFFSET 160
#define Y_OFFSET 34
#define PaHub_I2C_ADDRESS 0x70
ClosedCube::Wired::TCA9548A tca9548a;
void setup() {
M5.begin();
//M5.Power.begin();
//wire.begin();
tca9548a.address(PaHub_I2C_ADDRESS); // Set the I2C address. 设置I2C地址
M5.Lcd.setTextFont(4);
M5.Lcd.setCursor(70, 0, 4);
M5.Lcd.setTextColor(YELLOW, TFT_BLACK);
M5.Lcd.println(("PaHUB Example"));
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);
}
void loop() {
uint8_t returnCode = 0;
uint8_t address;
for (uint8_t channel = 0; channel < TCA9548A_MAX_CHANNELS; channel++) {
M5.Lcd.setCursor(X_LOCAL, Y_LOCAL + Y_OFFSET * channel, FRONT);
M5.Lcd.printf(
" ");
M5.Lcd.setCursor(X_LOCAL, Y_LOCAL + Y_OFFSET * channel, FRONT);
M5.Lcd.printf("CH%d : ", channel);
returnCode = tca9548a.selectChannel(channel);
if (returnCode == 0) {
for (address = 0x01; address < 0x7F; address++) {
Wire.beginTransmission(address);
returnCode = Wire.endTransmission();
if (returnCode == 0) {
Serial.print("I2C device = ");
M5.Lcd.printf("0X%X ", address);
}
}
}
delay(200);
}
}