Forum: Mikrocontroller und Digitale Elektronik SPI-Bus mit zwei Spannungsleveln


von Siggi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte zwei Mikrocontroller über SPI miteinander verbinden, die von 
unterschiedlichen Spannungen versorgt werden: der eine mit 3,3V und der 
andere mit 1,8V.
Ich habe den LevelShifter-Baustein SN74LVT162245 gefunden. Kann man den 
Baustein mit den Mikrocontrollern wie in der Zeichnung beschalten?
Muss man bei SPI sonst etwas beachten?

Gruß
Siggi

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Du solltest zumindest MISO auf MOSI legen und andersrum?!

von Hendrik (Gast)


Lesenswert?

Nee nee, das ist schon korrekt, wie es Siggi gesagt hat: MOSI auf MOSI 
(Master out Slave in) und MISO auf MISO (Master in Slave out).

Theoretisch müsste es so funktionieren, wie Siggi es skizziert hat. 
Interessant wäre nur, ob noch Pull-Widerstände notwendig sind.

von Der (Gast)


Lesenswert?

Siggi schrieb:
> Ich habe den LevelShifter-Baustein SN74LVT162245 gefunden.

Nach dem Datenblatt von 
http://pdf1.alldatasheet.com/datasheet-pdf/view/96384/TI/SN74LVT162245ADLR.html 
erkennt der IC eine logische 0 sicher unter 0.8V und eine logische 1 
sicher über 2V. Dazwischen schaltet er irgendwo um. Bei welcher Spannung 
hängt aber von der Temperatur, Vcc, Toleranzen, ... ab.
Der 1.8V Controller kann also keine sichere logische 1 an den IC 
weitergeben.

Hendrik schrieb:
> Theoretisch müsste es so funktionieren, wie Siggi es skizziert hat.
Es wird wahrscheinlich funktionieren. Jeder CMOS-Eingang hat nen 
definierten Level, sobald beide µCs laufen und ihre Ports initialisiert 
haben. Bis dahin floatet der Eingang. Beim floaten können die ICs mehr 
Strom ziehen. Bei den Chips von TI sind es bis zu 4mA pro Eingang.

von Michael S. (rbs_phoenix)


Lesenswert?

Alternativ könnte man auch mit Open Collector-Ausgängen arbeiten. Wenn 
der/die µC(s) keine haben, dann könnte man diese ja nachrüsten.

Wenn der Master mit 3.3V läuft, könnte man ggf ja auch mit einfachen 
Spannungsteilern arbeiten und bräuchte nur einen OC-Ausgang vom Slave.
Statt 3 Spannungsteiler kann man auch einen 3.3V-Toleranten Buffer mit 
OC nehmen, wie 7407 oder 7417 und dann mit Pullup auf 1.8V ziehen.
Den OC für den 1.8V µC müsste man dann wohl mit 2 Transistoren und 3 
Widerständen aufbauen.

Wenn der Slave mit 3.3V läuft, könnte man pro Ausgang vom Master 2 
Widerstände und einen Transistor nehmen, um auf die 3.3V zu kommen und 
danach mit einem 3.3V Inverter die invertierung durch den Transistor zu 
korrigieren. Die Leitung vom Slave zum Master könnte man dann ggf wieder 
mit einem Spannungsteiler machen.

ggf ist auch hier noch was interessantes dabei.. Auch wenn du 
Bidirektional nicht brauchst.. Unidirektional kann man die ja auch 
betreiben:

http://www.mikrocontroller.net/articles/Pegelwandler#1.2C65V...5.2C5V_.3C-.3E_1.2C65V...5.2C5V

z.B.
1x SN74AVC1T45 (SOT23) und 1x SN74AVC4T245 (SOIC16/TSSOP16)
oder 4x SN74AVC1T45

von Hendrik (Gast)


Lesenswert?

Mir ist gerade aufgefallen, dass Siggi und ich einen Denkfehler haben: 
der MISO pin vom Slave kann nicht wie im Bild beschrieben an den 
SN74LVT162245 geführt werden. Die Seite wird mit einer anderen Spannung 
versorgt. Das geht wahrscheinlich in die Hose.

von Michael S. (rbs_phoenix)


Lesenswert?

Was spricht denn gegen die SN74AVC..

Oder etwas noch passenderes:
TXB 0104: http://www.ti.com/product/txb0104
TXB 0304: http://www.ti.com/product/txb0304

???

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
Noch kein Account? Hier anmelden.