I find that when I'm trying to execute a block read of the extended data block, I miss the first value that I'm trying to read if the I2C clock speed is greater than 100kHz. I found in the datasheet that I shouldn't do block writes at this speed (which I'm not). I'm also inserting 150us delays after every transaction, which should satisfy the 66us requirement. However the data isn't coming back properly.
I've attached two screen shots: one at 80kHz and one at 200kHz. You'll notice on transaction 73, in the slower case I properly read the value 0x40. However, at 200kHz, this returns the second value of 0x00. It's like the whole thing is shifted by one.
Any ideas on something I might be doing wrong? Thanks!
200kHz read:
80kHz read: