Hi, guys. Here is something suspicious about i2c_init(int speed, int slaveadd), in i2c.c and fsl_i2c.c - the speed parameter passed to it is never used, instead the value is hard-coded. /* set clock */ writeb(0x3f, &I2C->fdr); Sets the speed. Shouldn't it be writeb(speed, &I2C->fdr); , with speed being the divider value? Regards, Mic