

The PCF8575 is a 16-bit I2C I/O port expander designed to extend the number of GPIO pins available to a microcontroller. It communicates via the I2C bus, requiring only two wires (SCL and SDA) for data transmission. This makes it an efficient solution for applications where GPIO pin availability is limited.
Common applications of the PCF8575 include:








The PCF8575 has the following key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 2.5V to 5.5V |
| Maximum Sink Current | 25 mA per pin |
| Maximum Source Current | -300 µA per pin |
| I2C Clock Frequency | Up to 400 kHz (Fast Mode) |
| Number of I/O Pins | 16 (P0.0 to P0.7, P1.0 to P1.7) |
| I2C Address Range | 0x20 to 0x27 (configurable) |
| Operating Temperature | -40°C to +85°C |
The PCF8575 is typically available in a 24-pin package. Below is the pinout description:
| Pin | Name | Description |
|---|---|---|
| 1-8 | P0.0-P0.7 | GPIO pins for Port 0 (bidirectional) |
| 9 | GND | Ground |
| 10-17 | P1.0-P1.7 | GPIO pins for Port 1 (bidirectional) |
| 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 | RESET | Active LOW reset input |
| 23 | SDA | I2C data line |
| 24 | SCL | I2C clock line |
Below is an example of 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 PCF8575 with I2C address 0x20
void setup() {
Wire.begin(); // Start the I2C bus
expander.begin(); // Initialize the PCF8575
expander.pinMode(0, OUTPUT); // Set P0.0 as an output pin
}
void loop() {
expander.digitalWrite(0, HIGH); // Turn on the LED connected to P0.0
delay(1000); // Wait for 1 second
expander.digitalWrite(0, LOW); // Turn off the LED
delay(1000); // Wait for 1 second
}
PCF8575.h library can be installed via the Arduino Library Manager.0x20 with the actual I2C address of your PCF8575 if it differs.Device Not Responding on I2C Bus:
GPIO Pins Not Functioning as Expected:
Interrupt Pin Not Triggering:
By following this documentation, you should be able to successfully integrate the PCF8575 I2C expander into your projects and troubleshoot any issues that arise.