I purchased a small lot of these tiny transistor bi-directional level shifters it looks like two transistors and two 10k resistors for each channel.
Every time I use the normal arduino the LCD works fine I have recreated this several times with the same components and different pin assignments (no level shifting required). When I attempt this on a due (with level shifting) the best i can get is some strange block looking things on the display. Ive tried different pin designations and whatnot. Is it possible or likely that the level shifter isn't fast enough? I don't know what speeds the data lines run at nor do i know the spec on the shifters themselves. I assumed they would just work. If you cant interface reasonable logic level signals then what good are they?
Any modifications that can be suggested? I'm trying to avoid pulling them and buying a LVS chip but...Ill cross that bridge when i get to it.
I would suspect speed, in the absense of any information. Perhaps you could provide some clue as
to the identity/spec/datasheet of "these tiny transistor bi-directional level shifters" you mention.
I have nothing my friend. Just a cheap batch of little boards with numberless transistors. It was an ebay purchase so no specs there either i checked. :o
I would have thought that data speed limitations of the LCD would hit before the level translation transistors exceed their frequency specs or unwanted capacitances take effect. Is it possible you are driving the data lines too fast? The Due does clock up to ten times faster that an older Arduino, so if no special considerations to timing are taken the LCD unit may just be gagging on the data feed.
Metalfan1185:
If I used a 74HC245 what would i do with the direction input? If I only write to the LCD (and not read from it) I can use it in one direction, right?
To convert 5V to 3.3 you can use 74LVC family powered from 3.3V which (IIRC) have 5V tolerant inputs,
to convert from 3.3V to 5V use 74HCT family powered from 5V, which have TTL compatible inputs.
james-eton:
I would have thought that data speed limitations of the LCD would hit before the level translation transistors exceed their frequency specs or unwanted capacitances take effect. Is it possible you are driving the data lines too fast? The Due does clock up to ten times faster that an older Arduino, so if no special considerations to timing are taken the LCD unit may just be gagging on the data feed.
Dear lord I didn't even think of this. I'm using the U8Glib so i'll have to take a look and see if i can add a delay(); in the library files somewhere to slow it down. Thanks!
MarkT:
To convert 5V to 3.3 you can use 74LVC family powered from 3.3V which (IIRC) have 5V tolerant inputs,
to convert from 3.3V to 5V use 74HCT family powered from 5V, which have TTL compatible inputs.
I didn't realize this, good info thank you!
I have also been checking out shottkey diodes in series with the data lines with a pullup resistor to 3v3 on the anodes. Shottkey's definitely shouldn't have a speed issue.