Forum: Mikrocontroller und Digitale Elektronik TXS0108E schafft SPI Signal nicht


von Thomas M. (thomas_m453)



Lesenswert?

Hallo!

Ich versuche ein SPI signal und ein UART Signal von reinem Raspberry Pi 
3B über ein TXS0108E an ein Arduino Mega zu senden.

Zum testen versuche ich auf einen Breadboard und einem TXS0108E Breakout 
die Schaltung zu testen. Ich hab dafür die SPI Ausgänge vom Raspberry 
direkt an den TXS0108E gehängt und zum testen auf der Seite des Arduino 
nichts anderes angehängt außer einer Loop, die das MOSI direkt an MISO 
verbindet.

Anschließend hab ich mit einem Oszi die Signalpegel geprüft und 
festgestellt, das der TXS0108 diese nicht korrekt wiedergibt.

Grundsätzlich soll der Raspberry Pi und der Arduino Mega für UART 
kommunizieren und die SPI Schnittstelle mit einem zusätzlichen Reset-Pin 
möchte ich nur zum späteren flashen des Arduino verwenden.

Da ich das erste mal mit einem Pegelwandler arbeite und mit SPI/UART, 
versuche ich zu verstehen warum das Signal so falsch dargestellt wird. 
Laut meinen Recherchen sollte der TXS eigentlich für SPI geeignet sein 
(speziell bei meinem Testsignal von 9600Hz).

Ist es evtl. besser wenn ich einen Unidirektionalen Pegelwandler 
verwende? Gibts hier Empfehlungen? Beispielsweise SN74LV1T04 da mit 
beiden Spannungen verwendbar? Gibts vl. auch einen in einem DIP gehäuse?

Danke für eure Hilfe!

von Gustl B. (gustl_b)


Lesenswert?

Also ich vermute da ein Problem bei der Messung. Was hast du genau wie 
angeschlossen? Das sieht so aus als würden Treiber gegeneinander 
treiben.

Das Signal geht über A4 rein, kommt an B4 raus. Dann in B3 rein und aus 
A3 wieder raus. Dann darf A3 nicht vom Raspberry getrieben werden.

Und generell, diese Bausteinserie verwende ich oft und hatte noch nie 
Probleme.

: Bearbeitet durch User
von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ersetze doch mal die Drahtbrücke auf der rechten Seite durch einen 
nichtinvertierenden Treiber und wiederhole deine Messung.

von Manfred (Gast)


Lesenswert?

Thomas M. schrieb:
> Zum Testen versuche ich auf eine_m_ Breadboard und einem TXS0108E Breakout
> die Schaltung zu testen.

Bei Breadboard und Arduino bekomme ich immer Würgereiz.

Den TXS0108E auf Chinaboard nutze ich am 5V-Arduino sowohl um SD-Karten 
(SPI) zuverlässig anzusteuern als auch am I2C, bislang ohne jegliche 
Probleme.

Das habe ich aber nicht auf Kinderbrettchen mit dubiosen Kabeln 
zusammengesteckt, sondern vernünftig auf Lochraster gelötet.

von Gustl B. (gustl_b)


Lesenswert?

Ach das geht schon auch auf Lochraster. Aber hier ist ein Fehler in der 
Beschaltung. Diese halb hohen Pegel sehen sehr nach einem 
Treiberkonflikt aus.

von Thomas M. (thomas_m453)


Angehängte Dateien:

Lesenswert?

Im Anhang hab ich aktuell die Verkabelung.

Die Pins links A3 und A4 kommen direkt vom RPI Pin 21 und 19 (MOSI und 
MISO). An diesem hängt sonst nichts. VCCa kommt direkt von PIN 1 (3,3) 
und wird auf OE weitergeleitet. VCCb und GND kommt vom Netzteil. (RPI 
und Arduino werden vom gleichen Labornetzteil betrieben).

Wenn ich aber die Loop ohne den TXS mache, kommen die Daten korrekt an 
bzw. sind die Signale in Ordnung

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Dann wäre mal interessant wenn du die Verbindung von MISO am RPI trennst 
und einfach so misst. Da müsstest du mit dem Oszilloskop ja auch ohne 
Verbindung zum RPI die Bits sehen können.

von Bernd (Gast)


Lesenswert?

Wenn ich das richtig sehe, hat Dein 'Messgerät' eine Analogbandbreite 
von 200 kHz. Da sollte die SPI-Geschwindigkeit nicht viel schneller als 
vielleicht 50 kHz sein, sonst kann Dein 'Messgerät' nicht folgen...

