Connecting devices with different operating voltages for I2C communication

Hello, I recently made a schematic on which Intel Edison

module and Atmega8 are interconnected for I2C

communication. After that, I sent it to one of my

acquaintance for some technical advices. Originally, I

placed level shifters between Edison and Atmega8

because their operating voltages are quite different.(e.g.

I used 1.8V for Edison and 3.3V for Atmega8) However,

he sent me revised version in which level shifters are

removed leaving only two 3.3k pull-up resistances and

supply voltages (1.8v).

I just wonder why it is possible but he is reluctant to

teach me. I believe him because he is an skillful expert.

So, here's my question :

  1. Why is his method valid?

Thanks in advance.

I don't believe it is valid.

It works for 3.3V and 5V devices because 3.3V is higher than the minimum level required to measure HIGH on a 5V system. 1.8V is not high enough to register a HIGH on a 3.3V device. The 328P (Arduino UNO) requires 0.6 of the supply voltage as the minimum level for HIGH. That's 1.98V on a 3.3V supply.

Does it work when you try it?

Always use level shifters. This one will work for any set of voltages from 1.8V to 5V.

//MorganS
Since It is part of my whole schematic, I haven't tried it yet.
Anyway, thank you for your replying. It helped a lot :slight_smile:
//jreminton
Thank you. I'll consider using it :slight_smile: