Hallo, ich möchte die Kommunikation auf einem 2-Draht-Bus mit 2 Teilnehmern "abhören" und dabei die Datenrichtung erkennen um herauszufinden welcher Teilnehmer gerade die Leitungen wie beeinflusst. Kennt jemand eine (einfache) Schaltung, die ich an die zwei Leitungen anklemme und an der ich dann einen Logik Analysator anschliessen kann? Im Anhang ein Bild eines Frames auf diesem Bus.
Sieht nach irgendwas symmetrischen (RS422, RS485 oder CAN) aus. Den Logik-Analysator kannst du auch so anschliessen.
>Wie Die Richtung bei einem 2-Draht-Bus erkennen?
geht leider ohne das Protokoll zu kennen nicht!
Klaus
Die Richtung kann man nur feststellen, wenn man den Bus auftrennt, und eine Schaltung dazwischen baut, die den Bus nicht weiter beeinflusst...
Erstmal vielen Dank für die Antworten! > Den Logik-Analysator kannst du auch so anschliessen. Habe ich schon gemacht - siehe Bild. > Die Richtung kann man nur feststellen, wenn man den Bus auftrennt, und > eine Schaltung dazwischen baut, die den Bus nicht weiter beeinflusst... Die Leitungen lassen sich ohne Probleme auftrennen. Hast du (oder jemand anders) zufällig einen Vorschlag für die entsprechende Schaltung?
tja, das wird nicht ganz einfach. Erstmal ist das nix symmetrisches, sondern eine ziemlich einfache serielle synchrone Übertragung, a la SPI. Dann bleibt erstmal die Frage: können beide Seiten überhaupt den Takt erzeugen? Üblicherweise kommt der nur von einem (dem master), kann aber theoretisch von beiden kommen. Kommt der Takt nur von einer Seite, wirds einfacher.
Auf beiden Seiten PullUps und in die Leitung einen Widerstand. Dann kann man erkennen, auf welcher Seite der Sender liegt.
Ich mach das immer so: 1) Leitung auftrennen 2) Widerstand z.B. 10-100 Ohm einfügen 3) links und rechts vom Widerstand Oszi anschliessen (oder oben und unten, je nachdem wie die Leitung verläuft ;-) 4) An den Spannungen an den beiden Widerstandsanschlüssen kannst du sehen, wer "aktiv" am Bus herumzerrt und wer nur hört. Mit einem Komparator und einem RS-FF könnte man sich eine Art "Richtungsanzeiger" basteln. EDIT: Schon wieder "nur" Zweiter :-(
Ätsch.... Hatte die Idee schon früher, aber musste zwischendurch mal weg.
Ich habe jetzt mal anhängende Schaltung aufgebaut und meinen Logic Analyzer an die Ausgänge des LM139 (LM339) angeschlossen, aber leider komme ich auf keinen grünen Zweig. Wenn ich die Spannung am Poti so eingestellt habe, dass Daten "durchkommen", dann sehe ich die Daten immer an beiden Ausgängen... Ich habe auch schon 2 Dioden in Reihe antiparallel geschaltet aber auch das hat leider nichts gebracht... Ist an meiner Schaltung denn etwas Grundlegendes verkehrt? @ crazy horse Ich bin nicht sicher, aber ich denke schon, dass beide Seiten den Takt erzeugen können.
Hi Mit zwei von den ICs im Anhang sollte es gehen. MfG Spess
Hmm - ich verstehe nicht ganz wie mir das helfen soll - bei "meinem" Bus handelt es sich nicht um I²C soweit ich das sagen kann. Ich kenne mich aber mit I²C auch nicht aus...
Ich habe mir da selber ein Ei gelegt: beim LM339 muss die Versorgungsspannung etwa 2V größer sein als die Spannungen, die verglichen werden sollen. Und ich wollte mit 5V Versorgungsspannung 5V-Signale vergleichen... Ich habe jetzt die Versorgungsspannung auf 12V erhöht und schon sieht es wesentlich besser aus.
> Versorgungsspannung etwa 2V größer sein als die Spannungen, > die verglichen werden sollen. Ja, da isser wieder, der Common Mode Voltage Range ;-) Ein beliebter Fehler, auch bei alten Hasen. EDIT: Du kannst statt der Dioden auch Widerstände (oder wenigstens Shottky-Dioden BAT48&Co) verwenden, dann ist der Spannungsabfall nicht so groß.
> Ja, da isser wieder, der Common Mode Voltage Range ;-) > Ein beliebter Fehler, auch bei alten Hasen. Exakt der war es ;) Ich würde mich zwar nicht als alten Hasen bezeichnen, aber wissen hätte ich das müssen... Wer lesen kann (und es auch tut) ist halt klar im Vorteil... > EDIT: > Du kannst statt der Dioden auch Widerstände (oder wenigstens > Shottky-Dioden BAT48&Co) verwenden, dann ist der Spannungsabfall nicht > so groß. Ich weiß. Das war in diesem Fall aber unnötig - im Gegenteil: ich hatte sogar noch je 2 Dioden in Reihe (also 4 pro Datenleitung)...
ein Serienwiderstand (symetrisches Netwerk mit ~) sollte geringfüge Spannungsdifferenzen erzeugen. ein Komperator an beiden Seiten ist dann in der Lage zu erkennen auf welcher Seite eine Leitung down gezogen wird(I²C), oder eine spannung generiert wird(RS422 CAN) somit ließe sich der Aktive (Sendende) Teilnehmer erkennen lassen.
Die abgebildete Schaltung war vor über 15 Jahren einmal sehr nützlich, das mir damals noch vollkommen unbekannten Format des Datentransfers zwischen einem Kartenleser und einer Smartcard (VC ;-)) zu analysieren. Im Ruhezustand befindet sich der 1-Draht-Bus zwischen Karte und Leser auf High, der jeweilige Sender zieht die Leitung den Daten entsprechend auf Low. Bei niedrigen Datenraten um 9600 Baud genügten recht kleine Ströme und dementsprechend große Widerstandswerte, so daß die Kommunikation zwischen Karte und Leser nicht gestört wurde. Die Potentialverschiebungen an der jeweiligen Empfängerseite (Low aufgrund der Basis-Emitter-Strecke um ca. 0,6 V angehoben - High reduziert durch den Strom in den Pull-Down-Widerständen) erwies sich ebenfalls als unproblematisch. Die Werte der Widerstände kommen aus dem Gedächtnis, die Größenordnung müsste aber stimmen. Ob ich die beiden Pull-Up-Widerstände, R3 und R4 überhaupt gebraucht habe, kann ich nicht mehr genau sagen, evt. reichten auch die Pull-Ups in Karte und Leser, bzw. deren Quell-Ströme. Die Funktionsweise ist schnell beschrieben: Je nach Datenrichtung liegt am Collector des einen oder anderen Transistors bei einem active-Low-Bit von Karte bzw. Leser ein positives Signal an. Das NOR-Gate kombiniert die Signale für beide Richtungen, und liefert wieder ein active-Low-Signal. Das sind die Daten (für beide Richtungen). Das Flip/Flop detektiert und hält die Datenrichtung, bis eine Übertragung in der jeweils anderen Richtung erfolgt. Verzögert man die Daten noch, (bspw. durch zwei freie HC02-Gatter) sind die Signale zeitlich "sauber", d.h. bereits zu Beginn des ersten Datenbits ist das Richtungssignal gültig. (Das Übertragungsende in einer Richtung war damals unkritisch, das gab es ohnhin eine deutliche Pause.) Für einen 2-Draht-Bus benötigt man die Schaltung natürlich in doppelter Ausführung... MfG
Hmm, bei rund 5 KHz mag das ja funktionieren. Aber - mit den üblichen Streukapazitäten und so geringen Strömen bzw. hohen Wiederstandswerten - auch noch mit den 100 oder gar 400 KHz des I²C-Bus?
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.