Using FETs for i2c level changing
You could try using 3V zener diodes to keep the lines at a safe level, without resorting to full-blown level converters - I've used a similar system to interface a 5V microcontroller to USB's 3.6V data lines. As I²C is only driven low (floating high) you may be able to get away with a single diode to regulate the 3V to power the I²C part, connecting the I²C pull-up resistors to this regulated line.
The use of a simple zener circuit and holding the i2c lines to 3.3 Volts will cause problems when the PICAXE is operating at 5Vdc.
Looking for example at the datasheet for PIC micro used for the 18X, the i2c pins use TTL logic levels for “normal input functions, but have Schmidt Trigger (ST) inputs for the i2c and SPI hardware comms on both the data and clock lines. See attached extract.
The Schmidt Trigger inputs do not recognise a signal as “high” until it has reached 0.8 * Vdd = 0.8 * 4 = 4Vdc – so clamping the PICAXE i2c lines to 3.3V does not meet the PICmicro specs.
Just checked more datasheets and:
-RC3/RC4 pins for i2c comms on the 28X1 and 40X1 also incorporate ST input buffers.
-RC3/RC4 pins for i2c comms on the 28X2 and 40X2 also incorporate ST input buffers.
I recommend consider the two FET approach which I have used successfully with 2N7000 FET’s as mentioned in post 5 above.