Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use PCF8575C: Examples, Pinouts, and Specs

Image of PCF8575C
Cirkit Designer LogoDesign with PCF8575C in Cirkit Designer

Introduction

The PCF8575C is a 16-bit I/O port expander that communicates via the I2C protocol. It is designed to provide additional GPIO (General Purpose Input/Output) pins for microcontrollers, making it an ideal solution for applications requiring more I/O capabilities than the microcontroller natively supports. The device operates as a bidirectional I/O expander, allowing each pin to be configured as either an input or an output.

Explore Projects Built with PCF8575C

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Biometric and RFID Security System with Dual Adafruit Feather nRF52840 Controllers
Image of Rfid access control: A project utilizing PCF8575C in a practical application
This circuit features two Adafruit Feather nRF52840 microcontrollers, each interfaced with an RFID-RC522 module for RFID communication and an AT24C256 external EEPROM for additional memory storage. One of the microcontrollers is also connected to an R307 Fingerprint Sensor for biometric input, and both microcontrollers are powered by a shared power supply and a coin cell breakout for backup or RTC power. The circuit is likely designed for secure access control or identification purposes, utilizing both RFID and fingerprint authentication, with data storage capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Cellular-Enabled IoT Device with Real-Time Clock and Power Management
Image of LRCM PHASE 2 BASIC: A project utilizing PCF8575C in a practical application
This circuit features a LilyGo-SIM7000G module for cellular communication and GPS functionality, interfaced with an RTC DS3231 for real-time clock capabilities. It includes voltage sensing through two voltage sensor modules, and uses an 8-channel opto-coupler for isolating different parts of the circuit. Power management is handled by a buck converter connected to a DC power source and batteries, with a fuse for protection and a rocker switch for on/off control. Additionally, there's an LED for indication purposes.
Cirkit Designer LogoOpen Project in Cirkit Designer
Multi-Stage Voltage Regulation and Indicator LED Circuit
Image of Subramanyak_Power_Circuit: A project utilizing PCF8575C in a practical application
This circuit is designed for power management, featuring buck and boost converters for voltage adjustment, and linear regulators for stable voltage output. It includes LEDs for status indication, and terminal blocks for external connections.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino Mega 2560 Based Security System with Fingerprint Authentication and SMS Alerts
Image of Door security system: A project utilizing PCF8575C in a practical application
This circuit features an Arduino Mega 2560 microcontroller interfaced with a SIM800L GSM module, two fingerprint scanners, an I2C LCD display, an IR sensor, and a piezo buzzer. Power management is handled by a PowerBoost 1000 Basic Pad USB, a TP4056 charging module, and a Li-ion 18650 battery, with an option to use a Mini AC-DC 110V-230V to 5V 700mA module for direct power supply. The primary functionality appears to be a security system with GSM communication capabilities, biometric access control, and visual/audible feedback.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with PCF8575C

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of Rfid access control: A project utilizing PCF8575C in a practical application
Biometric and RFID Security System with Dual Adafruit Feather nRF52840 Controllers
This circuit features two Adafruit Feather nRF52840 microcontrollers, each interfaced with an RFID-RC522 module for RFID communication and an AT24C256 external EEPROM for additional memory storage. One of the microcontrollers is also connected to an R307 Fingerprint Sensor for biometric input, and both microcontrollers are powered by a shared power supply and a coin cell breakout for backup or RTC power. The circuit is likely designed for secure access control or identification purposes, utilizing both RFID and fingerprint authentication, with data storage capabilities.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of LRCM PHASE 2 BASIC: A project utilizing PCF8575C in a practical application
Cellular-Enabled IoT Device with Real-Time Clock and Power Management
This circuit features a LilyGo-SIM7000G module for cellular communication and GPS functionality, interfaced with an RTC DS3231 for real-time clock capabilities. It includes voltage sensing through two voltage sensor modules, and uses an 8-channel opto-coupler for isolating different parts of the circuit. Power management is handled by a buck converter connected to a DC power source and batteries, with a fuse for protection and a rocker switch for on/off control. Additionally, there's an LED for indication purposes.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Subramanyak_Power_Circuit: A project utilizing PCF8575C in a practical application
Multi-Stage Voltage Regulation and Indicator LED Circuit
This circuit is designed for power management, featuring buck and boost converters for voltage adjustment, and linear regulators for stable voltage output. It includes LEDs for status indication, and terminal blocks for external connections.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Door security system: A project utilizing PCF8575C in a practical application
Arduino Mega 2560 Based Security System with Fingerprint Authentication and SMS Alerts
This circuit features an Arduino Mega 2560 microcontroller interfaced with a SIM800L GSM module, two fingerprint scanners, an I2C LCD display, an IR sensor, and a piezo buzzer. Power management is handled by a PowerBoost 1000 Basic Pad USB, a TP4056 charging module, and a Li-ion 18650 battery, with an option to use a Mini AC-DC 110V-230V to 5V 700mA module for direct power supply. The primary functionality appears to be a security system with GSM communication capabilities, biometric access control, and visual/audible feedback.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications and Use Cases

  • Expanding GPIO pins for microcontrollers in embedded systems
  • Driving LEDs, relays, or other output devices
  • Reading multiple switches or sensors
  • Home automation systems
  • Industrial control systems
  • Robotics and IoT projects

Technical Specifications

