This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TCA9548A: Determining cause of SDA low

Part Number: TCA9548A

I am trying to use a TCA9548A 8-Channel I2C Switch to connect eight identical sensors with an ESP32-WROOM-32D controller.

The sensors are Goertek SPL06-007 devices which I believe to be based on the Infineon DPS310.  The datasheet is at https://datasheet.lcsc.com/szlcsc/1912111437_Goertek-SPL06-007_C233787.pdf

I can communicate with the TCA9548A and recognize it at address #70. (I have 3.3K pull-ups on SDA and SCL between the ESP32 and the switch.)

However, as soon as I write to the register at #70 to open a channel, SDA goes low and stays there and the bus reports busy.

With all channels closed on the sensor side of the switch I see that SC0-7 are at 3.25V but SD0-7 are at around 0.4V.

I have tried 10K pullups, 3.3K pullups and a 2.5K pullup (although in this case only on the channel I was opening) and the result is the same in each case.

The spec for the sensor states that the minimum pull-up resistor value is 5K, so going even lower seems pointless.

Do you have any suggestions on what else I should be looking at?

  • Hey Lain,

    Can you get an o-scope shot of the main SDA/SCL lines and the SDA pin of the secondary channel that you are trying to talk? I'd like to see the transaction to make sure our device isn't getting the I2C bus stuck (and also check if the downstream slave device is the one sticking the bus).

    Thanks,

    -Bobby

  • The captures below show as you requested the main SDA/SCL lines on Channels 1 & 2 and the SDA line on the secondary channel on CH3.

  • Hey Iain,

    The I2C transaction looks okay to me. Based on the ACK's on the 9th clock cycle, it doesn't seem like the TCA9548A is the one responsible for the stuck bus since the VoL levels are different when comparing the 9th ACKs to the stuck bus VoL. Your CH3 SDA looks like its stuck low prior to the I2C channel being enabled. Does the "ESP32-WROOM-32D controller." have some kind of reset pin? It looks like it may have powered up incorrectly and had a bad POR (power on reset). We may want to see if the ESP32 has a requirement for their Vcc ramp up condition.

    -Bobby