Duemilanove i2c to 3.3v device


Have been using 5V i2c to interface with a 3.3v device (DAC). So far the device is still alive. I have external pull ups to 5V. If I want to use 3.3v can I use the pullups to the 3.3v reference in the Duemilanove?


Basically yes, but the internal pullups (to +5) are also enabled by the library functions.

Therefore after initialising the I2C disable the internal pullups. I don't know but this might require a hack to the I2C library functions.

However even if using 3.3v external pull-ups, when the Arduino side is outputting data or clock bits it will to at an active source voltage output of 5vdc.


You are right, just measured the i2c lines and they are at 4.35v even with the pull-up connected to 3.3v, So what is the simplest fix?. I sent an email to the company that manufactures the DAC to see if the device is 5V tolerant...

it will to at an active source voltage output of 5vdc.

Good point. :)

So I would put a 470R resistor in series with line going to the Arduino and a diode from the 3V3 device I2C lines to the +3V3 supply just to catch it.

Implemented the two MOSfet solution: http://hifiduino.blogspot.com/2009/04/implemented-5v-to-33v-i2c.html