I2C Speed and Crash

It should be possible to transmit thousands of bytes per second, but I do advice to have 100 microseconds between the transmissions.

You didn't show the ControlByteCheck() function. Is something weird going on there ?