MCP23017 vs PCF8574: I2C GPIO Expander Comparison


MCP23017 and PCF8574 are popular I2C GPIO expander ICs used to add digital input and output pins to microcontrollers. Both devices communicate through the two-wire I2C interface, making them useful when a microcontroller does not have enough GPIO pins for displays, keypads, sensors, switches, LEDs, and control signals.

Although MCP23017 vs PCF8574 is often treated as a simple GPIO expander comparison, the two devices use different architectures and provide different numbers of I/O pins. MCP23017 provides 16 GPIOs with configurable direction registers, while PCF8574 provides 8 quasi-bidirectional I/O pins.

For a new design, the choice depends on GPIO requirements, operating voltage, I2C speed, interrupt requirements, software architecture, package, and output-drive requirements.

What Is MCP23017?

MCP23017 is a 16-bit I2C GPIO expander from Microchip.

It provides two 8-bit GPIO ports, commonly identified as Port A and Port B. Each GPIO can be configured as an input or output through internal configuration registers. The device also provides interrupt functionality and internal pull-up resistors.

MCP23017 is designed for applications where a microcontroller needs a relatively large number of additional digital I/O pins without adding another microcontroller.

Typical applications include:

GPIO expansion

Keypad interfaces

LED control

LCD interfaces

Industrial control

Sensor interfaces

Switch monitoring

Embedded control panels

What Is PCF8574?

PCF8574 is an 8-bit I2C I/O expander from Texas Instruments.

It provides eight quasi-bidirectional I/O pins that can be used for general-purpose input and output functions. The device also includes an interrupt output and is designed for 2.5V to 6V VCC operation.

PCF8574 is widely used for simple GPIO expansion, especially in applications such as LCD interfaces, keypads, switches, LEDs, and small control panels.

Its relatively simple architecture can make it attractive when only a few additional GPIO pins are required.

MCP23017 vs PCF8574: GPIO Count

The most obvious difference is the number of available I/O pins.

MCP23017: 16 GPIO pins

PCF8574: 8 GPIO pins

MCP23017 therefore provides twice as many GPIOs from a single device.

If an application requires only four or six additional digital signals, PCF8574 may provide sufficient capacity.

If the design requires 10 or more additional GPIOs, MCP23017 can reduce the number of expander devices required.

This can simplify both the PCB and firmware architecture.

MCP23017 vs PCF8574 I2C Interface

Both devices use I2C.

The basic connections are:

SDA — Serial Data

SCL — Serial Clock

VCC — Supply

GND — Ground

This makes both devices compatible with many microcontroller families.

They can be connected to platforms such as:

STM32

Arduino

ESP32

AVR

PIC

NXP MCUs

Renesas MCUs

Other processors with I2C peripherals

However, their supported bus speeds differ significantly.

Microchip specifies MCP23017 support for 100kHz, 400kHz, and 1.7MHz I2C-compatible modes, while TI specifies PCF8574 with a maximum frequency of 0.1MHz.

MCP23017 vs PCF8574 Operating Voltage

MCP23017 supports an operating-voltage range from 1.8V to 5.5V according to Microchip's current product information.

TI specifies PCF8574 for 2.5V to 6V VCC operation.

This difference can matter when designing a mixed-voltage embedded system.

For example, MCP23017 can be attractive for lower-voltage systems operating around 1.8V or 3.3V.

PCF8574 supports a broader upper supply range, which can be useful in 5V-oriented designs.

The exact logic-level requirements should still be checked for the selected operating voltage.

MCP23017 vs PCF8574 I/O Architecture

The GPIO architecture is one of the most important technical differences.

MCP23017 provides configurable I/O registers. The direction of each GPIO can be configured through dedicated I/O direction registers. It also provides registers for GPIO state, output latches, polarity inversion, pull-ups, and interrupts.

PCF8574 uses an 8-bit quasi-bidirectional I/O structure.

The PCF8574 architecture does not use a conventional direction register for each GPIO. Instead, the pins can operate as inputs or outputs according to the data written to the port.

This makes the two devices functionally similar for many simple applications but architecturally different.

MCP23017 vs PCF8574 Input Configuration

MCP23017 provides dedicated configuration registers for determining whether GPIO pins operate as inputs or outputs.

It also provides internal pull-up resistors that can be individually controlled.

This gives firmware considerable flexibility when building mixed input/output applications.

PCF8574 uses its quasi-bidirectional architecture.

When a port bit is written high, the corresponding pin can be used as an input, while writing a low value drives the output low.

This approach can simplify some applications but requires developers to understand the device's I/O behavior.

MCP23017 vs PCF8574 Internal Pull-Ups

MCP23017 provides configurable internal pull-up resistors for its GPIO ports.

