0

カーネル 2.6.39 の Linux マシンで、シリアル インターフェイス RS-485 経由で通信しようとしています。このブレイクアウト ボードをpySerialモジュールと一緒に使用しています。インターフェイスを介して何かを書き込むと、データが破損することがよくあります。ブレイクアウトボードの製品ページで、誰かが言及しました:

最初から、シリアル データを送信してから RTS ラインを Low にする前に約 25 ミリ秒の遅延が必要であることに気付きました。

バイトを書き込むとすぐに RTS ラインが高くなり、書き込み直後に低くなることがわかりました。そのラインを(もう少し長く)高く保つにはどうすればよいですか?

4

2 に答える 2

0

多くの試行錯誤の後、私は問題を見つけたと思います。私の推測では、serial.write() を使用すると、カーネルから離れた RS-485 ドライバーが RTS ラインを短時間高に設定しています。serial.write() は文字を /dev/ttyS1 に書き込みます。この時点から、RS-485 用の Linux ドライバーは、文字を書き込むためにシリアル バスを制御します。この動作中、実際の書き込みの瞬間に RST ラインを短時間ハイに設定します。

この書き込み操作をより高いレベルで制御することはできません。ドライバーをハックするか、RTS ラインを制御可能な別の GPIO に接続する必要があると思います。

于 2013-10-23T09:44:18.053 に答える