Need help PCF8574 HIGH level output voltage only 0.48V

hello!i have one pcf8574 expander,and this is schematic diagram:
微信截图_20230111170518
and when it work, i want P3 output high level, but the P3 voltage only 0.48v, when P3 output low level, the P3 voltage is 0V, Is this normal? I don’t think it should be that way. why is the high level voltage voltage not greater than or equal to the VDD voltage? Thank you for any help
this is code, and PCF8574.h from [GitHub - RobTillaart/PCF8574: Arduino library for PCF8574 - I2C IO expander]

#include <Arduino.h>
#include "PCF8574.h"
PCF8574 PCF_20(0x20); 
void setup()
{
  Serial.begin(115200);
  PCF_20.begin();
  uint8_t value = PCF_20.read8();
  Serial.print("#20:\t");
  Serial.println(value);
  
}

void loop()
{
  PCF_20.write(3, HIGH);
  Serial.print("P3 on:\t");
  delay(2000);
  PCF_20.write(3, LOW);
  Serial.print("P3 off:\t");
  delay(2000);
}

Have you measured that it gets 3.3V between VDD and VSS with a multimeter?

Have you checked for all pins shorts on pins to GND (except VSS)?

hello maxgerhardt, between VDD and VSS voltage is 3.3v, this code can control pcf8574, The P3 pin voltage switches between 0V and 0.48V at an interval of 2 seconds,
However, when PCF_20. write(3, HIGH); is executed, the P3 pin is high level and the voltage is 0.48V, not 3.3v

What about this question ^?

Is any other hardware connected to P3 of the PCF8574, like an LED or something?

Hello, The P3 pin is only connected to a buzzer TMB09A03. TMB09A03 can be driven by 3V voltage, but the output voltage of the P3 pin is only 0.48V when setting high level, which is not enough to drive the buzzer of TMB09A03
And PCF8574 other pins have been detected using a multimeter and appear to have no problems, , , ,

But when I read the product description of the buzzer e.g. here

and look into the datasheet of the PCF8574

Then when outputting a high-level, the allowed sourced current in push-pull mode (no pullup activated) is only 0.3mA (I_OH), when outputting a low-level it is a maximum of 25mA sinking current (I_OL). However, both values are less than the maximum current consumption of the buzzer, meaning you cannot drive a buzzer with the PCF8574 chip.

So it looks to me as if you have an electrical problem, trying to source a lot more current (since you set output to HIGH) than the allowed measly 0.3mA. Trying to source more current than allowed makes the output voltage collapse.

You could solve this by only having the PCF8574 only switch on a transistor that can then source more current.

You can also see that in TI’s applicaiton note, the chip is always use to SINK current, i.e. output LOW where it can sink 25mA, or 50mA when using two chips together, but not to SOURCE a lot of current which would happen when you output HIGH.

and

support my claims about low sourcing currents.

hello, thanks, but the P3 pin voltage only 0.48V when high level, That’s the main problem, Of course, the current is not enough to drive is also a problem, thanks for the correction,
and i don’t konw When the PCF8574 pin is high level, is it normal that the output voltage is only 0.48V, There is no description of IO output voltage when I read the document

Even when the buzzer is not connected to it? Can you remove the buzzer from P3 and check the HIGH voltage again?

Of course it could also be that if you had the buzzer connected and tried to source >0.3mA, the pin is already damaged.

Oh, y … the buzzer has been damaged. I connected a PCF8574 separately with the flying wire for testing and everything was normal, but the high level on the PCB was still only 0.48V. When I removed the buzzer, everything returned to normal,hell,No doubt I had blundered again
thanks a lot