The I2C bus is a two wire bus developed by Phillips/NXP (4-wire if you want to include power and ground), that is used to connect a single master device to up to 120+ slave peripheral devices. The master device is typically a microcontroller, and the slave device(s) is/are typically peripheral chips that perform special functions such as GPIO expanders, analog to digital converters, digital to analog converters, real-time clocks, eeproms and many more.
Because one could have multiple slave devices on the I2C bus, each slave must have a distinct device address. So for example to write a byte ‘a’ to a register ‘b’ located in a slave device with a device address ‘c’, you would have to send three bytes ‘c’, ‘b’ and ‘a’ in that order. You also have to make sure that you assert the Read/Write bit found in the same byte as the device address ( byte ‘c’) for either read or write operation.
While the Raspberry Pi packs and awful lot of punch for the price, and it’s fairly flexible where HW expandability is concerned, there are situations where you might want a bit more basic digital IO. Thankfully, it’s an easy problem to solve with an I2C-enabled device like the MCP23008 (for an extra 8 GPIO pins) or the MCP23017 (for an extra 16 GPIO pins). This tutorial will show you how you can get up and running quickly with either of these chips.
Each Friday is PiDay here at Adafruit, be sure to check out our posts, tutorials and new Raspberry Pi related products. Have you tried the new “Adafruit Raspberry Pi Educational Linux Distro”? It’s our tweaked distribution for teaching electronics using the Raspberry Pi. But wait, there’s more! Try our new Raspberry Pi WebIDE! The easiest way to learn programming on a Raspberry Pi.
We now have Raspberry Pi Model B with 512MB RAM in stock and shipping now!