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.

PCA9544A: PCA9544ARGYR doesn't responde I2C READ command

Part Number: PCA9544A

Hi, 

There is a circuit where PCA9544ARGYR is being used and after testing with three different units in two different boards (2 units in one pcb, one unit in the second pcb) the conclusion is that somehow there is a point that is missing. I would like to get a confirmation in terms of what's the bare configuration required to have this expander to work? 

  • All the interrupts are not floating. 
  • There are 2.2 k Ohm pull up resistor on I2C Master but. 
  • Vdpum = 3.3 V

An oscilloscope have been used to test that data was send over the right bus (within the circuit there more than one i2c) and that the integrity of the signal is acceptable meaning that the logic levels to determine a logic one or zero are within range. 

The problem is that once all of these is assembled, the following command is issued: 

sudo i2cdetect -r -y <i2c-bus>

There is no response from the i2c expander. 

Any idea of what may be happening? 

  • Please show the schematic and the oscilloscope trace.

  • Hi Kiara,

    The PCA9544A device requires a write to occur to set the pointer internal to the device for it to properly ACK/respond to a read command (like I2Cdetect). Unfortunately our device will not respond to the detect function until you set the register you wish to read from using a write command first.

    -Bobby

  • Hi Bobby, thanks for getting back. 

    For better understanding of the setup in the board, here is the schematic concerning to the I2C expander. 

    There are some slightly changes on it, R{109,110} which are the pull up resistors the right value is 2.2 kOhm instead 47 kOhm. 

    Also, R{366,119,120} are 0 Ohm resistors, although I have place the 10 kOhm but didn't get any success.

    Bobby, based on your suggestion, I issued the following command to set the internal pointer in the right address: 

    i2cset -y 2 0x70 0x04 0x04

    But sadly, the expander doesn't ACK the transaction. 

    Here is the oscilloscope snapshot that measures the rise time of CAM_I2C_SCL (Blue sky color). The I2C mode used is fast, then rise time it's within the maximum limits. In this case, 230 ns. 

    Here is a broader image of the I2C transaction. 

    CAM_I2C_SCL (Blue sky color).

    CAM_I2C_SDA (Dark blue color). 

    There are some little undershoots though over the CAM_I2C_SCL. As far as I know, this can become a problem only if the undershoot is large enough.

    As a side note, this is not the only device that it's attached to the bus. There is an extra device and I can communicate with that device, but regarding the expander, there is no success at this stage. 

    Maybe I'm misinterpret how to write to control register?

  • Looks like you have the SDA and SCL lines swapped in the schematic. Are you able to flip them? Currently our device is seeing the SDA signal on the clock line and the data signal on the clock. 

    -Bobby

  • You were right, I have been struggling with this issue and the answer was right in front of me just I couldn't see it. An extra pair of eyes was needed. 

    Now, the device is able to ACK successfully. 

    Thanks Bobby.