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.

TCA9543A - Address pins usage

Other Parts Discussed in Thread: TCA9543A

Hello,

I am using TCA9543A part and I am a bit unclear about the usage of the pins A0 and A1. I understand that two slave devices get connected in a multiplexed fashion through two channels and they can be selected by control register. I wonder how this resolves the addressing issue. Since there are two address pins A0 and A1, there can be 4 possible address combinations. How are these addresses assigned to slave devices?

For example, if A0 is grounded and A1 is pulled HIGH, how is this specific address 1110010X assigned to a specific slave? Does this even work this way or am I totally wrong? Please explain how to use the pins A0 and A1.

Thanks all,

Santhosh. 

  • Hello Raju,

    Thank you for the question.

    Allow me to explain:

    The TCA9543A is an I2C based switch like you are aware.

    The use of the address pins is to set the internal I2C slave address. The TCA9543A is an I2C slave device, and has an address of its own. This is because the host must tell the I2C switch's internal slave device which channels to connect. Perhaps this will make more sense with this internal schematic example:

    What this means is that the A0 and A1 pins on the switch are for setting the switch's internal address. It is important that the I2C switch's address be different from any slaves on the i2c bus.

    So if you tie both the A0 and A1 pins to ground, you are setting the internal switch's I2C address (7-bit right justified) 0x70. If you set A0 to VCC and A1 to ground, then the switch's address becomes 0x71.

    By default, the I2C switch will have no channels connected to the main bus, the master must tell the switch which channels to connect.


    If we assume you tie both A0 and A1 to ground, then the switch's address is 0x70 (again, make sure no down stream slaves have the same address, this must be unique on the bus!). Let's then assume you want to connect channel 0 to the master, and then connect to a slave with address 0x01 (making this up for example sake), the following procedure you should do:

    1. Master sends <Start>, <0xE0 (Slave address + Write bit)>, <0x01>, <STOP> - This tells the switch to connect channel 0. You must end it with a STOP, because the switch will connect the channel once a STOP bit is sent.
    2. Master can now connect to the slave like normal: <Start>, 0x03 (Slave address + read bit), <data from sensor>, <Stop>

    Does this make more sense?