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.
I am using the PCA9557 SMBus chip, and on reading the data sheet, it looks like every transfer requires 3 bytes instead of the normal 2. Is this correct, or do you just have to send a configuration byte at startup, and from then on it follows the SMBus convention of 2 bytes per transfer in both directions?
Bob Montgomery
Hi Bob,
You are correct for PCA9557. I2C/SMBus slave address, register address (with R/W =0), and then again Slave address (with R/W=1) needs to be sent first in the I2C transaction to read a register.
We have the capbility in the 16-bit IO expanders (like TCA9539) to read the two pair registers (e.g. 0 and 1, 2 and 3, etc.) together (auto-increment feature) .
Thanks,
Rajan
If I write a byte to a PCA9557, how do I know if it thought it was a config byte or output data byte? And how can I read the config byte? Unless I am missing something, this 'improvement' made the device very hard to understand and use, and does not seem to conform to the SMBus standard anymore. Is there an Ap Note on how to use it. My breadboard worked fine using PCF8574 chips, but they are in the SOIC-16 wide package - I need the narrow SOIC-16. Does TI make another SMBus chip without the config register (similar to the PCF8574 I was using in the breadboard), in the narrow SOIC-16 package?
I have a board with one PCA9557 wired for address 1. I can now write a byte to tthe Output register, and get an ACK after each byte sent (0x32 ACK 0x01 ACK 0xFF ACK). I am having a problem with reading a byte from the Input regsister. I send 0x32 ACK 0x00 ACK 0x33 and don't get an ACK. Am I doing something wrong?
Bob