Go Down

Topic: Misc. I2C Questions (Read 439 times) previous topic - next topic

madvoid

Hi all,

For a project I'm currently building, I have a ds1307 RTC and a BMP085 pressure sensor on the same I2C line.  To account for the different voltage levels, I've implemented Sparkun's Logic Level Converter (http://www.sparkfun.com/products/8745).  However, I am now designing my own Arduino shield for this project and so I won't be using Sparkfun's logic level converter anymore.  Following the advice on page 10 of this article (http://ics.nxp.com/support/documents/interface/pdf/an97055.pdf), I'm going to build my own level shifting circuit using n-channel mosfets.  My question is this: as long as they are n-channel, does it matter what mosfets I use?  Are there any other design considerations I'm missing?  The ones I was planning on buying were these: http://search.digikey.com/us/en/products/2N7000_D26Z/2N7000_D26ZCT-ND/2094402.

My second question has to do with pullup resistors.  I currently have 2x 2.2k resistors for the ds1307 because the shield it's mounted on has them, and 2x 4.7k resistors for the BMP085 because its breakout board has them.  If I were to add more devices to either the 3.3 volt or 5 volt "side" of the i2c bus, would I need to add more pullup resistors for each device or would the existing ones work?  I guess I don't completely understand what the pullup resistors are for, I just know you need them.

Finally, I've also read that the Arduino wire library runs I2C communication at 3.3V anyways, meaning I wouldn't have to build the mosfet circuit at all.  Is this true?

Thank you in advance for any help!

Krodal

I just wrote this: http://arduino.cc/playground/Main/I2CBi-directionalLevelShifter

madvoid

This looks awesome, thank you very much!

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy