I have started to work on a software I2C slave driven by interrupts on the SDA and SCL lines. At the moment I have been playing with this dev board http://wiki.stm32duino.com/index.php?title=Blue_Pill that uses a STM32F103C8 chip and just programming with Ardunio IDE but not using any of the Ardunio high level function but rather writing to the registers to control the pins and interrupts.

At some stage I will need to port it to the same chip as OpenMV uses and also a compatible programming environment. What programming environment do you use to write the firmware with??

OK I have my I2C slave now that master can read or write up to 256 bytes in 1 transmission, I have also made a timeout on it so that it can't get stuck and will always return to main program if stuck in a loop.