I’ve always been an Adafruit fan, gladly supporting their open source contributions by buying their products. But recently, I was very disappointed by the bad performance of their TCA9548A 1-to-8 I2C Expander.
I had bought it to be able to drive two identical SH1106 OLED displays without having to solder on one of the displays in order to give it a different I2C address.
First I ran an I2C scanner, and the result looked promising: all connected I2C devices were detected with their correct I2C address. But then, driving a single display only worked if it was connected to channel 0 of the expander. And even then, the display would often show errors.
Then I tried a DS3231 Real Time Clock, because there’s very little I2C traffic involved in reading the time from this simple and reliable chip. Even when connected to channel 0, setting the clock didn’t work well and readings of a correctly set clock were mostly messed up. Since this expander seemed unable to reliably drive a single device, there was no sense in trying to connect multiple devices.
I’ve tried several sketches on 5V Arduinos and 3.3V ESPs, using different sets of wires and with delays added after the channel select function. Nothing really worked, so either my copy of the expander is broken, or this board is not Lady Ada’s best fruit in the basket.
Since my earlier posts on the Adafruit forum never got answered, I will not even bother to ask them this time. Guess I’ll have to solder that 0 Ohm bridge on one of the SH1106 displays after all.