Key Technical Details

  • Operating Voltage: 2.5V to 5.5V
  • I2C Address Range: Configurable via A0, A1, and A2 pins (up to 8 devices on the same bus)
  • Maximum I2C Clock Frequency: 400 kHz (Fast Mode)
  • Number of I/O Pins: 16 (P0.0 to P0.7 and P1.0 to P1.7)
  • Output Current: 25 mA (sink) per pin
  • Input Current: ±1 µA (typical)
  • Operating Temperature Range: -40°C to +85°C
  • Package Options: TSSOP, SOIC, and others

Pin Configuration and Descriptions

The PCF8575C has 24 pins. Below is the pin configuration:

Pin Number Pin Name Description
1 P0.0 GPIO Pin 0 (Port 0, Bit 0)
2 P0.1 GPIO Pin 1 (Port 0, Bit 1)
3 P0.2 GPIO Pin 2 (Port 0, Bit 2)
4 P0.3 GPIO Pin 3 (Port 0, Bit 3)
5 P0.4 GPIO Pin 4 (Port 0, Bit 4)
6 P0.5 GPIO Pin 5 (Port 0, Bit 5)
7 P0.6 GPIO Pin 6 (Port 0, Bit 6)
8 P0.7 GPIO Pin 7 (Port 0, Bit 7)
9 GND Ground
10 A0 I2C Address Selection Bit 0
11 A1 I2C Address Selection Bit 1
12 A2 I2C Address Selection Bit 2
13 RESET Active Low Reset Input
14 SCL I2C Clock Line
15 SDA I2C Data Line
16 INT Interrupt Output (Active Low)
17 P1.0 GPIO Pin 8 (Port 1, Bit 0)
18 P1.1 GPIO Pin 9 (Port 1, Bit 1)
19 P1.2 GPIO Pin 10 (Port 1, Bit 2)
20 P1.3 GPIO Pin 11 (Port 1, Bit 3)
21 P1.4 GPIO Pin 12 (Port 1, Bit 4)
22 P1.5 GPIO Pin 13 (Port 1, Bit 5)
23 P1.6 GPIO Pin 14 (Port 1, Bit 6)
24 P1.7 GPIO Pin 15 (Port 1, Bit 7)

Usage Instructions

How to Use the PCF8575C in a Circuit

  1. Power Supply: Connect the VCC pin to a 2.5V–5.5V power source and the GND pin to ground.
  2. I2C Communication: Connect the SCL and SDA pins to the corresponding I2C pins on your microcontroller. Use pull-up resistors (typically 4.7 kΩ) on both lines.
  3. Address Configuration: Set the I2C address by connecting A0, A1, and A2 to either VCC or GND. This allows up to 8 devices to share the same I2C bus.
  4. GPIO Pins: Use the P0.x and P1.x pins as inputs or outputs. Configure them by sending the appropriate data via I2C.
  5. Interrupt Pin: The INT pin can be used to detect changes in input states. It is active low and requires external pull-up if used.

Important Considerations and Best Practices

  • Ensure the I2C bus voltage matches the operating voltage of the PCF8575C.
  • Avoid exceeding the maximum current ratings for the GPIO pins to prevent damage.
  • Use decoupling capacitors (e.g., 0.1 µF) near the VCC pin for noise suppression.
  • If using the INT pin, ensure it is properly configured in your microcontroller's interrupt system.

Example Code for Arduino UNO

Below is an example of how to use the PCF8575C with an Arduino UNO to toggle an LED connected to one of its GPIO pins:

#include <Wire.h> // Include the Wire library for I2C communication

#define PCF8575C_ADDRESS 0x20 // Default I2C address (A0, A1, A2 = GND)

void setup() {
  Wire.begin(); // Initialize I2C communication
  Serial.begin(9600); // Initialize serial communication for debugging

  // Set all pins as outputs and turn them off
  Wire.beginTransmission(PCF8575C_ADDRESS);
  Wire.write(0x00); // Low byte (P0.0 to P0.7)
  Wire.write(0x00); // High byte (P1.0 to P1.7)
  Wire.endTransmission();
}

void loop() {
  // Turn on an LED connected to P0.0
  Wire.beginTransmission(PCF8575C_ADDRESS);
  Wire.write(0x01); // Set P0.0 high, others low
  Wire.write(0x00); // Keep P1.x pins low
  Wire.endTransmission();
  delay(1000); // Wait for 1 second

  // Turn off the LED
  Wire.beginTransmission(PCF8575C_ADDRESS);
  Wire.write(0x00); // Set all P0.x pins low
  Wire.write(0x00); // Set all P1.x pins low
  Wire.endTransmission();
  delay(1000); // Wait for 1 second
}

Troubleshooting and FAQs

Common Issues

  1. No Response from the Device:

    • Ensure the I2C address is correctly configured and matches the address in your code.
    • Check the pull-up resistors on the SDA and SCL lines.
    • Verify the power supply voltage is within the specified range.
  2. GPIO Pins Not Responding:

    • Confirm the pins are correctly configured as inputs or outputs.
    • Check for shorts or excessive current draw on the GPIO pins.
  3. Interrupt Pin Not Working:

    • Ensure the INT pin is connected to the microcontroller and properly configured.
    • Verify that the interrupt functionality is enabled in your code.

Tips for Troubleshooting

  • Use an I2C scanner sketch to verify the PCF8575C is detected on the bus.
  • Check all connections and solder joints for continuity.
  • Use a logic analyzer or oscilloscope to monitor I2C communication if issues persist.