Microchip Technology MCP23X17EV Data Sheet

Page of 10
© 2006 Microchip Technology Inc.
DS01043A-page 1
AN1043
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: I
2
C™ Interface
• MCP23S08: SPI Interface
The MCP23X17 are 16-bit GPIO Expanders:
• MCP23017: I
2
C 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
Author:
Pat Richards
Microchip Technology Inc.
Unique Features of the MCP23X08/17 GPIO Expanders