This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCF8574: Three questions: I2C speed, timing, faster alternatives

Part Number: PCF8574
Other Parts Discussed in Thread: PCF8575

I am evaluating the PCF8574 as an output ports expander and have three questions:

1-

Section 6.6 I2C Interface Timing Requirements of the data-sheet states that maximum I²C bus speed is 100 kHz.

However, I faced no issues using it at 400 kHz. Could you please confirm the I²C bus speed?

This question was initially sent as a feed-back on the documentation but I haven't received an answer yet, hence this post.

2-

Section 6.7 Switching Characteristics from the same document reads Tpv Output data valid = 4 µs from SCL to P output.

However, Figure 16. Write Mode (Output) only provides an example for P5.

Performing the same measure, but with multiple ports impacted, throws a delay up to 24 µs.

Could you please provide a more detailed timing table, ideally linked to the number of ports impacted?

3-

What references do you recommend for I²C bus running  at 400 kHz and faster timing Tpv?

Thank you! 

 

References

Datasheet

I've already read other posts, but they seem to be rather old. 

  • Hi Rei,

    1) I looked into this about a week ago. From what I found, the design files for this device shows that they did all of the validation simulations at 125kHz maximum. The original specification for the design of this device was 100kHz. That being said, I've personally used the device at 400kHz and was able to see it operate as expected but the electrical char data in the datasheet is spec'd specifically for the 100kHz frequency. In order for us to be allowed to state this device supports 400kHz in the datasheet, we would have to perform char analysis on the device at 400kHz across temp, voltage, and corner cases of the silicon. This likely won't happen since the device is so old and the amount of resources it will take to perform this likely will not be something we can do at this time.

    2) The P-Ports data is shifted in all at the same time (P-ports change all at the same time), the timing for P0 would be the same for P5 for example. Figure 16 just focused on P5 for some reason. I do see an error in this figure though, the image should actually shift the timing back by 9 bits to the second ACK. This seems like a copy paste error from the PCF8575 to the PCF8574. PCF8574 outputs its contents every byte after its address, PCF8575 does this after every 2 bytes so the ''integral multiple of two bytes" called out in figure 16 is incorrect.

    3) I technically cannot recommend running the device at 400kHz here since its not spec'd in the datasheet for 400kHz. The PCF8575 however is though the Tpv would be delayed by an additional byte/packet since it requires 2 bytes to be completed to output its contents unlike PCF8574.

    -Bobby

  • Hi Booby,

    Thank you for the detailed answer.

    For the same project, I've reviewed the PCA6408A: certified 400 kHz I2C, much faster output, but changing outputs requires 3 bytes (I2C address, register, output) instead of two (I2C address, output).

    So the question would be now: Is there a reference similar to the PCA6408A running at 400 kHz, only two bytes (I2C address, output) to set the outputs.

    It would be nice if some TIer would share some light on this.

  • Rei,

    Bobby is out of office but will get back to you later today. Thank you for your patience.

    Regards,

    Eric Hackett

  • Hi Rei,

    The PCF device is unique in the sense that it does not have internal registers so it does not require a pointer to be addressed during the 'register write' phase. The rest of our line of IO expander devices use internal registers so they all require writes to include I2C address>Internal register set> byte of data. 

    PCF8575 does run at 400kHz though it requires 2 bytes of data inorder to set its outputs. 

    Unfortunately there isn't a way to workaround this without modifying software which I'm assuming is the issue here.

    -Bobby

  • Hi Booby,

    Thank you for the detailed answer. I'll keep the PCA6408A despite the 3 bytes (address, register, value) to command the GPIOs.