Frage

Mein Gehirn ist gebraten, also dachte ich, ich würde diesen an die Gemeinschaft weitergeben.

Beim Versenden von 1 Zeichen an mein eingebettetes System wird es konsequent angenommen, dass es 2 Zeichen erhält. Das erste empfangene Zeichen scheint dem übertragenen Zeichen zuzuordnen (auf unbekannte Weise) und das zweite empfangene Zeichen ist immer 0xff.

Hier ist, was ich beobachtet habe:

Tx char (in hex)    Rx character (in hex), I left out the second byte (always ff)
31                    9D
32                    9B
33                    99
61                    3D
62                    3B
63                    39
64                    37
65                    35
41                    7D
42                    7B
43                    79

Ich habe meine Uhren überprüft und sie scheinen in Ordnung zu sein. Der einzige Unterschied zwischen dieser nicht funktionierenden und der vorherigen Version besteht darin, dass ich jetzt einen RS485 -Chip verwende.

Ich habe das Signal bis zur MCU verfolgt und es sieht gut aus (bestätigt den Bitwert auf dem RX -Pin).

War es hilfreich?

Lösung

Das erste empfangene Charakter scheint dem übertragenen Charakter zugeordnet zu sein (auf unkodelle Weise)

In jedem Fall wird das TX -Byte 1 Bit nach links verschoben und dann invertiert.

Zum Beispiel:

31 = 00110001 9d = 10011101

0x31 << 1 = 01100010

Die Ergänzung von 01100010 ist 0x9d

Ich habe ein paar der anderen überprüft und scheint für sie alle gleich zu sein. Ich weiß nicht, woher das zweite Byte kommt, aber es könnte ein Ergebnis der wahrscheinlichen Signalinversion sein, die vor sich geht.

RS485 verwendet eine unterschiedliche Signalisierung. Es riecht nach dem Umgeschäftsausgang des Chips und steckt an einen RS232 -Eingang.

Ich habe das Signal bis zur MCU verfolgt und es sieht gut aus (bestätigt den Bitwert auf dem RX -Pin).

Welches Signal haben Sie als Bodenreferenz verwendet?

Andere Tipps

RS485 unterscheidet sich von RS232 auf elektrischer Ebene (differential gegenüber Single Ended und +/- 6V gegenüber +15/-3V)-beide Seiten Ihres Kommunikationsverbindens verwenden dasselbe Protokoll?

Wenn es sich um RS485 handelt, haben Sie den "Standardzustand" des Busses richtig? Wie wäre es mit der richtigen Anzahl von Stoppbits?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top