web-dev-qa-db-ja.com

RaspberryPiシリアルポート

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

7
jukisu

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

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

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

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

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

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

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

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


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

10
sweber

組み込みのRaspberryPiシリアルポートは、説明されているように、0〜3.3ボルトの電圧レベルを使用します ここ 。 USBからシリアルへのコンバーターとディスプレイは、公称-15Vから+ 15VのRS232電圧レベルを使用し、最低でも-3V/+ 3Vです。これらの2つのレベル間で変換する必要があります。

出力電圧と入力電圧に互換性があるため、ループバックするとポートは機能します。

5
meuh