MCP23017 test preparation notes
Now I have extended the 5V0 level I2C and UART signals from the pent level shifter proto board to the half size bread board. I have tested the toggled output of 5V0 IO2 (TxD pin) to be 4.97V high and 0.11 V low.
So far so good. Next step is playing with MCP23017.
.END
MCP23017 pinout diagram
Now I am looking at the MCP23017 pinout diagram to remind me how last time I wired the similar thing MCP23008.
.END
Now I am looking at the MCP23017 pinout diagram to remind me how last time I wired the similar thing MCP23008.
.END
MP23017 detection OK
Now I have detected MCP23017 OK. I made two mistakes in the wiring, luckily there is no white smoke appearing. Finally I detected the thing successfully. I only made the following connections.
pin 09 Vdd - 5V0
pin 10 Vss - Gnd
pin 12 SCL - RPi SCL
pin 13 SDA - Rpi SDA
pin 15 A0 - Gnd
pin 16 A1 - Gnd
pin 17 A2 - Gnd
pin 18 Reset - 5V0
So far so good. Next step is to let the Raspberry Pi to talk to the MCP23017.
.END
Now I have detected MCP23017 OK. I made two mistakes in the wiring, luckily there is no white smoke appearing. Finally I detected the thing successfully. I only made the following connections.
pin 09 Vdd - 5V0
pin 10 Vss - Gnd
pin 12 SCL - RPi SCL
pin 13 SDA - Rpi SDA
pin 15 A0 - Gnd
pin 16 A1 - Gnd
pin 17 A2 - Gnd
pin 18 Reset - 5V0
So far so good. Next step is to let the Raspberry Pi to talk to the MCP23017.
.END
SN74LVC245AN specification
MCP23017 proto board assembly notes
Now I have started soldering my very first MCP23017 proto board. I am glad that now the circuit is all 5V only, no more 3V3 blocking the way, and keeping me worrying of shorting 3V3 and 5V0 by mistake and white smoke appears.
.END
MCP23012 proto board asembly notes
So I have moved the MCP23017 circuit from breadboard to protoboard. I used the command "sudo i2cdetect -y 1" to verify that the address jumpers A2 A1 A0 can set the I2C address from 20 to 27 as expected, and that the reset when shorted to ground would disable the MCP23017 and therefore could not be detected anymore.
.END
MCP23017 interrupt LED assembly notes
Now I have added two red/green LED pairs to indicate the status of MCP23008's INTA and INTB. Offline testing good.
.END
Raspberry Pi MCP23017 evaluation board and testing plan
Now I have completed all the soldering work of the MCP23017 evaluation board. Next step is testing.
.END
Raspberry Pi MCP23017 Port Expander Board Kit - HobbyTronics, UK
http://www.hobbytronics.co.uk/mcp23017-port-expander-board
This useful kit contains the MCP23017 Port Expander chip and a breakout board which connects directly to our Raspberry Pi GPIO Breakout Board and plugs into a Breadboard. The Power and I2C connections are automatically made to the GPIO Breakout Board via a 5 way header socket so no breadboard wiring is needed.
Features
Connects directly to GPIO Breakout Board via 5 pin header
Pull up resistor on RESET pin of MCP23017
Pull down resistors on addess pins of MCP23017 to give default address of 0x20
Multiple boards can be linked together
The 16-bit I/O port functionally of the MCP23017 consists of two 8-bit ports (PORTA and PORTB). The MCP23017 can be configured to operate in 8-bit or 16-bit modes
This is a kit and requires soldering.
The kit contains
Port Expander PCB
MCP23017 IC
IC Socket
2 x 14 way header pins
5 way right angle socket
5 way right angle header pins
Documents
MCP23017 Port Expander Board Schematic
http://www.hobbytronics.co.uk/datasheets/rpi_mcp23017_port_expander.pdf
Raspberry Pi Raspbian Distro Installation and GPIO Port
http://www.hobbytronics.co.uk/tutorials-code/raspberry-pi-tutorials/raspberry-pi-raspbian-distro
4-Way Bi-directional Logic Level Converter
http://www.hobbytronics.co.uk/logic-level-4
.END
MCP23017 testing notes
Now I have started modifying the MCP23008 functions to do MCP23017. There are altogether 22 internal registers, double of that of MCP23008. I have not understood how the banks are working. So I just blindly make the changes. The 22 regsters has the following values.
# * MCP23017 Register addresses *
MCP23017_1_REGISTER_BASE_ADDRESS = 0x22
MCP23017_2_REGISTER_BASE_ADDRESS = 0x23
IO_DIRECTION_REGISTER_A_BANK_0 = IODIRA_B0 = 0x00
IO_DIRECTION_REGISTER_B_BANK_0 = IODIRB_B0 = 0x01
INPUT_POLARITY_REGISTER_A_BANK_0 = IPOLA_B0 = 0x02
INPUT_POLARITY_REGISTER_B_BANK_0 = IPOLB_B0 = 0x03
INTERRUPT_ON_CHANGE_REGISTER_A_BANK_0 = GPINTENA_B0 = 0x04
INTERRUPT_ON_CHANGE_REGISTER_B_BANK_0 = GPINTENB_B0 = 0x05
DEFAULT_COMPARE_VALUE_REGISTER_A_BANK_0 = DEFVALA_B0 = 0x06
DEFAULT_COMPARE_VALUE_REGISTER_B_BANK_0 = DEFVALB_B0 = 0x07
INTERRUPT_CONTROL_REGISTER_A_BANK_0 = INTCONA_B0 = 0x08
INTERRUPT_CONTROL_REGISTER_B_BANK_0 = INTCONB_B0 = 0x09
IO_CONTROL_REGISTER_A_BANK_0 = IOCONA_B0 = 0x0a
IO_CONTROL_REGISTER_B_BANK_0 = IOCONB_B0 = 0x0b
PULL_UP_RESISTOR_CONFIG_REGISTER_A_BANK_0 = GPPUA_B0 = 0x0c
PULL_UP_RESISTOR_CONFIG_REGISTER_B_BANK_0 = GPPUB_B0 = 0x0d
INTERRUPT_FLAG_REGISTER_A_BANK_0 = INTFA_B0 = 0x0e
INTERRUPT_FLAG_REGISTER_B_BANK_0 = INTFB_B0 = 0x0f
INTERRUPT_CAPTURE_REGISTER_A_BANK_0 = INTCAPA_B0 = 0x10
INTERRUPT_CAPTURE_REGISTER_B_BANK_0 = INTCAPB_B0 = 0x11
GPIO_REGISTER_A_BANK_0 = GPIOA_B0 = 0x12
GPIO_REGISTER_B_BANK_0 = GPIOB_B0 = 0x13
.END
.END
.END