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.
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
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.
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.
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 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.
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 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 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.
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:
Alarm inputs
Industrial status signals
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.
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.
Both devices are commonly suitable for Arduino-based designs.
PCF8574 is often used when an Arduino needs additional GPIOs for:
LCD modules
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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 is well suited to applications requiring a larger number of configurable GPIOs.
Industrial controllers
Automation equipment
Sensor systems
Development boards
PCF8574 is particularly attractive for simpler GPIO expansion requirements.
Common applications include:
I2C LCD modules
LED indicators
Digital control panels
Small embedded systems
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 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.
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:
Operating voltage
I/O architecture
Input and output behavior
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 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.
AT24C02 vs AT24C04: I2C EEPROM Memory Comparison
MX25L6406E vs W25Q64JV: SPI Flash Memory Comparison
Explore related electronics articles and guides.
Compare LM358 and LM324 operational amplifiers by channel count, package, pinout, performance, and circuit applications to select the right part.
Compare LM7805 and LM317 linear voltage regulators by output voltage, pinout, external components, heat dissipation, and applications.
Compare 1N4007 and 1N5408 rectifier diodes by current rating, voltage rating, package size, and applications to choose the right part for your design.
Learn why engineers upgrade from XC7A100T-2FGG484C to XC7A200T-2FBG484I and what to consider for FPGA resource expansion and system migration.
Compare XC7A100T-2CSG324I and XC7A100T-2FGG484C package options and understand their impact on Artix-7 FPGA design, I/O planning and industrial applications.
Compare XC7Z020-1CLG484I and XC7Z020-2CLG484I speed grades and understand how performance differences affect Zynq-7000 embedded system design.
Understand the differences between XC7Z020-1CLG400I and XC7Z020-1CLG484I and how package selection affects Zynq-7000 embedded system design.
Compare XC7Z020-1CLG400I and XC7Z020-1CLG484I package differences, I/O requirements and design considerations for Zynq-7000 embedded systems.
Compare XC7A35T-1CSG324C and XC7A50T-2CPG236I Artix-7 FPGA devices for industrial control, embedded applications and programmable logic designs.
Explore the differences between XC6SLX45-2CSG324I and XC7A100T-1FGG484C and understand why many FPGA designs migrate from Spartan-6 to Artix-7 platforms.
Compare XC7Z020-1CLG484I and XC7Z020-2CLG484I Zynq-7000 SoC devices including speed grade differences, embedded applications and FPGA design considerations.
Compare XC7A100T-2FGG484C and XC7A200T-2FBG484I Artix-7 FPGA devices for industrial control, image processing, communication and hardware acceleration applicati...
Copyright © ElecSuppliers.com. All Rights Reserved.