

The PCF8575 is a versatile 16-bit I/O expander that communicates via the I2C or SMBus protocol. It is designed to provide additional input/output (I/O) pins for microcontrollers, enabling the expansion of GPIO capabilities in a wide range of applications. Each of the 16 GPIO pins can be individually configured as either an input or an output, making the PCF8575 suitable for tasks such as interfacing with sensors, controlling LEDs, or managing relays.








The following table outlines the key technical details of the PCF8575:
| Parameter | Value |
|---|---|
| Operating Voltage | 2.5V to 5.5V |
| Communication Protocol | I2C or SMBus |
| I2C Address Range | 0x20 to 0x27 (configurable) |
| GPIO Pins | 16 (individually configurable) |
| Maximum Sink Current (per pin) | 25 mA |
| Maximum Source Current (per pin) | 10 mA |
| Operating Temperature Range | -40°C to +85°C |
| Package Types | SOIC-24, TSSOP-24, SSOP-24 |
The PCF8575 has 24 pins, with the following configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1-8 | P0.0 - P0.7 | GPIO pins (lower byte) |
| 9 | VSS | Ground |
| 10-17 | P1.0 - P1.7 | GPIO pins (upper byte) |
| 18 | INT | Interrupt output (active low) |
| 19 | A0 | I2C address selection bit 0 |
| 20 | A1 | I2C address selection bit 1 |
| 21 | A2 | I2C address selection bit 2 |
| 22 | SCL | I2C clock line |
| 23 | SDA | I2C data line |
| 24 | VDD | Power supply (2.5V to 5.5V) |
The following example demonstrates how to use the PCF8575 with an Arduino UNO to toggle an LED connected to one of the GPIO pins.
#include <Wire.h>
#include <PCF8575.h> // Include the PCF8575 library
PCF8575 expander(0x20); // Initialize the PCF8575 with I2C address 0x20
void setup() {
Wire.begin(); // Initialize I2C communication
expander.begin(); // Start the PCF8575
expander.pinMode(P0, OUTPUT); // Set pin P0 as an output
}
void loop() {
expander.digitalWrite(P0, HIGH); // Turn on the LED connected to P0
delay(1000); // Wait for 1 second
expander.digitalWrite(P0, LOW); // Turn off the LED
delay(1000); // Wait for 1 second
}
Device Not Responding on I2C Bus
GPIO Pins Not Functioning as Expected
Interrupt Pin Not Triggering
Q: Can the PCF8575 handle 5V logic levels?
A: Yes, the PCF8575 supports operating voltages from 2.5V to 5.5V, making it compatible with both 3.3V and 5V systems.
Q: How many PCF8575 devices can I connect to a single I2C bus?
A: Up to 8 devices can be connected by configuring the A0, A1, and A2 address pins.
Q: Can I use the PCF8575 for PWM output?
A: The PCF8575 does not natively support PWM. However, you can simulate PWM by toggling the GPIO pins in software.
Q: What is the maximum I2C clock speed supported?
A: The PCF8575 supports I2C clock speeds up to 400kHz (Fast Mode).