I was curious to see what the actual read/write times for I2C were, so I wrote a simple test that does continuous two-byte writes for one second, counting the number of passes I could make in one second using micros(). Then I did the same for two-byte writes (using repeated start). I get almost 9000 passes for writes (about 100 uSec/pass), which is not bad (running at 100 kHz). But on reads, I get only 18 passes, or about 5.6 mSec//pass!
Does this make sense to anyone?
Data transfers to/from my custom FPGA are working perfectly, except for this one issue. Next step is bumping the clock rate up to 1MHz...
One question - are external pullups required/recommended when using I2C?
Regards, Ray L.