These can be useful for:

Push buttons

Keypads

Switch inputs

Digital sensors

Control signals

PCF8574 also has a quasi-bidirectional architecture that provides a weak current source when a port is configured high, allowing the pin to function as an input in many applications.

The two approaches are not identical, so firmware and hardware should be designed according to the selected device.

MCP23017 vs PCF8574 Interrupts

Both devices provide interrupt functionality.

MCP23017 provides interrupt-related registers that allow GPIO events to be monitored and reported to the microcontroller. The device supports interrupt-on-change functions for its GPIO ports.

PCF8574 also provides an open-drain interrupt output. TI specifies that an interrupt can be generated by changes on port inputs.

This makes both devices useful for applications where the MCU should not continuously poll every input.

Examples include:

Keypads

Push buttons

Alarm inputs

Switch monitoring

Industrial status signals

MCP23017 vs PCF8574 I2C Addressing

I2C address availability is important when several GPIO expanders share the same bus.

MCP23017 provides three hardware address inputs, allowing multiple device addresses on the same I2C bus. Microchip specifies that up to eight MCP23017 devices can be cascaded on one bus.

PCF8574 also provides hardware address selection, with TI specifying eight available addresses for the device.

Therefore, both can be useful in systems requiring multiple I2C GPIO expanders.

MCP23017 vs PCF8574 GPIO Expansion

For a system requiring 16 additional GPIOs, one MCP23017 can potentially perform the job of two 8-bit PCF8574 devices.

This can reduce:

IC count

PCB area

I2C address management

Firmware device management

External component count

However, PCF8574 can still be attractive when the application needs only eight or fewer GPIOs.

Choosing MCP23017 simply because it has twice the GPIO count may increase cost unnecessarily for a small application.

MCP23017 vs PCF8574 for Arduino

Both devices are commonly suitable for Arduino-based designs.

PCF8574 is often used when an Arduino needs additional GPIOs for:

LCD modules

Keypads

LEDs

Buttons

Relays

MCP23017 is useful when more GPIOs are required or when the application needs more sophisticated GPIO configuration.

For example, an Arduino control system with many buttons and LEDs may benefit from the 16 GPIOs provided by MCP23017.

MCP23017 vs PCF8574 for ESP32

ESP32 systems operate with 3.3V logic, making supply-voltage compatibility an important consideration.

MCP23017 supports 1.8V to 5.5V operation according to Microchip's specifications, making it suitable for a wide range of low-voltage systems.

PCF8574 supports 2.5V to 6V operation.

Both can therefore be considered for 3.3V ESP32 designs when the selected device's electrical characteristics are compatible with the application.

MCP23017 vs PCF8574 for STM32

STM32 microcontrollers commonly include hardware I2C peripherals, making either device straightforward to integrate at the bus level.

MCP23017 may be more attractive when the STM32 application requires:

Multiple GPIO inputs

Multiple GPIO outputs

Interrupt-driven inputs

Configurable pull-ups

Higher I2C speed

PCF8574 may be preferable when the application requires a simple eight-bit GPIO expansion function.

MCP23017 vs PCF8574 for LCD Applications

PCF8574 is commonly associated with I2C LCD interface boards.

A PCF8574 can provide the additional digital outputs needed to control a character LCD while using only two MCU bus lines.

MCP23017 can also control LCD interfaces and provides additional GPIO capacity.

If the LCD is the only peripheral requiring GPIO expansion, PCF8574 may be sufficient.

If the same I2C expander must control an LCD plus buttons, LEDs, or other digital signals, MCP23017 can provide considerably more I/O capacity.

MCP23017 vs PCF8574 for Keypads

Keypads are another common GPIO-expander application.

A matrix keypad requires multiple input and output lines.

PCF8574 can provide eight GPIO pins, which may be sufficient for many small keypad designs.

MCP23017 provides 16 GPIO pins, giving more flexibility for larger keypads or systems that need to share the expander with other digital signals.

The interrupt capability of both devices can also reduce the need for continuous MCU polling.

MCP23017 vs PCF8574 for LED Control

Both devices can be used to control LEDs, but their output behavior should be considered carefully.

TI specifically describes PCF8574 as providing latched outputs with high-current drive capability suitable for directly driving LEDs under specified conditions.

Microchip specifies 25mA sink/source capability per MCP23017 I/O in its product information.

Even when an IC specifies a particular per-pin current capability, designers should check total package power, voltage drop, temperature, and the exact operating conditions.

For high-current LED loads, an external transistor or dedicated LED driver may be a better solution.

MCP23017 vs PCF8574 Speed

Bus speed is another significant difference.

MCP23017 supports I2C modes up to 1.7MHz according to Microchip.

