Arduino Due level shifter shield to make pins 5V tolerant

As the title suggests, make a shield for the Duo so you can switch level shifting on/off (preferably on a pin by pin or port by port basis) for most/all the data pins. I have sooo much stuff that is 5V and the Mega/UNO are not big/fast enough for some projects I want to do but external level shifters are a pain prototype with and I never have enough.

This can get quite complicated if you also want to support all the secondary functions of the pins, such as I2C and especially analogue.

You can use the TXB0101 chip for normal GPIO functions, but it has a severely restricted current capability.

I have done this at high current for just 8 of the GPIO on a Due style board, it needs one chip plus a control signal for each IO, not too bad for 8 lines but not practical for 54.

The other FET-style level converter chips might work better, I've not used them.


Rob

Rats - can't find the Mega-stripped with buffers added schematic I had done up...

Yes we discuss this a fair bit in a thread a while back.


Rob

Do you recall when? Maybe I can find it by a date search.

Not sure if this is it, but it's in the ball park

http://forum.arduino.cc/index.php?topic=136717.0


Rob

Ok, here is what I had worked up for 3.3V to 5V buffering for the Due.
Shield goes on Due, buffered headers are offset by 0.1 to the 'top' and 0.4 or 0.5 to the 'side' to make room for the buffer chips.

Do these level shift/buffer chips handle SPI/I2C etc okay as Graynomad had warned about? For analogue input could you use a jumper to switch between buffer chip/ resistor voltage divider. Are the buffers okay for also doing 3.3/3.3 or would they need some switch/jumper to take them out of line.

I've been looking at some other level translators.
Most need a direction control line.
For all but I2C, where the data line has to be pretty fluid (i.e. ACK bit coming back after a data byte goes out), I think setting the direction bit via shift register during setup would be okay.
A part like this

would offer pretty good flexibility, supporting 2 pins per chip. +/-32mA drive capability on the 5V side.
Spacing wise, I'm thinking 24 of these in the DCU package 2.1mm x 3.2mm
and 3 shift registers to drive their direction lines might fit. Won't really know until its layed out.
http://www.digikey.com/product-detail/en/SN74LVC2T45DCUR/296-17014-1-ND/657837

Doesn't address bringing in analog signals tho.

"VCC Isolation Feature – If Either VCC Input Is at GND, Both Ports Are in the High-Impedance State"

So need a way to control VccA then - doesn't look like much VccA current is needed, so maybe another shift register to supply VCCA to 8 parts.

I suspect it will wind up in the too-hard or too-expensive basket, it's looking like a heck of a lot of chips. Plus control logic and the risk of setting the CPU pin to output when it's corresponding buffer is an input.


Rob

A quick hunt around and I find this article. Lots of SM components needed but the bits are cheap. Maybe just doing the standard arduino pins and leave the extra Duo pins as 3.3v

That provides very little high side outut current, just a 10K pullup resistor.
If one wants to emulate Arduino Uno 20-40mA drive capability, a more active design is needed.

I'll be out of town a few days, will play with the dual IO pin parts, see what will fit.
1st step may be creating a library symbol for the small footprint, then see what will fit.

Too hard is just a challenge, too expensive just means a higher qty is needed to reach materiel price break points.

comment on 5v logic.

Its dead. Has been for a while,
Like DIP chips, less and less around,

Its like the days of valves,
there were all sort of hybrid designs, before transistors took over.

personally, I'd advocate the push for all shields to be 3v3,

may be we should be looking at making the older adruinos 3v3 compatible,
by making a shield for that ?

its easier to make 5v to 3v3, an IDT Quick switch will do that ,
something like the QS3224 should do nice

have a look at app note 11-A , form 1998

may be we should be looking at making the older adruinos 3v3 compatible,
by making a shield for that ?

:slight_smile:


Rob

But it's the devices that connect to the arduino are mostly 5v and that's what the shield would be for. It will be years (if ever) all eBay modules are 3.3v compatible and till they are the likes of my duo and pi remain in the draw instead of being developed on.

it would be an interesting exercice to see

how many shields actualy have 5v -> 3v conversion on them,
I've been using recently GPS , accelerators, magnetometers,
I2S Audio , LCD modules,

and they all have to have converters on the to interface their 3v3 logic to the 5v of the Arduino.

3.3V logic has become new standard. 5V devices will probably go off the sale somewhere in the far future (I believe because higher electricity consumption). I have found an easy solution for comunicating DUE with 5V RS485 transcievers in this document: How to interface a 5V Transceiver to a 3V Controller.

And I would love to see an option on all Arduino boards (Except those that allready run on 3.3V), to have VCC running 3.3V or 5V, depending on a user choise. There are guides on the web how to convert Arduino (at least Leonardo which I am using) from 5V VCC to 3.3V. MCUs runns on 3.3V flawlessly, only downside is that MCU are not able to run with higher clocks at low VCC voltage (For Leonardo, 5V is on 16MHz but 3.3V can run only at 8MHz).

Has anyone had a look at DigiX Level Shifter Shield - Digistump ?