We are Apogeeweb Semiconductor Electronic

WELCOME TO OUR BLOG

Home  Product Technical Articles   How to wire an MCP23008 I2C interface with an Arduino?[FAQ]

How to wire an MCP23008 I2C interface with an Arduino?[FAQ]

Author: Irene
Date: 14 Sep 2021
 45
Packages

8-Bit I2C I/O Expander with Serial Interface

MCP23008 provides an 8-bit parallel input/output expansion for I2C bus and SPI applications. This microcontroller has 8-bit configuration registers for input, output and polarity changing.

Catalog

Description

CAD Model

Pinout

Pinout Diagram

Product Attributes

Product Features

Packages

How to wire an MCP23008 I2C interface with an Arduino?

Components

Details Explained

MCP23008 Datasheet

FAQ

 

Description

Add another 8 pins to your microcontroller using a MCP23008 port expander. The MCP23008 uses two i2c pins (these can be shared with other i2c devices), and in exchange gives you 8 general purpose pins. You can set each of 8 pins to be input, output, or input with a pullup. There's even the ability to get an interrupt via an external pin when any of the inputs change so you don't have to keep polling the chip.

Use this chip from 2.7-5.5V (good for any 3.3V or 5V setup), and you can sink/source up to 20mA from any of the I/O pins so this will work for LEDs and such. Team it up with a high-power MOSFET if you need more juice. DIP package means it will plug into any breadboard or perfboard.

You can set the i2c address by tying the ADDR0-2 pins to power or ground, for up to 8 unique addresses. That means 8 chips can share a single i2c bus - that's 64 I/O pins!

 

MCP23008

MCP23008

 

 

 

CAD Model

symbol and footprint

Pinout

 

There is the main 18 pinout of MCP23008, which are described below with a detailed description.

 

MCP23008-Pinout

MCP23008 Pinout

 

 

Pinout Diagram

Pin# Type   Parameters
Pin#1 SCL/SCK It is a Serial clock input.
Pin#2 SDA/SI It is a Serial data I/O (MCP23008)/Serial data input (MCP23S08) pin.
Pin#3 A2/SO It is a hardware address input (MCP23008)/Serial data output (MCP23S08). It (A2) must be biased externally.
Pin#4 A1 It is a Hardware address input. It Must be biased externally.
Pin#5 A0 It is a Hardware address input. It Must be biased externally.
Pin#6 RESET This is an external reset input.
Pin#7 NC/CS No connect (MCP23008)/External chip select input (MCP23S08).
Pin#8 INT It is an Interrupt output. It Can be configured for active-high, active-low or open-drain.
Pin#9 VSS It is used for Ground.
Pin#10 GP0 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#11 GP1 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#12 GP2 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#13 GP3 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#14 GP4 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#15 GP5 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#16 GP6 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#17 GP7 It is a Bidirectional I/O pin. It can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
Pin#18 VDD Power pin.
Pin#19 N/C N/C

 

Product Attributes

TYPE DESCRIPTION
Category Integrated Circuits (ICs)
  Interface - I/O Expanders
