I2C - This Makes No Sense....

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.

And.... It gets even stranger.... I just bumped the clock up to 1MHz, and the write speed increased almost proportionally, up to 60K passes. But the read speed, did not change at all....

Regards, Ray L.

Oops! Never mind.... The FPGA lost its program. I re-FLASHed it, and all is now good. At 1MHz, I'm now getting about 20uSec per read or write access, which is just where I wanted to be.

Regards, Ray L.