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: Can't read correct register value after sending cmd

Part Number: TCA6408A


Tool/software:

after reset, I read registers 0x1 and 0x3 and the values ​​are 0x1 and 0x0. those are different from the TCA6408A datasheet.
and even I set P4 high (measure by the pad, it actually high), the value of register 0x3 still 0x1.
is there any idea of this phenomenon?

(we don't use /INT pin, just let it pull up to 1.8V directly.)

  • Hi Richard,

    How are you reading from the I/O Expander? Do you have a scope trace of the SDA & SCL signals when reading from the device? 

    Regards,

    Tyler

  • Hi Tyler,

    I didn’t use an oscilloscope to measure the I2C waveform; I simply used a multimeter to check whether the output levels of the IOs on the IO expander matched the H-L levels I had configured.

    Any idea about my problems?

    Thanks

  • This is I2C waveform for your reference, please help to check it. Thanks

  • Hi Richard,

    The waveform looks correct. You are reading data from the configuration register at 0x03. It is 0x00 in data. After a power reset, it should be 0xFF. 

    What does your power cycle waveform looking like? Can we confirm you are following the correct power sequencing? 

    Finally, does an A-B-A swap test confirm that the issue follows the IC? Take a known working board, and replace the TCA6408A with the suspect unit. Does the board start failing? 

    Regards,

    Tyler

  • Hi Tyler,

    Could you please help confirm whether the section in the middle (highlighted in the red box) is okay?

    thanks.

  • Hi Richard,

    We usually recommend a repeated start so that the MCU does not lose control of the read operation in circumstances of multi-master environments. 

    A stop condition, followed by a start condition should still work. The command byte (pointer byte) is already set in the first half of the transaction. The second have is sending the device address and read bit of which data should be read from the selected command byte which is the configuration register at 0x03. 

    Can we confirm on power cycling? 

    You could try using a repeated start condition to see if that changes the outcome, I don't think this will change the outcome. 

    Regards,

    Tyler

  • Hi Tyler, thanks.

    Can you teach me how to confirm on power cycling? actually I don't really know what is "power cycling" means.

    Thanks

  • Hi Richard,

    For sure. I am looking at figure 10-1 mostly. 

    This is approximately the structure of what the VCC pin voltage should look like when resetting the power on the device. 

    Are you resetting the TCA6408A through the /RESET pin or are you toggling the voltage on VCC for a power-reset? 

    If you are resetting through the pin, can you scope the /RESET pin while you toggle? 

    If you are resetting through the supply pin VCC, can you scope VCC pin while you power cycle? 

    Regards,

    Tyler

  • Thank you. I will proceed with the measurements next week.
    By the way, may I ask—does that mean an incorrect power cycle or reset sequence could potentially cause the issue we’re seeing?

  • Hi Rich,

    Given the datasheet default values for the configuration register, you should be reading 0xFF instead of 0x00. 

    If you were to set the config register to 0x00 - all outputs, then conduct a /reset, you should see the register go back to 0xFF upon the read command. 

    If an incorrect power cycle occurs on the VCC pin, you may think that you are resetting the device, but in reality, the device never reset because it had improper power-on-reset. 

    This could also occur on the /RESET pin. It is possible that when you toggle /RESET, it does not go below a VIL. You would have to verify both of these tests on a scope to see how the voltage is behaving on the /RESET and VCC pins when toggling them. 

    Regards,

    Tyler

  • Hi Tyler,

    May I ask — in my current circuit, both VCCP and VCCI are connected to the same 1.8 V rail, meaning their power-up timing will be exactly the same. Could this cause any potential issues?
    If so, would it be possible to recover by toggling /RST?

    On the other hand, if the /INT function is not required, can it be left floating, or does it still need a pull-up resistor?

  • Hi Richard,

    A potential problem of SDA being stuck LOW is only possible if VCCI comes up before VCCP. 

    If SDA gets stuck LOW, you would need to cycle the VCCP and VCCI pins in the correct order. 

    /INT can be left floating if unused. No need for PU resistor. 

    Regards,

    Tyler