PCF8574 is specified for a maximum frequency of 0.1MHz, or 100kHz.

For slow-changing buttons, switches, LEDs, and LCD control, 100kHz may be completely adequate.

For applications requiring faster GPIO updates, MCP23017 provides considerably more I2C bandwidth.

The actual system speed also depends on firmware, bus capacitance, pull-up resistors, transaction length, and the number of devices on the bus.

MCP23017 vs PCF8574 Power Consumption

Power consumption depends on supply voltage, I/O states, bus activity, external loads, and operating conditions.

TI specifies a maximum standby current of 10µA for PCF8574.

For battery-powered applications, engineers should compare standby and active power rather than relying solely on the nominal supply voltage.

External loads connected to GPIO pins can also dominate total system power.

MCP23017 vs PCF8574 Package Options

Package selection depends on the specific ordering code.

MCP23017 is available in several package configurations, while TI lists multiple PCF8574 package options including PDIP, SOIC, TSSOP, TVSOP, and VQFN variants.

For a new PCB, either device can be selected based on board space and assembly requirements.

For an existing PCB, package compatibility becomes much more important.

A different package can require a completely different PCB footprint even if the device provides the same general function.

MCP23017 vs PCF8574 Pinout

MCP23017 and PCF8574 should not be considered pin-to-pin compatible devices.

Although both are I2C GPIO expanders, their GPIO counts and internal architectures are different.

MCP23017 uses two eight-bit GPIO banks.

PCF8574 provides one eight-bit quasi-bidirectional port.

Therefore, replacing one device with the other generally requires a hardware and firmware review rather than simply changing the BOM part number.

Can MCP23017 Replace PCF8574?

MCP23017 can replace PCF8574 at the functional level in many applications, but it is not normally a drop-in replacement.

MCP23017 provides more GPIO pins and a different register-based architecture.

A replacement may require:

PCB changes

Firmware changes

Different I2C address configuration

Different initialization code

Different GPIO handling

Different package selection

If the original design uses a PCF8574 specifically for an LCD or keypad, the firmware should be rewritten for the MCP23017 register architecture.

Can PCF8574 Replace MCP23017?

PCF8574 can potentially replace MCP23017 only when the application requires no more than eight GPIOs and does not depend on MCP23017-specific features.

The design would need to be checked for:

GPIO count

Input/output configuration

Interrupt behavior

Pull-up requirements

I2C speed

Software architecture

PCB footprint

If the application uses all 16 MCP23017 GPIOs, a single PCF8574 obviously cannot provide equivalent I/O capacity.

MCP23017 vs PCF8574 Software Compatibility

Software compatibility is one of the biggest differences between the two devices.

MCP23017 uses internal registers for:

I/O direction

Input polarity

Interrupt enable

Interrupt configuration

Pull-up configuration

GPIO state

Output latch

PCF8574 uses a simpler port-based model.

Consequently, firmware written for one device generally cannot simply be used with the other without modifying the I2C driver and GPIO-control logic.

For a new design, this is less important.

For an existing production product, it can be a major replacement consideration.

MCP23017 vs PCF8574 Applications

MCP23017 is well suited to applications requiring a larger number of configurable GPIOs.

Typical applications include:

Industrial controllers

Automation equipment

Keypads

LCD interfaces

LED control

Sensor systems

Embedded control panels

Development boards

PCF8574 is particularly attractive for simpler GPIO expansion requirements.

Common applications include:

I2C LCD modules

Keypads

LED indicators

Switch inputs

Digital control panels

Small embedded systems

MCP23017 vs PCF8574: Which One Should You Choose?

Choose MCP23017 when the application requires 16 GPIOs, configurable I/O registers, internal pull-ups, higher I2C bus speed, or more advanced interrupt and GPIO-control functions. Microchip specifies 16-bit GPIO expansion and I2C operation up to 1.7MHz.

Choose PCF8574 when eight GPIOs are sufficient and a simple I2C GPIO-expander architecture is preferred. TI specifies eight I/O pins, interrupt capability, and 2.5V to 6V operation.

For simple LCD or keypad projects, PCF8574 can be enough.

For larger embedded control systems, MCP23017 provides substantially more GPIO flexibility.

MCP23017 vs PCF8574: Key Differences

MCP23017 and PCF8574 perform the same broad function but are not identical devices.

MCP23017

16 GPIOs

1.8V to 5.5V operating range

Up to 1.7MHz I2C-compatible operation

Two 8-bit GPIO ports

Configurable direction registers

Internal pull-ups

Interrupt functionality

25mA sink/source capability per I/O under specified conditions

PCF8574

8 GPIOs

2.5V to 6V VCC range

Up to 100kHz operation

8-bit quasi-bidirectional I/O

Interrupt output

Latched outputs

