Considering 'M' a STM32Duino board as master. Considering 'S' a STM32Duino board as slave. 1/ Having in setup() for both M and S function TwoWire::setClock(100000) => receiveEvent and requestEvent never called in S 2/ Having in setup() for M only function TwoWire::setClock(100000) => receiveEvent and requestEvent are called in S as expected. Maybe the right way is to have this function working for masters only??? I don't know as I am not an i2c expert.