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: Cannot control GPIO H or L

Part Number: TCA6408A

Our project use TCA6408A 8 GPIO all as output to control Power chip enable, due to TCA6408A output is push-pull, GPIO no PU or PD.

We tried to remove terminal power chip, just connector left, and remove source I2C, just use Aardvark to do R/W. No matter value of all 1s (0xFF) or 0s (0x00), output is not change.

attachment is our design, please help to check, or did you have any idea, please tell us, thanks.

Y22Y2_IO EXPANDER TCA6408ARSVR.pdf

  • Hi Van,

    Do you have the RESET pin set to HIGH on the TCA6408A prior to communication?

    Are you modifying the configuration register prior to writing to the output registers?

    Are you receiving any ACKs from the device when you write to it?

    It looks like you have an I2C switch before the IO expanders, are you writing to the I2C switch prior to enable the correct channel before writing to the TCA6408A?

    Do you have scopeshots of the communication attempts to the device? SDA/SCL

    The schematic you provided didn't show any issues: pinout matches the datasheet, decoupling caps present, SDA/SCL net names match pinout names.

    -Bobby

  • RESET pin is HIGH prior to communication.

    About I2C, we have check waveform have response when Aardvark R/W, and result has been changed when read value after write data

    We directly connect Aardvark at TCA6408A's I2C after I2C switch

    command as below, configuration register is 01, output registers is FF or 00 right? (address is 0x20, schematics is wrong)

    waveform is

    read_0x20_01FF.png

    read_0x20_01FF.png

    read_0x20_0100.png

    write_0x20_01FF.png

    write_0x20_0100.png

  • Van,

    The configuration register is 0x03h. After power up, the device configuration register is a default 0xFFh which makes the p-ports all input pins. You need to write 0x00h into register 0x03h inorder to set the pins to an output. After that you should be able to toggle the p-ports by writing to 0x01h.

    Can you verify you are writing to 0x03h? 

    -Bobby

  • It works!
    Thank you very much