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??