Do port expanders use MOSFETS internally to switch the pins high/low?
My project is using a Raspberry Pi and a MCP 23017 port expander to sink some current (to GND through the port expander) from a variable resistor (200-400 ohm) at (3,3 volts from the Pi).
I have noticed that the port expander is not a perfect short circuit to GND and have measured a voltage drop between the pin of the port expander and GND. This voltage drop increases when a higher current is sunk through it to GND. Stupidly, I was expecting the only voltage drop to be across the variable resistor (or most of it.)
Sourcing and sinking current through the GPIO of the Pi works as I thought, with a 3,3V drop across the resistor.
In the MCP 23017 datasheet, (under param No. D080) it says when MCP is operating at "Output-Low-Voltage" the voltage drop across the MCP23017 pin to GND will be 0,6V when the Iol (sunk current) is 8mA and the Vdd (supply voltage of MCP) is 4,5V. This would explain my problem.
I'm looking for literature / links explaining the basics of (I/O) port expanders which I can reference in my bachelor thesis which explains this.
So far the only thing Ihave come across is this link.
From my understanding a MOSFET has a set (Rds on) resistance when on, but the port expander resistance changes based on the current sunk or sourced. Why? Do they internally use MOSFETs?