meta data for this page
This is an old revision of the document!
lamaPLC: PCF857x I/O Expander chip/modul with I²C communication
The PCF857x series consists of I²C-based general-purpose I/O (GPIO) expanders manufactured by NXP and Texas Instruments. They allow microcontrollers (such as Arduino, ESP32, or Raspberry Pi) to control multiple digital pins with only two wires: Serial Data (SDA) and Serial Clock (SCL).
| Feature | PCF8574 / PCF8574A | PCF8575 |
|---|---|---|
| GPIO Count | 8-bit (8 pins) | 16-bit (16 pins) |
| I²C Base Address | 0x20 (PCF8574) / 0x38 (PCF8574A) | 0x20 |
| Max Devices on 1 Bus | 8 units | 16 units |
| Operating Voltage | 2.5V to 6V | 2.5V to 5.5V |
| Interrupt Output | Yes (Open-drain INT) | Yes (Open-drain INT) |
The current limits of the PCF857x are heavily lopsided because of its quasi-bidirectional architecture. It handles current entirely differently depending on whether you are sinking current (outputting 0/LOW) or sourcing it (outputting 1/HIGH).
Main Control & Power Header
- VCC: Power input. Connects to 3.3V or 5V to match your microcontroller's logic levels.
- GND: Common ground reference.
- SDA: Serial Data line for I²C communication.
- SCL: Serial Clock line for I²C communication.
- INT: Interrupt output (Active Low). Pulls low to alert the microcontroller when an input pin changes state, eliminating the need for software polling.
8/16-Bit I/O Extension Pins
- Port 0 (P00 to P07): The first group of 8 quasi-bidirectional GPIO pins.
- Port 1 (PCF8575 only, P10 to P17): The second group of 8 quasi-bidirectional GPIO pins.
Sinking Current (Output LOW / Connecting to Ground)
- Maximum per individual pin: 25 mA (typical) / 20 mA for extended use.
- Maximum combined total (all 16 pins combined): 100 mA.
- The Math: If you activate all 16 pins simultaneously at LOW logic, you can only allocate a maximum of 6.25 mA per pin (100 mA ÷ 16) to avoid overloading the chip.
Sourcing Current (Output HIGH / Connecting to VCC)
This is the weak mode meant mostly for sensing state changes.
- Maximum per individual pin: Only 100 µA (0.1 mA).
- The Limit: This current is too weak to directly light up an LED or actuate a standard relay trigger.