von Falk B. (falk)


Lesenswert?

Thomas M. schrieb:
> Ist es evtl. besser wenn ich einen Unidirektionalen Pegelwandler
> verwende?

Aber sicher. Denn dein IC ist einer mit automatischer 
Richtungsumschaltung! Diese sind SEHR mit Vorsicht zu genießen, denn die 
machen nur allzuoft Probleme!

> Gibts hier Empfehlungen? Beispielsweise SN74LV1T04 da mit
> beiden Spannungen verwendbar? Gibts vl. auch einen in einem DIP gehäuse?

Für eine einfache 3,3->5V Wandlung reicht praktisch ein IC der HCT 
Familie, z.B. 74HCT244. Für die Gegenrichtung 5V -> 3,3V kann man einen 
74HC4050 nehmen.

von Falk B. (falk)


Lesenswert?

Thomas M. schrieb:
> Im Anhang hab ich aktuell die Verkabelung.

Kann es ein, dass GND gar nicht verdrahtet ist? Außerdem ist eine 
Steckbrettverdrahtung keine gute Idee bei so einem schnellen und 
giftigen IC!

"9.3.3 Output Load Considerations
TI recommends careful PCB layout practices with short PCB trace lengths 
to avoid excessive capacitive loading and to ensure that proper one-shot 
riggering takes place. PCB signal trace-lengths should be kept short 
enough
such that the round trip delay of any reflection is less than the 
one-shot duration. This improves signal integrity by ensuring that any 
reflection sees a low impedance at the driver."

Wenn gleich deine Leitungslängen keine 30ns Laufzeit erreichen, so ist 
die Verkabelung alles andere als HF-tauglich. Das klingelt 
wahrscheinlich so sehr, daß der IC mehrfache Signalflanken sieht und 
dementsprechend oft schaltet.

von Thomas M. (thomas_m453)


Lesenswert?

Falk B. schrieb:
> Kann es ein, dass GND gar nicht verdrahtet ist? Außerdem ist eine
> Steckbrettverdrahtung keine gute Idee bei so einem schnellen und
> giftigen IC!

GND ist angeschlossen (Grüner draht - dieser geht direkt ans Netzteil 
zurück. Die GND auf dem Breadboard ist eine durch MOSFET IRLZ34N 
gesteuerte GND Leitung, daher verwende ich eine direkte Leitung hier)

Falk B. schrieb:
> Wenn gleich deine Leitungslängen keine 30ns Laufzeit erreichen, so ist
> die Verkabelung alles andere als HF-tauglich. Das klingelt
> wahrscheinlich so sehr, daß der IC mehrfache Signalflanken sieht und
> dementsprechend oft schaltet.

Ich werde versuchen einen Unidirektionalen zu verwenden und schauen wie 
die Ergebnisse sind. Später soll das natürlich eine Platine werden aber 
zum testen und probieren sind halt diese Breadboard einfacher :).

Danke für eure Hilfe!

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Thomas M. schrieb:
> Die GND auf dem Breadboard ist eine durch MOSFET IRLZ34N
> gesteuerte GND Leitung

Das gehört sich nicht.

von Thomas M. (thomas_m453)


Lesenswert?

Manfred schrieb:
> Das gehört sich nicht.

Wieso nicht?

von Falk B. (falk)


Lesenswert?

Manfred schrieb:
> Thomas M. schrieb:
>> Die GND auf dem Breadboard ist eine durch MOSFET IRLZ34N
>> gesteuerte GND Leitung
>
> Das gehört sich nicht.

Weil dadurch die wildeststen Dinge passieren können, bis hin zur 
Zerstörung des ICs, wenn man dem die GND-Verbindung unterbricht. Lass 
es.

von Thomas M. (thomas_m453)


Lesenswert?

Wäre es besser wenn ich die 5V Leitung Schalte?

