I2C throughput - Advise before design

Hi everyone,

I'm currently working on a project that will be based on a Nano. all of it's I/O exchange are going to be over I2C. That Nano will be Master over I2C. It will have:

2 x Slave Nano, that will receive 3 bytes of info, every 250 mSec, is fine 4 x PCF8574 IO expander, that will receive 1 byte (all outputs) of info each. Every 250 mSec is fine 1 x PCF8574 IO expander, that will send 1 byte (all inputs) of info. every 250 mSec is fine 2 x PCF8574 IO expander, that will send 1 byte (all inputs) of info. This ones, I need fairly fast (50 mSec)

any of you foresee throughput issue ?

I saw the following post: http://forum.arduino.cc/index.php?topic=16793.0

It explains how to switch to 400KHz I2C speed. Will I need to go that fast or the 100KHz base speed shall be enough ?

I think you're in the clear - the amounts of data are small, relative to the speed that I2C runs at and your timing requirements. 50 milliseconds is a long time, relative to the processor speed and 100khz I2C clock. I mean, if the rest of your code is doing something that occupies the microcontroller for so long that it would impact ability to get/send data, you'll have to do something about that.

I'd consider shift registers instead of the fancy IO expanders - probably cheaper that way. But I don't know the full complexity of your project.

50ms per byte is even less than 1khz. LOADS of time :)