Hallo, ich habe eine Platine mit einem ATMEGA1284 der auf 5V läuft. Nun soll das Projekt um ein neues OLED Grafikdisplay (EA OLEDL128-6) erweitert werden, was jedoch 3.3V Logik-Pegel (SPI) benötigt. Die 4 SPI Pins CLK, MOSI, CS und D/C müsste ich daher von 5V auf 3.3V transformieren. Beim UART (19200baud) habe ich mir schon mit einem Spannungsteile beholfen 1K/2K. Aber für SPI dürfte diese Lösung nicht geeignet sein. Kann jemand einen Level-Translator empfehlen, der sich für SPI gut eignet? Am liebsten wäre mir natürlich billig, SMT und "handlötbar". Reicht ein 74HC4050 für SPI?
Endgame schrieb: > Kann jemand einen Level-Translator empfehlen, der sich für SPI gut > eignet? SPI hat ja den Vorteil, dass alle Leitungen unidirektional sind. Maxim hatte sowas mal, weiß nicht, ob's die noch gibt. Yep, MAX3391 oder MAX3392 sollte da passen. Digikey hat ihn beispielsweise.
> Spannungsteile ... für SPI dürfte diese Lösung nicht geeignet ...
Wäre vielleicht doch einen Versuch wert.
Ich betreibe an einem ATmega1284 (mit 24 MHz) zwei SDCards mit
Spannungsteiler (in der SDC-Richtung) mit einem Takt von 12 MHz seit
einigen Jahren völlig problemlos.
Endgame schrieb: > Reicht ein 74HC4050 für SPI? Ja kann man machen. Hier z.B. macht es jemand: Beitrag "Re: ILI9341 langsam Verbesserungsvorschläge?" Oder man nimmt die "handelsüblichen" Arduino-Bauteile. https://www.ebay.de/itm/4-Kanal-Pegelwandler-I2C-5V-3-3V-Level-Shifter-Konverter-Arduino-Raspberry-Pi/252742078456?hash=item3ad89a0ff8:g:pKkAAOSwCK1b6qwj Wenn man die Platine nicht will klatscht man sich die 4 Transistoren und paar Widerstände selbst zusammen. BSS138 Schaltungsvorschlag ...
Schiesst nicht wieder mit Kanonen auf Spatzen. Widerstände reichen da völlig.
Herman Kokoschka schrieb: > Widerstände reichen da völlig. So ein Spannungsteiler stösst bei höheren SPI Taktraten an seine Grenzen.
jo mei schrieb: > So ein Spannungsteiler stösst bei höheren SPI Taktraten > an seine Grenzen. Natürlich. Aber nicht bei so einem Display.
jo mei schrieb: > Herman Kokoschka schrieb: >> Widerstände reichen da völlig. > > So ein Spannungsteiler stösst bei höheren SPI Taktraten > an seine Grenzen. Was wiederum EMV-mässig günstig ist (wenn der "obere" Widerstand direkt am uC sitzt). Wenn die 3.3V fehlen, ist der 4050 wieder im Vorteil; bei solchen Display-Treibern traue ich den Eingangsschutzdioden nicht allzu viel zu.
:
Bearbeitet durch User
Bei dem Display (unidirektional) dürfte es völlig ausreichen, CLK und MOSI über einen Level-Translator zu schicken. CS und D/C sind bei weitem nicht so schnell - da reicht auch ein Spannungsteiler.
Ich nehme gerne die kleinen von TI: SN74LV1T34 SN74LV1T125 Ja, ist sicher die "premium" Lösung, aber warum sich mit Krücken zufrieden geben, wenn es auf die paar Cent nicht ankommt.
Schau mal die LVC Logikfamilie an. Da kannst du zumindest schon mal 5V nach 3,3V umsetzen, wenn du das Gatter mit 3,3V betreibst, z.B. die buffer 74lvc126 oder tri-state bus Treiber 74lvc245. 3,3V könnten als High-Pegel am Eingang reichen, ansonsten geht da ein single Gatter mit TTL kompatiblen Eingängen, z.B. 74AHCT. Gibt aber direkt für SPI gedachte High-speed Pegelwandler. Da kannst du bei TI mal auf der Seite suchen, aber Standardlogik ist meist am günstigsten.
Ich verwende dafür (uSD-Karte an Mega1280) immer einen 74VHC08 betrieben mit 3.3V. Die Eingänge sind 5V-tolerant.
Gustl B. schrieb: > TXS0104E Hallo, bin gerade zufällig hierüber gestolpert und klink' mich einfach mal ein ;) Mein SPI Slave benötigt 3V, mein SPI Master kann nur 5V. Den angesprochenen TXS0104E finde ich sehr interessant, zumal er wesentlich günstiger ist als die MAX3372/92 Allerdings frage ich mich, wie ich OE sinnvollerweise beschalte. Der darf nur 3.3V und aus meinem µC kommen ja 5. Ginge das wiederum mit einem Spannungsteiler? Etwa so:
1 | |
2 | <µC-Pin>--------+ |
3 | | |
4 | [10K] |
5 | | |
6 | +----<TXB0104.OE> |
7 | | |
8 | [20K] |
9 | | |
10 | GND-------------+ |
Dann wäre der 20K Widerstand gleichzeitig auch Pulldown beim Startup, oder?
The TXS0104E is designed so that the OE input circuit is supplied by VCCA. Du verbindest also OE direkt mit VCCA. Wieso willst du das mit dem uC schalten? Ich verwende den Stein auf mehreren Platinen auch für SPI und der funktioniert wunderbar wenn OE dauerhaft High ist. Aber ja, der Spannungsteiler sollte funktionieren. Oder eben ein zweiter Pegelwandler für den OE^^.
:
Bearbeitet durch User
Wenn kein MISO benötigt wird (keine Daten von Slave, so wie dieses OLED) spielt es keine Rolle ob du einen Spannungsteiler oder eine Pegelwandler nimmst. Kritisch wird es erst wenn die Laufzeit vom CLK zum Slave und zurück vom Slave zum Master (MISO) grösser als der halbe SPI Takt wird. In solchen Fällen nehme ich den 74HC4050. (und nicht den CD4050 wie ich mal fälschlicherweise eingebaut hatte, warum sind SMD Teile auch immer so klein beschriftet :-). Ich kannte den TXS0104E auch nicht, der kommt wohl das nächste mal zum Zug, sieht sehr gut aus.
:
Bearbeitet durch User
Schmierfett schrieb: > Ginge das wiederum mit einem Spannungsteiler? Etwa so: Ja, aber niederohmiger. Ich würde es mit 1kΩ und 2,2kΩ versuchen. Vielleicht sogar noch weniger - je nach Übertragungsrate und Anforderungen an die Flankensteilheit. Ist bei OE vielleicht noch egal, aber bei MOSI und SCK wichtig.
Welche Datenrate willst du darüber machen? Der TXS0104E kann nur maximal 24 MBit/s. Wenn du mehr willst kann ich dir den TXS0108E empfehlen. Warum auch immer ist der eine Ecke schneller und kann 110 MBit/s.
Gustl B. schrieb: > kann ich dir den TXS0108E empfehlen. Den gibt es aus Fernost günstig auf Platinchen, habe ich sowohl am SPI als auch I2C mehrfach eingesetzt. Ist nur eine Richtung gefragt, haben die China MikroSD-Platinchen einen 74LVC125 drauf, den bekommt man auch günstig. Der wird mit 3V3 betrieben, darf aber 5V an den Eingängen. In der Gegenrichtung, 3V3-Signal auf 5V-µC, habe ich einen 74HCT125 in die Schaltung geschraubt - der erkennt high ab 2 Volt.
Bei einem AVR mit 24 MHz kann SPI maximal 12MHz sein und im Datenblatt steht, dass SPI maximal 10MHz sein darf, der TXS0104E reicht also.
Schmierfett schrieb: > Allerdings frage ich mich, wie ich OE sinnvollerweise beschalte. > Der darf nur 3.3V Nein, OE verträgt auch 5 V.
Man kann auch etwas bescheissen. HCMOS schaltet bei 2/3 Vcc. 3.3V sind grad 2/3 von 5V. Wenn man also an den 5V etwas dreht und/oder an den 3.3V etwas dreht ist man auf der sicheren Seite. Man kann die 5V zB auf 4.6V erniedrigen, oder 3.3V auf 3.5V hoch.
Joggel E. schrieb: > Man kann auch etwas bescheissen. HCMOS schaltet bei 2/3 Vcc. 3.3V sind > grad 2/3 von 5V. Wenn man also an den 5V etwas dreht und/oder an den > 3.3V etwas dreht ist man auf der sicheren Seite. Korrekt. Ich habe deswegen schon einige Arduino Nano Module absichtlich mit 4,3V betrieben.
Stefan ⛄ F. schrieb: > Korrekt. Ich habe deswegen schon einige Arduino Nano Module absichtlich > mit 4,3V betrieben. Hmm, per Diode in der 5V Versorgung?
Endgame schrieb: > Hallo, > Kann jemand einen Level-Translator empfehlen, der sich für SPI gut > eignet? > Am liebsten wäre mir natürlich billig, SMT und "handlötbar". SO-14 ist zwar SMD, aber mit 1,27 mm Pin immer noch gut lötbar. SCK, MOSI und SS: 74LVC14A Inv. paarweise. 74VHC08. 74VHC573. Und noch 1000 Variante aus LVC und VHC. MISO: 74HCT125 oder andere Ventile aus HCT-Serie. > Reicht ein 74HC4050 für SPI? Für SCK, MOSI und SS reicht. Für MISO brauchst du etwas noch, mit 5 Volt Vcc und Schwellspannung zwischen ca. 1 und 2,5 Volt. HCT-Serie paßt gut. Gustl B. schrieb: > Der TXS0104E kann nur maximal > 24 MBit/s. Wenn du mehr willst kann ich dir den TXS0108E empfehlen. Die sind gut, aber alles andere als "gut handlötbar".
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.