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: Default GPIO Pin State On Power Up Is Unclear In The Datasheet - Is it input, output, what is pull-up value (if any), is it a floating high-Z? None of this is indicated in the datasheet.

Part Number: PCF8574A
Other Parts Discussed in Thread: TCA9554A, TCA9534A

Hello, the default GPIO pin state on power up is unclear in the datasheet. Is it input, output, what is pull-up value (if any), is it a floating high-Z? None of this is indicated in the datasheet. Thanks and any help is greatly appreciated!

  • Hey Matt,

    Upon start-up/reset, it should be an input with high Z.

    This looks like something we need to update to this datasheet, I'll put it on our to do list.

    Thanks,
    -Bobby
  • Hi Bobby, thanks for the clarification, that was just what I needed to know!

  • Bobby, I do not think this is the case after testing today. I put a 180K pull-down resistor on the GPIO. On power up, it is at 3.3V still. This leads me to believe that there is some kind of internal pull-up or something? The problem is that I have the pin tied to a mosfet that is controlling a relay... so at startup the relay is activating when it shouldn't.

  • Hey Matt,

    I just spoke with another engineer about this. We still believe the default condition is an Input, however it seems there is an internal 100uA current source, pulling the pin up to Vcc.

    "The problem is that I have the pin tied to a mosfet that is controlling a relay... so at startup the relay is activating when it shouldn't."

    Is it possible for you to switch out this NFET and replace it with a PFET?

    Another option may be to swap this device out with one of our newer devices. We may have a pin to pin replacement part in the case you already fabricated the PCB. The PCF8574A is an old device and the current source default state is a bit strange to have. Our newer devices don't use a current source as default but rather has a floating high Z default state.

    -Bobby

  • I have since redesigned our PCB so that the GPIOs of the PCF8574A go into a TTL hex inverter (74HC04D), then go into a ULN2003AD relay driver (basically a bank of transistors to activate the ground of a relay). Does this seem like a legitimate method of accomplishing this? I have not submitted the new PCBs yet, but will tomorrow.

    However, in the meantime, we are trying to get our current PCBs to work since we already have them. What is the pin to pin replacement part?
  • Matt,

    "I have since redesigned our PCB so that the GPIOs of the PCF8574A go into a TTL hex inverter (74HC04D), then go into a ULN2003AD relay driver (basically a bank of transistors to activate the ground of a relay). Does this seem like a legitimate method of accomplishing this?"

    I don't have much experience on what you are designing here so I can't comment on this. I am curious though, why do you need to have a hex inverter between the GPIO expander and the FET to the relay? Can't you directly control the FET with the GPIO's of PCF8574A.

    "What is the pin to pin replacement part?"
    Can you tell me the package and pin count of your PCF8574A? Once I know this I can look to see if we have any.

    -Bobby
  • To answer your first question: You mention directly controlling the FET with the GPIO... this is exactly how we originally designed our PCBs and it doesn't work. It doesn't work because on power up (before the microcontroller gets a chance to even communicate with the PCF8574A) the PCF8574A pulls the pin high, which activates the relay temporarily. If we put in a pull-down resistor, then the PCF8574A cannot source enough current to even activate a darlington transistor or mosfet.

    So in an attempt to get around the bizarre power up state, if it defaults to high, this will lead to a low after going through an inverter, and will keep a mosfet/transistor off. Setting the GPIO low will activate, and back high to deactivate.

    We are using the SO16 package (7.5mm width) - 16 pins. Thanks again for your help.

  • Matt,

    Please take a look at TCA9554A. It should be pin to pin however it has an internal 100k internal pull up resistor.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    TCA9534A should also be pin 2 pin with your original device but instead, should be floating high Z. Default start up is defined as all inputs (float high Z)

    I've highlighted start up conditions below for reference:

    Because this GPIO is left floating and you are connecting to a FET gate, make sure you tie a resistor to the gate/GPIO to GND (assuming NFET)

    I hope this helps!

    -Bobby