Hintergrund: Ich möchte mit dem RPI den Arduino Mega Ein/Aus schalten 
können inkl. seiner Peripheriegeräte (2x LED Strips, 2x Piezo 
Knocksensoren, 1x Ultraschallsensor, 1x Linienlaser (Hängt nicht direkt 
am Arduino aber soll auch mit geschalten werden). Sprich, wenn der RPI 
runterfährt soll der Arduino mit den Peripheriegeräten keinen Strom 
bekommen. Es soll einfach der Standbystrom reduziert wenn der RPI nicht 
läuft. Wenn der RPI hochfärt wird ein GPIO auf H gesetzt das den MOSFET 
aktiviert und wenn er runterfährt, wird der GPIO auf L gesetzt.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Thomas M. schrieb:
> Wäre es besser wenn ich die 5V Leitung Schalte?

Meistens ja. Dazu braucht man hier einen P-Kanal MOSFET. Aber löse 
erstmal die anderen Probleme.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Thomas M. schrieb:
> Wäre es besser wenn ich die 5V Leitung Schalte?

Nur so macht man das. Dabei ist zu beachten, dass am ausgeschalteten IC 
keine Daten mit High-Pegel anliegen, sonst steht auch dadurch Ärger ins 
Haus.

Falk B. schrieb:
> Dazu braucht man hier einen P-Kanal MOSFET.
Anhang, hier so aufgebaut und funktioniert. Eingeschaltet wird per 
Taster direkt in der Batterieleitung. Aus wird über den µC angefordert, 
damit der eine evtl. noch offene Ausgabe zuende bringt, bevor er sich 
abklemmt.

Daneben nochmal die Simpelgrundschaltung.

> Aber löse erstmal die anderen Probleme.
Ich bin sicher, dass die sich mit einem ordentlichen Aufbau lösen 
lassen.

von Maxim B. (max182)


Lesenswert?

Thomas M. schrieb:
> Anschließend hab ich mit einem Oszi die Signalpegel geprüft und
> festgestellt, das der TXS0108 diese nicht korrekt wiedergibt.

Solche IC wie TXS0108 sollte man nur dann verwenden, wenn beidseitige 
Übertragung mit automatischer Richtungsänderung wirklich unbedingt 
notwendig ist. Für einseitige Übertragung paßt gewöhnliche Logik besser, 
sie arbeitet viel sauberer.
Es gibt viele Varianten. Will man "richtige" Pegelwandler, kann man 
SN74LVC8T245 nehmen: beide Seiten dürfen mit 1,65 bis 5,5 Volt in allen 
Varianten arbeiten.
Will man einfacher machen, so kann man für 2,5 - 3 - 3,3 Volt -> 5 Volt 
HCT oder VHCT benutzen, umgekehrt passen VHC und LVC gut. Diese 
IC-Serien sind groß, man kann Pegeländerung zusammen mit anderen 
Funktionen mischen, z.B. mit 74VHCT138 oder mit 74LVC74 oder mit 
74VHCT595 usw.

: Bearbeitet durch User
von Maxim B. (max182)


Lesenswert?

Manfred schrieb:
> Nur so macht man das. Dabei ist zu beachten...

Wenn alles nur dazu dient, ATmega ein- und auszuschalten, gibt es auch 
andere Möglichkeiten wie mehrere Sleep Modi. Dann keine externe MOSFETs 
notwendig.
Auch gibt es IC Spannungsregler, die Shutdown haben. Auch Buck DC/DC 
Converter, z.B. leicht zu finden sind TS3552 und AOZ3015. Auch dann wird 
MOSFET nicht notwendog.

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Maxim B. schrieb:
> Solche IC wie TXS0108 sollte man nur dann verwenden, wenn beidseitige
> Übertragung mit automatischer Richtungsänderung wirklich unbedingt
> notwendig ist. Für einseitige Übertragung paßt gewöhnliche Logik besser,
> sie arbeitet viel sauberer.

Ich kenne diese Bedenken, aber die Praxis zeigt, dass der TXS0108E 
funktioniert. In gewöhnlicher Logik brauche ich zwei ICs, Boards mit dem 
TXS0108E bekomme ich über Ali 10 Stück für knapp 7 Euro.

Man muß es halt ordentlich aufbauen, Falk B.:
Beitrag "Re: TXS0108E schafft SPI Signal nicht"

von Jo Mo (Gast)


Angehängte Dateien:

Lesenswert?

Der Hersteller sagt: Die TXB010x-Geräte sind nicht für den Gebrauch 
bestimmtin Open-Drain-Anwendungen. Für Anwendungen wie I 2 C, bei denen 
Verbindungen und Schnittstellen erforderlich sindmit einem 
Open-Drain-Treiber bietet TI Übersetzer vom Typ TXS (dh "S" für 
Switch-Typ) an.
Hört auf mit dem Gefummel nehmt einen ohne IC. Habe jetzt auch 
aufgegeben.

von Gustl (Gast)


Lesenswert?

Nun, es ging hier ja auch um SPI und nicht um I2C.

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.