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.

PCF8574A: I2C I/O chip always sending a NACK

Part Number: PCF8574A

I have the PCF8574A chip mounted on a custom bare board. There is an I2C connector, circuit to generate 5V for the I2C I/O chip. The slave address is 0x26. When I try a write and a read I2C transaction, I am getting a NACK back. I tried two different eval boards, I2C write using a simple I2C transaction with EK TM4C1294 XL and an I2C read with an example program on a AVR128DA48 eval board. The pcf8574a part has no pull up resistors on address or I2C lines. The TI eval board needed pullups on the I2C lines, but the AVR DA does not. I appreciate some pointers on what I can be trying.

Thanks,

Priya

 

I2C Write

  • Hi Priya,

    What is connected to the A0-2 ports on the PCF device? Also make sure that the SDA, SCL, and INT pins are pulled high with a pull up resistor. My initial guess is that the PCF device is not configured to receive the address you are sending.

    The address of the PCF device is 0111(A2)(A1)(A0), so by pulling the A ports high or low you can change the address of the device.

    Let me know if you have any further questions.

    Best,

    Chris

  • Chris,

    Please see the address in the scope picture for I2C write. The slave address is 110. On pins A2 and A1, I have a 0 ohm resistor to Vcc. On A0, I have a 0 ohm resistor to GND. The PCB does not have any connection on the interrupt, SCL and SDA pins for this part. The frimware uses 0x26 as the device address. It looks like the address lines are a match for this part. Do you see otherwise? I still don't understand the NACK. 

    The existing production PCB uses the NXP equivalent for this part for I2C read only and this works ok.

    Thanks,

    Priya

  • Hi Priya,

    I saw that the address you are writing is 0100110 which is 0x26. Can you try writing 0111110 which is 0x3E. Including the write bit the 8-bit address should be 0x7C or 01111100.

    Let me know if that works.

    Best,

    Chris

  • That fixed the ACK. IS there anything in the datasheet that indicates this is the device address to use? I appreciate a page number or reference. Thank you so much.

    Priya

  • Priya,

    You're very welcome. Page 12, section 8.3.2, explains the address of the responder (formally slave) device. Page 13, section 8.3.3, shows a table of what the address should be based on what you set A0-2 to.

    Best,

    Chris