Level-Shifter für SPI

Gast #6341488
Lesenswert?

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?
Gast #6341505
Lesenswert?

> 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.
Gast #6341509
Lesenswert?

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 ...
#6341566
Lesenswert?

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.
Gast #6341808
Lesenswert?

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.
Gast #6341841
Lesenswert?

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.
Gast #6342068
Lesenswert?

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?
#6342086
Lesenswert?

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^^.
#6342103
Lesenswert?

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.
Gast #6342111
Lesenswert?

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.
Gast #6342173
Lesenswert?

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.
Gast #6343237
Lesenswert?

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.
#6343476
Lesenswert?

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".

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren