PCF8575 vs. PCF8575C I2C expanders [Help wanted]

Hello All,

I’m trying to use a PCF8575C port expander to drive 16 LED’s. I found this demo (which uses PCF8575) http://www.youtube.com/watch?v=UXPuzbEV … ture=email that turns on each LED in series, but I’m unable to get it to work. This what I have at present http://www.lucadentella.it/blog/wp-cont … 00x228.jpg : (Arduino) PIN A4 → (PCF8575) PIN SDA

(Arduino) PIN A5 → (PCF8575) PIN SCL

(Arduino) PIN 5V → (PCF8575) PIN VCC

(Arduino) PIN GND → (PCF8575) PIN GND

(Arduino) PIN GND → (PCF8575) PIN A0, A1, A2

That’s the way it’s setup in the demo and in the makers blog http://www.lucadentella.it/2012/03/16/o … xpander/3/, yet I don’t get any response from the LED’s.

Here’s the code:

First off I was unable to get it to compile, after look at afew other code snippets I changed

to

and was able to get it to compile, but still not a blink from an LED.

The breakout board’s datasheet says Pin connections:

SDA to pin 4 on the analog header

SCL to pin 5 on the analog header

VCC to 5v

GND to GND

I/O pins need pull up resistors to VCC.

I didn’t use any resistors because the demo didn’t include them. What am I doing?

so far this is whats I’ve found:

• Difference between PCF8575 and PCF8575C are:

– No internal I/O current source (open-drain)

– TTL input levels

http://ics.nxp.com/support/documents/in … /an469.pdf

  1. Question: In the data sheet of PCF8575 it is mentioned that the Port output is HIGH

after power-on. In the data sheet of PCF8575C it is mentioned that the Port output will

be in 3-state condition after power-on. We found that there is no difference in the block

diagram and the simplified schematic diagram of each I/O. What is the condition of the

outputs after power-on?

Answer: There is in fact a small difference in the schematic diagrams for PCF8575

and PCF8575C. The PCF8575C lacks the weak pull-up in the form of the 100 μA

current source in the output I/Os. This is the reason that PCF8575’s I/Os remain HIGH

after power-on and after being written HIGH. Without this current source, PCF8575C’s

I/Os will be in high-impedance state after the initial strong pull-up transistor is OFF (it

is ON during the acknowledge phase)

http://www.electro-tech-online.com/gene … -high.html

I’m not exactly sure hot to compensate for this difference.

If anyone can help it will be greatly appreciated.

Thank you in advance

I2C is an open collector (or open drain) bus. That means that the various I2C devices can either pull the lines low or let them float. It needs external pullups so that the lines are pulled high when none of the devices on the bus are pulling them down. In the blog, they have a DS1307 breakout board on the bus; if you look at the pictures of the breakout board, you will see the two 2k2 pullup resistors.

As for the difference between the PCF8575 and the 'C version; no need to worry. Just use the part as an open-drain part (ie, led anode tied to Vcc thru a current limiting resistor, cathode to an output of the PCF8575). They are saying that when the output of the 8575 is off, the C part will be tristated while the non-C part will have a very weak pullup to Vcc. If you are using the pins as inputs, you would need pullups if you are using the C part.

/mike