Currently, I am implementing I2C communication with Interrupt.
STM32 serves as the slave and Arduino serves the master.
For previous work, I2C communication in standard mode is appropriate.
In the page 110 of the MCU datasheet, it says that
fpclk1 shall be a multiple of 10MHz to reach fast mode clock.
However, in this discussion thread,
Someone replied that setting of fpclk1 shall depend on the duty cycle of I2C.
In 2/1 duty cycle, fpclk shall be a multiple of 1.2MHz (400KHz*3).
Under this assumption, I re-configured my clock source from HSI to PLL and change to SCL speed of Arduino to 400KHz.
As shown in this image. STM32 Clock Configuration
New system clock and fpclk1 for 24MHz are configured.
However, callback function
HAL_I2C_SlaveRxCpltCallback cannot be executed.
Does anyone know the right configuration of fpclk1?