GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Raspberrypiシリアルポート?

書き込みたいディスプレイがあります。これは、シリアルポートを介して可能です。 USBからRS-232へのコンバーターを使用するとき、それは魅力のように機能します。シリアルコンバータのRX、TX、GNDワイヤだけを使用してみましたが、それでも機能します。このディスプレイをRaspberryPiと組み合わせた小さなケースで使用したいので、大きなUSB-RS-232コンバーター用のスペースがありません。
の内部シリアルポートを使用してみましたラズベリー。 $ sudo stty -F / dev / ttyAMA0 9600を使用して9600ボーに設定されます 。しかし、ディスプレイに接続すると、ゴミが表示されるだけで、通常の制御コマンド(RS-232コンバーターを使用して機能していた)も機能しません。
$ sudo minicom-b9600を使用-o -D / dev / ttyAMA0 GPIOをTXからRXにループすると、 minicomに適切な文字が表示されます。 コンソール。
GPIO-シリアルポートをUSB-RS-232コンバータのRXピンとTXピンにループし、アースを接続して minicomで両方のポートを開きます。 ボーを9600に設定すると、他の端末に一部の出力が表示されることがありますが、出力が表示されると、それも単なるゴミになります。

承認された回答:

問題は、ディスプレイにはRS232インターフェースがありますが、PiにはRS232インターフェースがないことだと確信しています。

Piには(LV-)UARTインターフェイスがあり、そのTXピンは論理に対して0Vを出力します 論理1の場合は3.3V 。 3.3VはすでにPiで利用可能であるため、これは非常に簡単に実装できます。ただし、これは単一のPCBまたは単一のデバイス内の通信でのみ機能します。

長距離のデバイス間の通信には、RS232のような干渉信号が発生しにくいシステムが使用されます。波形の論理構造(ビットレート、タイミング、開始、停止、パリティ、およびデータビット)はUARTの場合と同じですが、論理 1 論理の場合は+15V…+3V 。これは、より高い(そして負の)電圧があるだけでなく、それらの意味も逆になっていることを意味します。

したがって、ディスプレイがRS232レベルを期待し、Piからその3.3Vレベルを取得する場合、ほとんどの場合、データを認識しません。認識している場合、多くの場合、単なるゴミです。

そしてもちろん、同じインターフェースのRXとTXを接続すれば、期待どおりの結果が得られます。

ただし、RS232 TX出力が電流制限されていない場合、Piに損傷を与える可能性さえあります!

UARTからRS232へのコンバータボードがありますが、はんだ付けしたい場合は、ボードにMAX3232(および4つのコンデンサ)が含まれています。このICは、Piからの3.3V電源電圧からより高い(および負の)電圧レベルも生成します。

関連:Linux –出力を2>&1および1>&2にリダイレクトするのはなぜですか?

より一般的なのはMAX232です(なぜそう呼ばれるのかを推測します)が、3.3V動作ではなく、5V用です。

最後に、UARTとRS232は同じ論理構造を使用しているため、特にソフトウェア(プログラマー)によって、両方を区別できないことがよくあります。シリアルインターフェースの一種であるI²CやSPIのような他のインターフェースもありますが、これらは単に「シリアルインターフェース」と呼ばれることもありますが、「シリアルインターフェース」とは見なされません。


Linux
  1. Linux 用の仮想シリアル ポート

  2. ピンを変更せずにLinuxでシリアルポートを開く方法は?

  3. Linux でポートが開いているかどうかを効率的にテストしますか?

  1. Linux シリアルポートのリスナーとインタープリター?

  2. Linux の C でのシリアル ポートへの読み取りと書き込み

  3. RaspberryPi シリアルポート

  1. LinuxでBluetoothシリアルポートに接続してデータを送信する方法は?

  2. Netbsdシリアルポートゲートウェイ?

  3. Linux ネットワーク ポートの枯渇