English
Language : 

AN1043 Datasheet, PDF (1/10 Pages) Microchip Technology – Unique Features of the MCP23X08/17 GPIO Expanders
AN1043
Unique Features of the MCP23X08/17 GPIO Expanders
Author: Pat Richards
Microchip Technology Inc.
INTRODUCTION
GPIO expanders provide easy I/O expansion using
standard serial interfaces. GPIO products are used to
increase the I/O on an MCU or provide remote I/O
using a serial interface.
This application note discusses the feature set and use
of the MCP23X08/17 (8-bit and 16-bit) GPIO Expand-
ers.
The MCP23X08 are 8-bit GPIO Expanders:
• MCP23008: I2C™ Interface
• MCP23S08: SPI Interface
The MCP23X17 are 16-bit GPIO Expanders:
• MCP23017: I2C Interface
• MCP23S17: SPI Interface
The functions and features of the MCP23X08 and
MCP23X17 are basically the same, except where
otherwise noted.
FEATURES
This application note discusses some of the features of
the MCP23X08/17 and how they may be used in an
application:
• I/O Port Description
• 8/16-Bit Mode (MCP23X17 only)
• Interrupt Features
- Mapping Interrupts
- Mirroring Interrupts (MCP23X17 only)
- Servicing Interrupts
• Internal Address Pointer Control
• Hardware Address Pin on SPI
I/O PORT DESCRIPTION
The I/O port is highly configurable for maximum
flexibility. Figure 1 is a simplified block diagram of an
I/O port pin. The port can either drive logic levels on the
pin, or read logic levels from the pad. The level on the
pad can be read at any time, regardless if the pin is
configured as an input or an output.
The IODIR register controls the direction of the pins
(input or output). More specifically, the IODIR registers
simply enables/disables the output driver. When the
driver is activated (IODIR = 0), the pad is driven to the
state in the latch register (OLAT). When deactivated
(IODIR = 1), the driver is high impedance.
The I/O port has multiple, individual configurations.
Each pin can …
• …be configured as an input. The output driver is
disabled (high impedance)
• …be configured as an output. The output driver
is enabled and the value in the latch is driven on
the pin.
• …enable a weak pull-up resistor
• …emulate an open-drain configuration. This is
accomplished by clearing the output latch (OLAT)
bit to a zero and using the direction register
(IODIR) to set the level on the pin. A pull-up
resistor is required to pull the pin to voltage when
the pin is an input
- To drive a 0: configure the pin as an output
(IODIR = 0) so the port drives whatever is in
OLAT (logic 0 in this case)
- To float a 1: set the pin as an input
(IODIR = 1). The output driver is disabled
and the pull-up resistor pulls the pin to a
logic 1
© 2006 Microchip Technology Inc.
DS01043A-page 1