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.

TCA6408A: TCA6408A can't be recognized by CPU

Part Number: TCA6408A

Hi there:

I'm helping customer to check an question about non-acknowledge with TCA6408A

the following is the relative information we've collected

1. we've try to modify the pullup resistor into 10K ohm, still no response

2. Do we have other suggestion for customer? 

schematic 

&

comment snapshot 

waveform measured 

  • Hi Kay,

    Can you please confirm that the GPIO58 and GPIO59 signals are configured to be open-drain IOs? This is needed for I2C communication to work. Also, could you try pulling the RESET pin low for at least 4 ns prior to attempting to communicate with the device? If that fixes the problem then it may point to issues related to the I2C state machine (for instance, if it gets out of sync with the master due to receiving extra clock edges at some point), Along similar lines, it would be good to confirm that you are following the power-on requirements details in section 10.1 of the datasheet.

    Regards,
    Max
  • Hey Kay,

    I believe the problem is that you are addressing our device and then sending a read bit.

    From the bit analysis I see:

    1) 0x010 0000 (our address)

    2) bit 8 is 1 meaning a read

    3) last bit is a 1 meaning an NACK

    Our I/O expander actually will NACK if you sent a read bit without doing a write previously. Please refer to this diagram in the datasheet:

    Notice inorder to do a proper read, you must:

    1) send the device address with a write bit

    2) send the address you want to read from (think of this as adjusting a pointer in a software sense)

    3) either initiate a stop condition then a start condition or if you have multiple masters on the bus, initiate a repeat start

    4) send the device address again but this time send a read bit instead

    5) from this point on the IO expander will become the transmitter (on data line, master still needs to send clock pulses)

    6) master should ACK to receive more bytes or NACK to stop receiving bytes

    I believe if you want to verify this device works, you should just send a write bit after the address to receive your ACK.

    Thanks,

    -Bobby

  • Hi Bobby:

    Thanks again!

    If we'd like to purpose an solution behavior with address firstly then send the read/write command after.

    Do we have the similar solution? (or pin-2-pin with TCA6408A would be prefer) 

  • Hey Kay,

    Unfortunately I was not able to find an 8 bit I/O expander (filtering for TCA only) which allows for a read after the address w/o doing a write and control register address first.

    -Bobby