ok, as you maybe know the PCF8575 is widely used in I2C-backpacks for HD44780-compatible LCD displays, so I normally use the following code to control them, here a write sample
void lcd_write(uint8_t data, uint8_t type) {
uint8_t temp=0x0;
uint8_t i=2;
do { // verify is LCD is ready to receive commands)
i2c_start();
i2c_write(LCD_ADDR + I2C_WRITE); // address PCF8575 in write mode
i2c_write(0x8a); // write command
i2c_write(0x8e); // latch command (toggling Enable pin)
i2c_start(); // I2C restart
i2c_write(LCD_ADDR + I2C_READ); // address PCF8575 in read mode
temp=i2c_read_nack(); // read PCF8575 pin status with non-ACK
i2c_start(); // I2C restart
i2c_write(LCD_ADDR + I2C_WRITE); // address PCF8575 in write mode
i2c_write(0x8a); // write command
i2c_write(0x8e); // latch command (set Enable pin)
i2c_write(0x8a); // reset Enable pin
}
while(temp & 0x80); // do loop all over till LCD is ready
while(i) {
if(i==2) {
temp=data & 0xf0;
}
else {
temp=data & 0xf;
temp*=0x10;
}
if(type==1) {
temp+=1;
}
i2c_write(temp+0x8);
i2c_write(temp+0xc);
i2c_write(temp+0x8);
i--;
}
i2c_stop();
}
the I2C commands are AVR compatible, so I thing they are not fully portable to PICs, but the manual should give you a clue about it