The MCP23017 is a very popular I2C 16 GPIO expander module, which you can use with various microcontrollers (e.g. Arduino, Raspberry Pi, ESP8266, …) to extend the number of GPIOs at your command.
I’ve used the MCP23017 is various projects in the past, and while looking at options for a new project wondered about the MCP23018. Sure, there’s an MCP23008 which is an 8 GPIO variant, and MCP23S17 which is an SPI 16 port variant.
But what’s the MCP23018 and why isn’t it as popular?
The key differences are that the MCP23018 adds:
open drain outputs and higher total current sinking capability - 400mA vs 150mA across all ports
higher top speed on the I2C interface - 3.4MHz vs 1.7MHz
tolerance for voltages on input pins to 5.5V (irrespective of Vdd).
The MCP23018 has only 1 address pin, rather than the three on the MCP23017, but still allows up to 8 devices on the bus simultaneously - using voltage (via an external voltage source/divider). I don’t really understand the point of this given it doesn’t use the freed up pins - perhaps to allow a 24pin QFN (vs 28 for the MCP23017 QFN).
Like the MCP23017 there’s also an SPI variant of the MCP23018 (the MCP23S18), which has the same differences (except the SPI bus speed remains at 10MHz like the MCP23S17).
Finally, there is also an MCP23016, which is now not recommended for new designs. This
can sink up to 300mA
requires an external resistor and capacitor to set the internal clock speed
is neither pin compatible with the MCP23017 or MCP23018
only supports up to 400KHz I2C.
Probably not one to be using.comments powered by Disqus