Raspberry Pi(Bモデル、raspian wheezy)とSTM32F4ボードの間でシリアル接続(GPIO UART pin))を介してデータを送受信しようとしています。
シリアルポートを設定するために、次のようないくつかのチュートリアルにあるすべてのステップを実行しました。 http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port
STM32F4ボードへの接続に失敗したとき、piのTX、RXピンを相互に接続するだけでシリアルポートをローカルでpiでテストでき、minicomで入力されたデータを繰り返す必要があると読みました。
残念ながら、これも機能しません。
ファイル 'cmdline'および 'inittab'のttyAMA0の設定は問題ありません。 (多くのチュートリアルで説明されているように)
そしてまた、 https://github.com/lurch/rpi-serial-console から自動設定スクリプトを試しました
RXをrpiのTXピンに直接接続しても、minicomでは何も出力されません。与えられた入力を繰り返すpythonスクリプトを使って試してみました。何も機能していないようで、ここではちょっと迷っています。
Minicom startコマンドは正しいはずです(異なるボーレートで試行されました)。
root@raspberrypi:/home/jef# minicom -b 9600 -o -D /dev/ttyAMA0
OPTIONS: I18n
Compiled on Apr 28 2012, 19:24:31.
Port /dev/ttyAMA0
Minicomの下部には常にオフラインのステータスが表示されます。
CTRL-A Z for help | 9600 8N1 | NOR | Minicom 2.6.1 | VT102 | Offline
python nothinig is swownで利用可能なシリアルポートをチェックする場合:
python -m serial.tools.list_ports
no ports found
ユーザーはデイルアウトグループに属しているため、これは問題ではありません(ルートおよび非ルートとして試行):
root@raspberrypi:/home/jef# id
uid=0(root) gid=0(root) groups=0(root),20(dialout),1001(indiecity)
Gettyがシリアルポートを使用していないことの確認:
root@raspberrypi:/home/jef# ps aux | grep getty
root 2809 0.0 0.1 3740 804 tty1 Ss+ 10:36 0:00 /sbin/getty --noclear 38400 tty1
root 2810 0.0 0.1 3740 804 tty2 Ss+ 10:36 0:00 /sbin/getty 38400 tty2
root 2811 0.0 0.1 3740 804 tty3 Ss+ 10:36 0:00 /sbin/getty 38400 tty3
root 2812 0.0 0.1 3740 804 tty4 Ss+ 10:36 0:00 /sbin/getty 38400 tty4
root 2813 0.0 0.1 3740 804 tty5 Ss+ 10:36 0:00 /sbin/getty 38400 tty5
root 2814 0.0 0.1 3740 804 tty6 Ss+ 10:36 0:00 /sbin/getty 38400 tty6
root 3129 0.0 0.1 2012 624 pts/0 S+ 11:57 0:00 grep getty
私はttyAMA0を使用して他のアプリをチェックしましたが、何もしませんでした:
root@raspberrypi:/home/jef# ps aux | grep ttyAMA0
root 3125 0.0 0.1 2012 628 pts/0 S+ 11:56 0:00 grep ttyAMA0
ユーザーはシリアルポートにアクセスする正しい権利を持っています:
root@raspberrypi:/home/jef# ls -l /dev/ttyAMA0
crw-rw---T 1 root dialout 204, 64 Dec 25 11:53 /dev/ttyAMA0
逃したことはありますか?シリアルポートの設定方法に関する20のチュートリアルとブログを読みましたが、何が原因なのかわかりません。探してほしいアドバイスをください。
Arduinoをレベルシフター(3.3vから5v)を介してRaspberry Piシリアルポートに接続していて、minicomにも問題がありました。 Arduinoからの出力をminicomで受け取ることはできましたが、どの設定を試しても送信するものはありませんでした。 USB(/ dev/ttyUSB0)に接続されたArduinoを使用したminicomでもまったく同じ問題がありました。
最後に、基本的なpythonシリアルコンソールを使用して、pip(pip install pyserial)を使用してpyserialをインストールし、次のコマンドを実行しました。
python -m serial.tools.miniterm -p /dev/ttyAMA0 -e
今日も似たようなことを経験しました。ハードウェア制御を無効にするようにminicomを設定する必要があり、ループが機能し、UARTを介して2つのRaspisを相互接続しました。
また、TTYAMA0接続文字列minicom -b 115200 -o -D/dev/ttyAMA0で115200バッドレートを使用しています
Alt A
Z
O
シリアルポート設定[入力]
Fはハードウェアフロー制御をオフに切り替えます
*これらの設定を保存すると、入力したものが画面に表示されますが、実際にはuarts経由で送信されます。
私のミニコムフッターもこのように見えます(ボーレートの差分だけですが、オフラインでも表示されますが機能します)
CTRL-A Zヘルプ用| 115200 8N1 | NOR | Minicom 2.5 | VT102 |オフライン
幸運を!
次のスケッチをArduinoに置くことで、簡単なテストを実行できます。
#define SERIAL_BAUD 115200
void setup() {
//Init serial connection
Serial.begin(SERIAL_BAUD);
Serial.setTimeout(1);
}
void loop() {
if ( Serial.available() ) {
byte type = Serial.read();
Serial.write(type);
}
}
そして、次の図を使用して接続します。
注:USBケーブルを接続しないでください Arduino。 Raspberry Piを搭載します。
注:Raspberry Piは3.3Vで動作するため、それに接続するものはすべて3.3Vを実行しているか、レベルシフターを備えている必要があります。レベルシフターの詳細については、 ここ を参照してください。 (ロジック電圧レベルセクションに移動)Sparkfunには、基本的なレベルシフター(回路図付き) ここ があります。
その後、screen
をインストールして実行できます。画面は、シリアルポートに接続するための非常にシンプルな方法です。
apt-get install screen
次に、以下を実行します。
screen /dev/ttyAMA0 115200
画面に何も表示されません。しかし、入力を開始すると、書いている文字がターミナルにループバックされていることに気づくでしょう。
注:画面がまだ空白の場合は、接続を再確認する必要があります(Arduinoの電源LEDを確認することをお勧めします)。
疑わしいときは、私の全体の例 here を見ることができます。
ヒントの人たちに感謝します。試してみたが問題は解決しなかったRaspberry Pi UARTポートがショートカットされているようです。借りた別のRaspberry Pi(モデルA)とBモデルに接続しますローカルで表示せずに、Aモデルで送信したすべての送信文字を返しました。
新しいモデルBを購入し、AURTポートをテストしましたが、正常に動作しています。
購入したSTM32F4ボードはすべて3.3Vであるはずですが、raspiが壊れているようですUART=ある時点で機能しなかった(またはまったく機能しなかった)。もう一度テストするときはとにかくLLCを使用するSTM32F4ボードでは、何も吹き飛ばさないようにしています。
ヒントをもう一度Thx!