uart速度が間違っている可能性があります
-
26-09-2019 - |
質問
私の脳は揚げられているので、私はこれをコミュニティに渡すと思いました。
埋め込まれたシステムに1文字を送信すると、2文字を受け取ると一貫して考えています。最初の受信されたキャラクターは、送信されたキャラクターにマッピングされているように見えます(いくつかの未知の方法で)、2番目の受信された文字は常に0xffです。
これが私が観察したことです:
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
私は時計をチェックしています、そしてそれらは大丈夫のようです。この非機能バージョンと以前のバージョンの唯一の違いは、私が現在RS485チップを使用していることです。
私は信号をMCUまでずっと追跡しましたが、それはうまく見えます(RXピンのビット値が確認されました)
解決
最初に受け取ったキャラクターは、送信されたキャラクターにマッピングされているようです(いくつかの非核の方法で)
いずれの場合も、Txバイトは1ビットの左にシフトされ、その後逆転します。
例えば:
31 = 00110001 9D = 10011101
0x31 << 1 = 01100010
01100010の補体は0x9dです
私は他のいくつかをチェックしましたが、それらすべてにとって同じように見えます。 2番目のバイトがどこから来ているのかわかりませんが、それが起こっている可能性のある信号反転の結果である可能性があります。
RS485は微分シグナル伝達を使用します。チップの倒立出力を使用し、RS232入力に接続したような匂いがします。
私は信号をMCUまでずっと追跡しましたが、それはうまく見えます(RXピンのビット値が確認されました)
地上参照としてどのような信号を使用しましたか?
他のヒント
RS485は、電気レベルのRS232とはまったく異なります(差動とシングルエンド、+/- 6V対 +15/-3V) - 同じプロトコルを使用して通信リンクの両側ですか?
RS485の場合、バスセットの「デフォルト状態」を正しく取得しましたか?正しい数のストップビットはどうですか?