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.

Linux/TCA9554: TCA9554A

Part Number: TCA9554

Tool/software: Linux

Hi,

I am writing linux device driver for tca9554a i2c gpio expander.

I am using i2c_smbus_read_byte_data to read data from device and i2c_smbus_write_byte_data to write data.

I am able to read the data properly, but i am not able to write data. Write command does not give any error(return 0 meaning successful)

but when i see data dump using userspace i2cdump tool, I do not see contents of registers being written.

Anyone has any clue on this?

Thanks,

Prathamesh

  • Hi Prathamesh,

    Are you able to see write operations take effect (e.g., can you configured the ports as outputs and toggle their state) but just can't read the register values back, or are the writes not doing anything at all? During the write operation, do you initiate with a start condition, send an address byte (with LSB values corresponding to the hardware configuration), and then receive an acknowledge (ninth bit pulled low) from the device? And, after that do you send a command byte (five 0s, one bit for R/W indication, and two bits for register selection), receive an ACK, then write the data? And, does the frame (after the final ACK) terminate with a stop condition? It may be helpful if we can review the SDA and SCL waveforms at the expander's input to see if we can identify any potential problems.

    Regards,
    Max
  • Prathamesh,

    Were you able to resolve this issue?

    Regards,
    Max