more than 8 PCF8575


I’m starting a project where I’m going to need a shitload of in- and outputs. Nothing fast though. I have no idea how many I am going to need in the end exactly, so I want to make sure, that I have enough possibility to expand.
The easiest way for me is an I/O expander like the PCF8575. However, I can only connect 8 of them in “series” on one I2C bus, because there are not more addresses possible. But, there are also I2C mux chips like the PCA9547. Can I use multiple sets of 8 I/O Expanders with such a multiplexer?


How about a cascade of good old 595's for the outputs ?

Yes, definitely a possiblity. However, it would be great if I could use one chip for everything and the inputs are more a problem than the outputs. I figured cost is not as important as ease of use.

I would second the idea of a cascade of shift registers.

How many outputs you you need?

74HC165 for capturing digital inputs. 74HC595 for driving low current outputs. TPIC6B595 or TPIC6C595 for high current sink outputs. String together as many as you need. If more than 10 or 12, I'd add some clock & latch buffering as well.

hmm.. what do you think makes shift registers better than I/O-Expanders? Only the unlimited number of chips?

I/O Expanders give me the posibility of using every pin as either in- or output, just what I need.

Crossroads, how would you do the buffering of the clock and latch?


Cascade the PCF8575s!

You use one PCF8575 to alter the address select pins on the others.

That is, one is set to address 0 (actually 0x20). Its sixteen outputs each control the A2 pin on three further PCF8575s whose A0 and A1 pins are set respectively to 01, 10 and 11. You select the desired group of three by setting only its A2 bit high, and then address each of the three as 0x25, 0x26 and 0x27 in turn.

So you can control up to 48 "slave" chips through the "selector".

Thanks for that idea!

But back to my initial question... :) Would it work? Are there any problems?

Thank you very much for this thorough answer!!