High-current LED drive capability under specified conditions

Low standby current

These differences make the two devices suitable for somewhat different design requirements.

MCP23017 vs PCF8574 Replacement Considerations

When searching for an MCP23017 replacement, PCF8574 alternative, PCF8574 replacement, or MCP23017 alternative, engineers should avoid treating the two devices as direct equivalents.

The most important parameters to compare are:

GPIO count

I2C speed

Operating voltage

I/O architecture

Input and output behavior

Interrupt functionality

Internal pull-ups

Address configuration

Output-current capability

Package

Pinout

Software requirements

For a new design, the selection should be based on the required GPIO architecture.

For an existing design, both the hardware and firmware must be evaluated before changing from one device to the other.

MCP23017 vs PCF8574 for Component Selection

MCP23017 and PCF8574 are both useful solutions for expanding MCU GPIO through I2C, but they target different levels of functionality.

PCF8574 is a straightforward eight-bit I/O expander that can be particularly convenient for LCDs, keypads, switches, and simple control interfaces.

MCP23017 provides twice the GPIO capacity and a more sophisticated register-based GPIO architecture. It also supports substantially faster I2C operation and offers configurable features that can be valuable in more complex embedded systems.

For engineers comparing MCP23017 vs PCF8574, the best choice depends on the required number of GPIOs, operating voltage, I2C speed, firmware architecture, and application requirements rather than simply the popularity of either part number.


Related Articles

Explore related electronics articles and guides.

Sep 27, 2026

LM358 vs LM324: What Is the Difference Between Dual and Quad Op Amps?

Compare LM358 and LM324 operational amplifiers by channel count, package, pinout, performance, and circuit applications to select the right part.

Sep 27, 2026

LM7805 vs LM317: Which Linear Voltage Regulator Should You Use?

Compare LM7805 and LM317 linear voltage regulators by output voltage, pinout, external components, heat dissipation, and applications.

Sep 27, 2026

1N4007 vs 1N5408: What Is the Difference?

Compare 1N4007 and 1N5408 rectifier diodes by current rating, voltage rating, package size, and applications to choose the right part for your design.

Aug 23, 2026

XC7A200T-2FBG484I Upgrade From XC7A100T-2FGG484C

Learn why engineers upgrade from XC7A100T-2FGG484C to XC7A200T-2FBG484I and what to consider for FPGA resource expansion and system migration.

Aug 23, 2026

XC7A100T-2CSG324I vs XC7A100T-2FGG484C FPGA Package Difference

Compare XC7A100T-2CSG324I and XC7A100T-2FGG484C package options and understand their impact on Artix-7 FPGA design, I/O planning and industrial applications.

Aug 23, 2026

XC7Z020-1CLG484I vs XC7Z020-2CLG484I Speed Grade Difference

Compare XC7Z020-1CLG484I and XC7Z020-2CLG484I speed grades and understand how performance differences affect Zynq-7000 embedded system design.

Aug 23, 2026

XC7Z020-1CLG400I vs XC7Z020-1CLG484I Package Selection

Understand the differences between XC7Z020-1CLG400I and XC7Z020-1CLG484I and how package selection affects Zynq-7000 embedded system design.

Aug 23, 2026

XC7Z020-1CLG400I vs XC7Z020-1CLG484I Package Difference

Compare XC7Z020-1CLG400I and XC7Z020-1CLG484I package differences, I/O requirements and design considerations for Zynq-7000 embedded systems.

Aug 23, 2026

XC7A35T-1CSG324C vs XC7A50T-2CPG236I FPGA

Compare XC7A35T-1CSG324C and XC7A50T-2CPG236I Artix-7 FPGA devices for industrial control, embedded applications and programmable logic designs.

Aug 23, 2026

Why Engineers Upgrade from XC6SLX45-2CSG324I to XC7A100T-1FGG484C for New FPGA Designs

Explore the differences between XC6SLX45-2CSG324I and XC7A100T-1FGG484C and understand why many FPGA designs migrate from Spartan-6 to Artix-7 platforms.

Aug 23, 2026

XC7Z020-1CLG484I vs XC7Z020-2CLG484I Speed Grade Difference and Zynq-7000 FPGA Selection Guide

Compare XC7Z020-1CLG484I and XC7Z020-2CLG484I Zynq-7000 SoC devices including speed grade differences, embedded applications and FPGA design considerations.

Aug 23, 2026

XC7A100T-2FGG484C vs XC7A200T-2FBG484I FPGA Upgrade Comparison for High Performance Designs

Compare XC7A100T-2FGG484C and XC7A200T-2FBG484I Artix-7 FPGA devices for industrial control, image processing, communication and hardware acceleration applicati...

WhatsApp Telegram LINE Email