The rig pictured above works as an Internet connected temperature sensor which sends [Zaion] an email with a graph of the change over time. This in itself is interesting, but one part in particular caught our eye. He’s using an i2c temperature sensor , and we think the PCA9517 Level-Translating I2C Bus Repeater that makes it possible is a perfect match for the RPi.
This is a Texas Instruments part. You can find more about it from the company’s product page. The key words in the name of the chip are ‘Level-Translating’. This has two bus connections, each with variable voltage levels. On side A the bus can be 0.9V to 5.5V. On side B the bus range is 2.7V to 5.5V. Since the Raspberry Pi I/O pins operate at 3.3V this could connect to the B side, give you the ability to interface with i2c parts rated for lower or higher voltages. This is especially handy for folks who started with the Arduino and own mostly 5V compliant prototyping hardware.
The part comes in a SOIC package, which you can easily hand solder and will costs around $1 depending on the supplier.
10 thoughts on “PCA9517 I2c Translator A Perfect Companion For Raspberry Pi Hardware Add-ons”
That’s an interesting bit of hardware. It could simplify connecting a RAMPS board to a ChipKit Uno32 or Max32 for use in a 3D printer.
The PCA9517 chip seems nice, but it’s not actually serving any function here.
No voltage translation is necessary, as the temperature sensor also operates at 3.3V.
As for the long bus length and high capacitance, I2C is inherently tolerant of that; all you have to do is clock the data slower. With one temperature sample every 20 seconds, a lower clock speed is hardly a limitation.
I managed to use the I2C bus on my Raspberry Pi using a pair of MOSFETS, as per http://ics.nxp.com/support/documents/interface/pdf/an97055.pdf
Seems simpler to me
uh… although the PCA9517 can be used for level translation, the primary function is that of a repeater. for simple I2C level translation the PCA9306 is a much better choice, as it has a much wider range of voltage support, higher frequency support, AND it is widely available already mounted on breakout boards:
I hate to break it to you guys, but i’ve been doing i2c with 5v and just wiring it on, and it hasn’t done any damage that i’ve noticed. They saaay you shouldn’t, but I have my doubts…
Shouldn’t 3.3V i2c work just fine with 5V parts?
i2c pins are open collector, so their only connection to +V is the pull-up resistor.
For _most_ parts, input high is considered around 0.6*Vcc, so for a 5V part that’s around 3.0V.
That means you can pull your whole i2c bus to the 3.3V supply of the Pi, and use both 3.3V and 5V parts just fine (but don’t do it the other way round, that could be bad)
I haven’t tried it, but sounds reasonable. I’d expect it could require lower clock rates, as logic high would be near the top of the RC charge curve; where R is the pull-up resistor and C is the bus capacitance.
I should have mentioned I’m doing exactly this with my Pi and a 5V attiny and LCD.
You’re probably right about clock speed (I honestly have no idea what I’m running at), the attiny I’m using registers high a little over 2V, so should be fine at reasonably high speeds
What the…. I have that exact freakin’ wifi dongle and haven’t been able to get it working.
That’s a slight irritation, but it’s also encouraging.
Maybe you have a power issue. Do you use a powered hub? I had to short the usb fuses and add a capacitor in order to get it work. Please check the voltage on the wifi dongle if it drop below 5V during connection/trasmission.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)