Mfr Microchip Technology
Series -
Package Tube
Part Status Active
Number of I/O 8
Interface I虏C
Interrupt Output Yes
Features POR
Output Type Push-Pull
Current - Output Source/Sink 25mA
Clock Frequency 1.7 MHz
Voltage - Supply 1.8V ~ 5.5V
Operating Temperature -40C ~ 125C 
Mounting Type Through Hole
Package / Case 18-DIP (0.300", 7.62mm)
Supplier Device Package 18-PDIP
Base Product Number MCP23008
Report an Error  
View Similar  

 

Product Features

  • 8-bit port expander with interrupt output
  • 3 address inputs for up to 8 devices on one bus
  • 25mA sink/source capability per I/O
  • Supports 100kHz, 400kHz and 1.7MHz I2C™Compatible modes
  • Internal power-on-reset (POR)

 

Packages

  • 18-pin PDIP (300 mil)
  • 18-pin SOIC (300 mil)
  • 20-pin SSOP
  • 20-pin QFN

 MCP23008 Package type

 

 MCP23008 Package type

 

How to wire an MCP23008 I2C interface with an Arduino?

  • We will demonstrate how to connect an MCP23008 I/O port expander chip to an Arduino microcontroller in this project. If we need more I/O ports for a microcontroller, this is a very useful thing to do.
  • Input/output ports are referred to as I/O ports. If we need more inputs or outputs to a microcontroller, we can use an I/O port expander chip to increase the number of I/O ports.
  • The MCP23008 chip will provide us with an additional 8 I/O ports by utilizing only two pins on the microcontroller.
  • The I2C bus and protocol are used by the MCP23008 chip. As a result, only two digital pins on the Arduino are required. As a result, it uses a very small number of I/O pins for communication.
  • It uses two pins for the clock line and one for the data line.
  • The I/O ports are all bidirectional. As a result, the device connected to one of the ports can both receive and send data to the microcontroller. Each port can sink up to 25mA of current, which is sufficient to power devices such as the LEDs used in this circuit. If you need more current, you can always use a transistor, but for this circuit, the IC can drive LEDs.
  • We can drive 8 LEDs with an MCP23008 because it has 8 outputs.

 

Components

  • MCP23008 I/O Port Expander
  • A few 220Ω resistors
  • A few LEDs
  • Arduino microcontroller   

It is an ideal addition to a microcontroller that requires more I/O ports. The MCP23008 I/O port expander costs slightly more than $2. It is a chip with 18 pins.

 

18 pins

18 pins

 

The MCP23008 is powered by +5V. As a result, we can connect VDD to the Arduino's 5V terminal. VSS is connected to ground. This completes the powering requirements for the MCP23008. The 8 I/O ports are labeled GP0-GP7. Because NC is not connected, we leave that pin unconnected (or floating). SCL stands for serial clock line. It connects to the analog clock pin on the Arduino, analog pin 5. The serial data line is abbreviated as SDA. It connects to the analog data line on the arduino's analog pin 4. The interrupt pin for the outputs is INT. We leave this pin unconnected because we are not going to use interrupts here. The address pins are A0, A1, and A2. If you're using multiple MCP23008 chips, you only need to be concerned about these pins. These pins are externally biased, which means you can supply voltages to them to generate different addresses. Because there are three pins, you can generate a total of eight different addresses (23=8). This is only required if you are connecting multiple ICs so that we can tell them apart. MCP23008 I/O Port Expander Circuit with an Arduino Microcontroller. The MCP23008 I/O port expander circuit we will build with an Arduino microcontroller is shown below.

 

 

MCP23008 Arduino Circuit

MCP23008 Arduino Circuit

 

Details Explained

Let us now go over our projects in detail. In this circuit, we connect a 220 resistor and an LED to each input and output pin.We connected +5V to Vdd and Vss to GND for input power.

Now, connect SCL pin 1 of the MCP23008 to analog pin 5 of the Arduino. This synchronizes the clocks of the Arduino and the I/O port expander chip.

Following that, we connected pin 2 of the MCP23008, which is SDA, to analog pin 4 of the Arduino. Data can be transferred between the Arduino and the I/O port expander chip via this connection. Because interrupts aren't used in this project, leave the INT pin unconnected. We don't use the RESET pin; instead, we connect it to +5V. To use it, simply connect it to a digital pin on the Arduino. If you want to reset all outputs, connect this pin to ground in cade.

Following that, we'll connect address pins A0, A1, and A2 to ground. It changes the address of these three pins to 000. This is MCP23008 Arduino Interfacing.

 

MCP23008 Datasheet

MCP23008 Datasheet

 

 

FAQ

What is MCP23008?

MCP23008 – I2C interface; three address pins. • MCP23S08 – SPI interface; two address pins. The MCP23X08 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.

 

What are I O expanders?

NXP's general-purpose input/output (GPIO) expanders are a simple, cost-effective way to monitor and control several peripheral signals. They make it easy for designers to add extra I/O to their design and thereby free up the microprocessor's GPIO for other, more important functions.

 

What is I2C port?

I2C is a packet-switched serial communication protocol that allows multiple master devices to connect to multiple slave devices using only 2 wires per connection. It is intended for attaching lower-speed peripheral ICs to processors and microcontrollers in short-distance, intra-board communication.

 

 

 

 

 

 

 

Ordering & Quality

Photo Mfr. Part # Company Description Package PDF Qty Pricing
(USD)
MCP23008-E-ML MCP23008-E-ML Company:Microchip Technology Remark:IC I/O EXPANDER I2C 8B 20QFN Package:20-VFQFN Exposed Pad
DataSheet
In Stock:1039
Inquiry
Price:
1+: $1.10000
25+: $0.92000
100+: $0.84000
Inquiry
MCP23008-E-SO MCP23008-E-SO Company:Microchip Technology Remark:IC I/O EXPANDER I2C 8B 18SOIC Package:18-SOIC (0.295", 7.50mm Width)
DataSheet
In Stock:1645
Inquiry
Price:
1+: $1.02000
25+: $0.85000
100+: $0.78000
Inquiry
MCP23008-E-SS MCP23008-E-SS Company:Microchip Technology Remark:IC I/O EXPANDER I2C 8B 20SSOP Package:20-SSOP (0.209", 5.30mm Width)
DataSheet
In Stock:220
Inquiry
Price:
1+: $1.10000
25+: $0.92000
100+: $0.84000
Inquiry
MCP23008T-E-ML MCP23008T-E-ML Company:Microchip Technology Remark:IC I/O EXPANDER I2C 8B 20QFN Package:20-VFQFN Exposed Pad
DataSheet
In Stock:6600
Inquiry
Price:
3300+: $0.84000
1+: $1.10000
25+: $0.92000
100+: $0.84000
Inquiry
MCP23008T-E-SO MCP23008T-E-SO Company:Microchip Technology Remark:IC I/O EXPANDER I2C 8B 18SOIC Package:18-SOIC (0.295", 7.50mm Width)
DataSheet
In Stock:3316
Inquiry
Price:
1+: $1.02000
25+: $0.85000
100+: $0.78000
1100+: $0.78000
Inquiry
MCP23008T-E-SS MCP23008T-E-SS Company:Microchip Technology Remark:IC I/O EXPANDER 8BIT I2C 20-SSOP Package:20-SSOP (0.209", 5.30mm Width)
DataSheet
In Stock:1600
Inquiry
Price:
1+: $1.10000
25+: $0.92000
100+: $0.84000
1600+: $0.84000
Inquiry

Related Articles

LM324 Based Temperature Setting Controller Design [Video]

Mia 20 Feb 2021  6654

Temperature setting controller is widely used in high and low voltage power distribution cabinets, terminal boxes, substations, used for real-time detection of environmental temperature and humidity c...

Continue reading »

LM358 Comparator: IR Sensor Circuit [FAQ]

Mia 20 Feb 2021  8098

I IntroductionInfrared sensor circuits have been widely used in modern life. How come? Due to its characteristics of low power consumption, high reliability, and small mutual interference. For example...

Continue reading »

LM317 Voltage Regulator: 11 Simple Circuits (With Example)

Irene 20 Feb 2021  12885

IntroductionThe LM317 device is an adjustable three-terminal positive-voltage regulator capable of supplying more than 1.5 A over an output-voltage range of 1.25 V to 37V. In addition, it has the adva...

Continue reading »

BC548 Transistor: Datasheet, Equivalent, Pinout [FAQ]

Iggy 5 Mar 2021  952

The BC548 is a NPN bipolar junction transistor. BC548 is another general purpose widely used transistor that can be easily accessed from reputable electronic components store, this transistor also ha...

Continue reading »

LM331 Converter:Pinout,Datasheet and Circuit

Irene 7 Sep 2021  86

LM331 is basically a precision voltage to frequency converter from National Semiconductors.   Catalog Product OverviewCircuit DiagramFeaturesPrinciples of OperationSimplified Voltage-to-Frequ...

Continue reading »

0 comment

Leave a Reply

Your email address will not be published.

 
 
   
 
Rating:

# 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z