I2C: Electrical I2C is very simple, you only need to master it 0V and 3.3 Volts. Or whatever Just agree about the positive level with your peripherals. No special impedance requirement (lines are short anyways) The timing is driven by the master, no special requirement Only, don't be too fast You can drive I2C from GPIO It works if your GPIO pins are open-drain. But it also works if you can switch between input and output-low You usually can't be an I2C slave through GPIO You need to obey master timing choices If something goes wrong, the oscilloscope helps, as usual Even a TDC (a logic analyzer) can help, but not for all bugs.