This 8-bit I/O expander for the two-line bidirectional bus
(I2C) is designed for 2.3-V to 5.5-V VCC
operation. It provides general-purpose remote I/O expansion for most microcontroller families via
the I2C interface [serial clock (SCL), serial data (SDA)].
The PCA9554 consists of one 8-bit Configuration (input or output selection), Input,
Output, and Polarity Inversion (active high or active low) registers. At power on, the I/Os are
configured as inputs with a weak pullup to VCC. However, the system master
can enable the I/Os as either inputs or outputs by writing to the I/O configuration bits. The data
for each input or output is kept in the corresponding Input or Output register. The polarity of the
Input Port register can be inverted with the Polarity Inversion register. All registers can be read
by the system master.
The system master can reset the PCA9554 in the event of a timeout or other improper
operation by utilizing the power-on reset feature, which puts the registers in their default state
and initializes the I2C/SMBus state machine.
The PCA9554 open-drain interrupt (INT) output is activated when
any input state differs from its corresponding Input Port register state and is used to indicate to
the system master that an input state has changed.
INT can be connected to the interrupt input of a microcontroller.
By sending an interrupt signal on this line, the remote I/O can inform the microcontroller if there
is incoming data on its ports without having to communicate via the I2C
bus. Thus, the PCA9554 can remain a simple slave device.
The device's outputs (latched) have high-current drive capability for directly driving
LEDs and low current consumption.
Three hardware pins (A0, A1, and A2) are used to program and vary the fixed
I2C address and allow up to eight devices to share the same
I2C bus or SMBus.
The PCA9554 is pin-to-pin and I2C address compatible with the
PCF8574. However, software changes are required, due to the enhancements in the PCA9554 over the
The PCA9554 and PCA9554A are identical except for their fixed
I2C address. This allows for up to 16 of these devices (eight of each)
on the same I2C/SMBus.