I’m using a DMP2045U P-channel MOSFET as a high-side switch to control 3.3V power to an ESP32-S3-WROOM module. The gate is driven by an STM32.

Connections
-
Source → 3.3V (measured 3.289V)
-
Drain → ESP32 3V3 pin
-
Gate → STM32 GPIO
-
10k pull-up from gate to 3.3V
Measurements
When gate is LOW (~0.009V):
-
Source = 3.289V
-
Gate = 0.009V
-
Drain = 3.289V
-
Vgs ≈ −3.28V → MOSFET turns fully ON (as expected)
When gate is HIGH (3.287V):
-
Source = 3.289V
-
Gate = 3.287V
-
Vgs ≈ 0V → MOSFET should be OFF
However:
-
Drain measures ~2.89V
I added a 47k pulldown resistor from drain to GND. This reduced the drain voltage to ~2.4V — but not to 0V.
-
All STM32 GPIOs connected to the ESP32 are driven LOW.
-
If I completely remove the MOSFET, the ESP32 3V3 rail stays at 0V (no floating voltage).
Question
Is this expected off-state leakage/floating behavior for a discrete P-MOSFET in this configuration, or is there something wrong with my circuit?