The MCP23017/MCP23S17 (MCP23X17) device
family provides 16-bit, general purpose parallel I/O
expansion for I2C bus or SPI applications. The two
devices differ only in the serial interface:
• MCP23017 – I2C interface
• MCP23S17 – SPI interface
The MCP23X17 consists of multiple 8-bit configuration registers for input, output and polarity selection. The system master can enable the I/Os as either inputs or outputs by writing the I/O configuration bits (IODIRA/B). 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 16-bit I/O port functionally consists of two 8-bit
ports (PORTA and PORTB). The MCP23X17 can be
configured to operate in the 8-bit or 16-bit modes via
There are two interrupt pins, INTA and INTB, that can
be associated with their respective ports, or can be
logically OR’ed together so that both pins will activate if
either port causes an interrupt.
The interrupt output can be configured to activate
under two conditions (mutually exclusive):
1. When any input state differs from its corresponding Input Port register state. This is used to indicate to the system master that an input state has changed.
2. When an input state differs from a preconfigured register value (DEFVAL register).
The Interrupt Capture register captures port values at the time of the interrupt, thereby saving the condition that caused the interrupt. The Power-on Reset (POR) sets the registers to their default values and initializes the device state machine. The hardware address pins are used to determine the device address.
The GPIO Expander Keypad and LCD Demo Board is designed to demonstrate the use of the MCP23S08/17 (SPI interface) and the MCP23008/17 (I2C interface) devices in a keypad and LCD example. The MCP23X17 (16-bit) devices interface to a 2x16 LCD module and the MCP23X08 (8-bit) devices interface to a 4x4 keyed matrix.
The MCP23X17 16-bit GPIO Expander Evaluation Board demonstrates simple input/output functionality of the MCP23017 (I2C interface) and the MCP23S17 (SPI interface). The system demonstrates the simplicity of monitoring four pins configured as inputs and applying a predetermined pattern on LEDs connected to the remaining 12 pins configured as outputs.