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: I2C communication problem

Part Number: TCA9548A
Other Parts Discussed in Thread: TPL1401

Tool/software:

Good afternoon,

I've been trying to initialize TCA9548A I2C Multiplexor, in my schematics I'm using only one I2C multiplexor to control TPL1401 digital potentiometer, I have 8 of them. My TCA9548A schematics look like this:

I'm using Renesas S7G2 microcontroller with e2_studio, so I'm using e2_studio HAL Libraries in order to initialize, write and read. Right now I'm using two different I2C devices, one I use it to communicate with a driver, and the other one to communicate with TCA9548A.

First driver has been already validated, open, write and read works fine in this driver. In the other hand when I try to communicate with TCA9548A I get an SSP error (SSP_ERR_ABORTED) which means during write process I2C device is being closed due to some kind of error. Since I have 8 TPL1401 digital potentiometers to control, I'm trying to validate things step by step. Right now I don't have any of the TPL1401 hanging on multiplexed I2C Channels, what I'm trying to do to begin with is sending TCA9548A Device Address, and after that, writing control register to select 1 of 4 available channels I have as you can see in schematics.

A2, A1 and A0 are grounded, which means my device address should be 1110 0000 (0xE0) when I'm trying to send TCA9548A a write petition.

Using oscilloscope on SDA and SDL I can see the right waveform, but I'm not sure any channel is being selected and when I try to read what channel is slected I don't get any answer.

I'm not sure my schematics are fully correct, this is my first time trying to start this driver, in the other hand I'm not sure I fully understand how to write/read from TCA9548A but my approach seems correct, send a write petition 0xE0 and then send control register to enable channel 0 (0x01).

What am I missing?

Thank you in advance,

  • An I²C device address has 7 bits. The TCA9548A's address is 1110000. I do not know whether your library expects this value to be specified as 0x70 or 0xE0.

  • This morning I found out that e2_studio SSP (configuration tool renesas uses to configure microcontroller pinout), when configuring I2C, there is a field that requires slave address. I was used to write manually slave address, but with this tool it generates a BSP that already controls this. So adding 0x70 to Slave Address field, the error I was receiving disapeared. Now I'll debug the rest to ensure my code is working properly.

    Thank you for your time.