Electronic – Logic Level Translator caveats

level-translation

I have a device that runs on 2.5Vcmos logic levels, there are about a half dozen ic's with a mixture of parallel and serial (TWI and I2C) signal lines. Rather than placing my own uC on the board I'd rather have a arduino compatible header so I can use the new 32 bit arm arduino, but will also give me flexibility in using a R-pi or anything else in the future (just a custom header).

As such I need to translate about a 18 logic lines to my 2.5V cmos level but leave the other end open to whatever the UC is used to control it in the future.

I've been looking at two series of chips the Max3378 for SPI/TWI/I2C lines (one per device) and the Max3000 for the parallel lines. From the datasheet it seems they are perfect, biderectional with no external direction control lines, switching voltages with any user supplied Vcc (allowing me to just use the micro Vcc line without needing a seperate regulator on my board) and large bus widths minimizing chip count.

My question is, can I consider these chips "black boxes" that will work out of the box? are there any hidden caveats in their implementation? Are there special considerations I need to make to avoid noise getting in from the controller side (this is a mixed signal device with a DAC on board)

Additionally, there are several part numbers with the same overall design but with one-directional translation on some or all of the bits. Is there any benefit in using the one-directional version where bidirectional logic translation is not really needed (but may be in the future)? Using only bidirectional part numbers will simplify assembly and make it easier to meet minimum orders for quantity pricing.

Best Answer

Sometimes I have found that having a lot of logic level translators is more trouble than it is worth. Is your device 3.3V tolerant (I'm assuming you're going from 2.5V to 3.3V)? Assuming you are using the Arduino Due and taking a quick look at the Atmel SAM3X8E datasheet, it seems that if VDDIO is 3.3V, V_IH can be as low as .7*VDDIO, or 2.31V and still read a 'high'. Therefore, your 2.5V device should have no problem driving an Arduino input. The question is if your device can handle the 3.3V that the Arduino will put out.

Assuming you don't want to modify the Arduino to simply use 2.5V VDDIO (I bet it might be as simple as changing up a regulator or a resistor), you can actually just use a diode array (for example, a CMEDA-6i, which is a quad diode array that has a convenient forward drop of 1.0V) when going from the Arudino out to the device (you don't need to worry about the other direction). That will limit the voltage the device sees to 2.3V. You can do it even simpler with just resistors (or resistor packs), but you need to look a bit into how much current the inputs on your device actually draw and without knowing what that is, it would be hard to recommend a part.