invertiertes SerialPort Signal auslesen

  • Hallo Community,


    ich versuche ein invertiertes Serial Port Signal auszulesen. Die Daten kommen mit einer Baudrate von 57600 am RX von meinem USB-TTL/UART Adapter an. Sie stammen von einer "Taranis X9D" - eine professionelle Fernsteuerung.
    Die Daten beeinhalten Telemetriedaten. Ich möchte ersteinmal lesbare Daten über den TTL/UART USB-Adapter bekommen, sodass ich meine Programme auf dem Laptop schreiben und direkt ausführen kann. Sprich: Ersteinmal kein Pi sondern einen Xubuntu Laptop mit USB-Adapter.

    Wenn ich den "Input" mit pyserial direkt ausgebe, dann sehe ich nur Fragezeichen. Laut einem Entwickler der Fernsteuerung ist das SerialPort Signal invertiert. Ich bin absolut überfordert wie ich nun damit umgehen soll. Ich wüsste nicht wie ich die Daten nun wieder invertieren kann...

    Bisher war RX an TX und TX an RX verbunden. Mein Adapter hat aber auch noch DTR und CTS - kann damit nur leider nichts anfangen.

    Ich empfange nur Daten über den SerialPort. Ein Senden irgendwelcher Daten ist nicht notwendig.

    Wer kann helfen?

    Grüße,
    Marc

  • mit MAX3232/MAX3222 versucht, direkt am Pi?
    würde diesen Weg gehen.

    "The transmitters are inverting level translators that convert CMOS-logic levels to 5.0V EIA/TIA-232 levels."

    https://datasheets.maximintegrated.com/en/ds/MAX3222-MAX3241.pdf
    Automatisch zusammengefügt:
    wenns dann noch verkehrt ist einfach einen Inverter IC bei RXD und TXD vor/nachschalten. Am RS232 würde ich das nicht machen, da sind bis zu +-12V Pegel drauf je nach Gegenstelle.
    der MAX3232 mach ca. 5-6V Pegel (<2* VCC) siehe blau.
    Rot ist TXD PI, Blau ist MAX232 TXD
    Automatisch zusammengefügt:
    Warte mal jetzt ist mir alles klar. Deine Gegenstelle benutzt keinen MAX3232 und ist damit vermutlich nicht RS232 konform! Der geht direkt aus dem IC raus. Das heißt du musst die Leitungen direkt mit dem PI RX,TX verbinden oder du verpasst deiner Gegenstelle einen MAX2xx IC.

    Welche Pegel hat deine Gegenstelle das wäre wichtig zu wissen, wenns 3,3V sind könntest du vielleicht direkt an die Pi ran gehen. ich würde Sicherheitshalber den MAX bei der Gegenstelle rein tun.


  • Danke für die Antwort!
    Schaust du dir bitte mal das hier an:
    https://github.com/opentx/opentx/…rical-interface

    Mich verwirrt diese Tabelle bei Electrical Interface. Kannst du mir dazu nocheinmal etwas sagen? Trotzdem einen MAX32** verwenden?

    Und muss ich irgendwie "speziell" diese Daten auslesen? reicht da nicht pyserial dazu?

    Einmal editiert, zuletzt von M4RC (12. Januar 2017 um 12:53)

  • Ich bin jetzt kein grosser Experte fuer die 232s, aber da das Signal "nur" invertiert ist, und du auf beiden Seiten schon 3.3V hast, wuerde ich das einfach mit einem normalen inverter machen. In Software lässt sich das nicht lösen, weil ja zB Start/Stob-Bits die definierten Pegel fuer 1 haben müssen, die kommen dann nicht klar mit einer 0 stattdessen. Ausser es gibt da eine Treiber-Option, aber das bezweifele ich. Man findet zum gleichen Problem zB das hier: https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=22258

  • aranis serial port uses RS-232 polarity for RX and TX signals, but it won't output full RS-232 voltage levels (from -15V to +15V) on TX line. The RX input is RS-232 tolerant.

    was ich da lesen würde ist Pegel 0 / 3.3 . Also raspberry Pi kompatibel.
    Keine Invertierung wie bei RS232 üblich und duch MAX bereitgestellt.

    Also genau wie vermutet. Du kannst das direkt an die Pi anschließen.
    Wenn du deinen Adapter mit Laptop/PC verwenden willst dann musst du den MAX2x beim Taranis X9D anschließen. So wie im Schaltplan (statt Pi dein Taranis X9D).

  • ja der MAX hat eine Invertierung, "The transmitters are inverting level translators that convert CMOS-logic levels to 5.0V EIA/TIA-232 levels."
    was auch am Oszi Bild erkennbar ist. Das OSzi bIld ist großes A also 1000001

    Ich sehe das so was immer auf RS232 ist, es ist invertiert zu UART Pi.
    Das heißt zwei Pis oder µC zusammenschalten geht
    µC/Pi und Rs232 gewandelte Signale sind nicht kompatibel.

    µC/Pi mit UART + einen USB Adapter (RS232) = funktioniert nicht.

    Einmal editiert, zuletzt von evil (12. Januar 2017 um 15:20)

  • Na, das lese ich jetzt auch noch nicht so. RS232 hat (aus welchen Gruenden auch immer) augenscheinlich prinzipiell eine Invertierung drin. +5V -> -15V, 0V->+15V. Aber hier muss eine doppelte Invertierung passieren, oder man kann ggf. die beiden MAX232 kreuzweise vertauschen. Aber das waere viel Aufwand fuer eine simple 3.3V Logiklevel-Wandlung.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!