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!
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
Ersetze doch mal die Drahtbrücke auf der rechten Seite durch einen nichtinvertierenden Treiber und wiederhole deine Messung.
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.
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.
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
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.
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...
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.
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.
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
Thomas M. schrieb: > Die GND auf dem Breadboard ist eine durch MOSFET IRLZ34N > gesteuerte GND Leitung Das gehört sich nicht.
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.
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
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.
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.
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
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
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"
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.
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.