I currently have an Uno (which operates at 5v), and I'm looking at buying a Due (which only operates at 3.3v). I'd like to make them communicate via Serial or SPI or similar, but presumably connecting them directly isn't an option (I guess the Due's pins would get damaged).

Is there any way to make the connection safe? Or is there an alternative form of communication I could safely use between them instead?

1 Answer 1

  • For a 5V logic output to a 3V3 logic input, you can use a resistive divider to lower the voltage.
  • When unloaded, a 3V3 logic output is just enough to drive a 5V logic input. Check the AVR datasheet for the exact voltages (0.6 × Vcc = 3V, found under DC Characteristics in the datasheet).

In other words, with a little bit of special care it may just work.

To construct a more reliable and bidirectional solution, use a level shifter. There are several listed on this page but other manufacturers make similar devices.

This document describes how a MOSFET can be used to bidirectionally convert logic levels between different supply voltages.

  • +1 for the MOSFET solution reference. I didn't think bidirectional level-shifting could work. Fascinating.
    – jfpoilpret
    Commented Feb 24, 2014 at 13:56
  • To add, for the MOSFET level converter there is no need for discrete components - there are devices like the FDC6301N dual FET. Or there are dedicated level shifters like the PCA9306. Commented Feb 25, 2014 at 11:15
  • 1
    Adafruit has a ready-to-go MOSFET level shifter (adafruit.com/products/757) that also plays nice for I2C communication, where you need to have bi-directional level translation.
    – Mike WP
    Commented Feb 25, 2014 at 18:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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