I find when I make a call to HAL_I2C_Slave_Receive_IT it returns HAL_OK but it never manages to call the callback function, my HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *I2cHandle) implementation.
Using a logic analyzer, I find that the device never acks the address and instead holds the clock line low till the device is reset.
I find if I use the synchronous api, HAL_I2C_Slave_Receive it ACKs and get's data just fine.
Also I am using the latest version of the STM32CubeMX + Keil ARM-MDK.
Any ideas? Thanks