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: TCA9548A

Part Number: TCA9548A
Other Parts Discussed in Thread: BQ25756

Tool/software:

Issue to switch channels one by one using TCA9548A with address 0x77 connected with 4 other I2C devices (BQ25756).


1st time channel-1 selected as 0x01 data is properly write read from BQ-1 device. But when channel-2 selected 0x02, data was not properly read write and so on.


Also, when any BQ device is not connected on a particular channel, the TCA9548A communicates with channels and responds with ACK. 
Instead, TCA9548A should respond NACK in that condition.

Regards,

Priyanka

  • Please show the schematic, and oscilloscope traces of the wrong I²C accesses.


  • 1st image is about schematic, & 2nd image is scope waveforms

    In waveform, 1st channel completely communicates with the BQ device, as I connected the BQ on the 1st channel.
     
    But I am not connecting the rest of BQ's on other channels, so why does TCA still respond with channel ID and 6B address for 0x02 and 0x04 channels? 

  • The TCA9548A creates a direct electrical connection to all enabled channels, and does no further care or affect any I²C traffic that goes through it.

    You can always change the TCA9548A's configuration register.

    Those write attempts to address 6Bh are NACKed, i.e., no device answers.

    What exactly do you think is wrong with these waveforms?

  • Exactly what I thought is that when no device is connected on channel 2/3/4, then why is the I2C bus not showing NACK/error? 
    I configure all channels with address like where channelID=0;

    Write_ListData[ID_WRITE_CHANNEL_28].writeData.packetbyte[CHANNEL_BYTE] = 1 << channelID;

    "Does no further care or affect any I²C traffic that goes through it." 

    You said that TCA always makes a high I2C bus? Is my waveform correct, or when I switch the trigger channel in scope it is running properly?

  • The waveform shows that after writing 02h, all the write attempts to 6Bh are NACKed.

  • If after 6B the waveform shows NACK, then how does TCA know that its address is 6B? TCA may show random addresses or garbage data on the bus.
    Only the 0x01 channel has a connection to the BQ (0x6b) address. 0x02 and 0x04 don't have any address.

  • The TCA does not know the addresses of other devices. The SDx/SCx pins of all enabled channels are connected directly to the SDA/SCL pins. After writing 02h to the configuration register, the SD1/SC1 pins are connected to SDA/SCL, and the write attempt to 6Bh shows up on those pins. No device reacts to this, so the SD1/SDA line is in the default state (high) when the ACK bit would be expected.

  • How can I solve in programming or using hardware that TCA is giving NACK whenever any channel is damaged?

    So that I'll give information to controller which particular channel is not working.

  • When a channel is damaged, the devices will not react, resulting in a NACK. You do not have to change the hardware, and the NACK is an error that your software should handle anyway.