Open-Drain vs Push-Pull Output: Key Differences Explained
Both are output stages that drive digital signals, but they differ in how they output H. A push-pull output combines a pMOS on the supply side with an nMOS on the ground side and actively drives both H and L with transistors, so it is fast and draws almost no current while idle. An open-drain output has only the ground-side nMOS: it pulls the line down for L, but for H it releases the output and lets a pull-up resistor pull it up. The rise is slower, but several outputs can share one line (wired-AND) and the pull-up voltage can be chosen, so it is used for I2C and interrupt lines.
| Aspect | Push-pull output | Open-drain output |
|---|---|---|
| Output stage | Two transistors: a supply-side pMOS and a ground-side nMOS (the same form as a CMOS inverter) | Only a ground-side nMOS. Its drain is brought out to the pin, with nothing on the supply side |
| How H is output | The pMOS turns on and connects the pin to the supply | The nMOS turns off, releasing the pin (high impedance), and an external pull-up resistor pulls it up |
| How L is output | The nMOS turns on and connects the pin to ground | The nMOS turns on and connects the pin to ground (the same) |
| Rise speed | Fast. The pMOS charges the line | Slow. Set by the RC time constant of the pull-up resistor R and the line capacitance C (e.g. about 0.47 µs with 4.7 kΩ and 100 pF) |
| Fall speed | Fast. The nMOS discharges the line | Fast. The nMOS discharges the line |
| Connecting several outputs to one line | Not possible. If H and L collide, a large current flows from the supply to ground | Possible. If any one output drives L, the line goes L (wired-AND) |
| Interfacing with circuits at a different voltage | The H voltage is set by its own supply voltage. A level shifter is needed for circuits at a different voltage | The H voltage is set by the pull-up voltage, so it can match the other side's voltage within the pin's voltage rating |
| Current consumption | Almost none while idle (leakage only). Charge and discharge current flows when switching | Current keeps flowing through the pull-up resistor while L is output (about 0.7 mA with 3.3 V and 4.7 kΩ) |
| Typical speed | Tens of MHz or more is possible | Limited by the pull-up resistor and capacitance. For I2C, 100 kHz, 400 kHz, 1 MHz, etc. |
| Typical uses | Fast signals such as SPI and UART signals, clocks, general-purpose GPIO and memory buses | I2C and SMBus, interrupt and reset lines shared by several devices, interfacing with circuits at a different voltage, driving LEDs |
Figures are typical orders of magnitude and vary by process generation and product.