Today I have found a very good tutorial about the I2C protocol:
http://www.esacademy.com/faq/i2c/
The first time I used the I2C protocol was with an old-venerable 8051 derivative (8 years ago) and our team implemented the protocol using two general purpos pins (“bit-banging”) for SDA and SCL.
Looking back they were very fun days…not so productive to the management, but very fun to us developers !