Take the 2-minute tour ×
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It's 100% free, no registration required.

It seems to me that I2C is actually transfering inverted bits which sounds a bit odd so I am seeking for a clarification.

I2C diagram from here.

enter image description here

Let's say we are writing to slave. A zero (0) comes to SDA out, which means nMOS is in HiZ and the receiver gets a 1 due to Pull-up. And if a 1 comes to SDA out then nMOS will connect with ground meaning receiver gets a 0.

So it seems to me as if I2C is actually sending inverted data across the SDL. This does not really make any sense to me so.. is there an inverter on the receiver's end not shown in the diagram that makes the data correct? Or did I misunderstood how it works in the first place?

share|improve this question
    
If you want to understand I2C, then read the official I2C spec. At least, skim through it. The spec is available free of charge. –  Nick Alexeev Jun 17 at 17:42

1 Answer 1

up vote 7 down vote accepted

You should not take that diagram as literal as you do. It shows how the electrical guys typically implement the hardware interface, and which explicit and implicit resistors play a part in shaping the waveforms.

The I2C standard states how a bit it transferred over I2C, that is the final word on it. It states that a 1 is transmitted as high on the SDA line. The 'sending FET' must be high-impedance to make the line high, hence we must feed it the inverted signal on what is called 'SDA out' in the diagram (in order to comply with the I2C standard).

If the author of that diagram had cared about signal polarity, he would have called it *SDA_out (the * means inverted) or the equivalent in another convention.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.