I'm using MKL33Z64VLH4 at 16Mhz core frequency and I have connected an EEPROM on I2C1 and set it up for 400Khz operation. Based on the I2C_MasterSetBaudRate function, the ICR is set for 07 (SCL divider 40) and Mult is set to 00 (value 1).
In this case 16Mhz is divided by 40 to produce 400Khz. However, if I use the oscilloscope to watch the SCL pin, the frequency is around 350Khz. Can someone please help me understand the reason for the difference in frequency? The EEPROM does not perform clock stretching.