Raspberry Pi3(またはそれ以降のモデル)でシリアル作業を行う方法


回答:


65

この答えはまだ正しいですし、変更の性質をより詳細に説明していますが、現在のRaspbianのほとんどのユーザーはsudo raspi-configSelect Interfacing Options / Serialを実行し、シリアルコンソールが必要かどうかを指定し(おそらくいいえ)、シリアルポートハードウェアを有効にする(おそらく)はい)。次に/dev/serial0、シリアルポートにアクセスするコードで使用します。

Raspberry Pi3、Pi3B +、Pi3A +、PiZeroWのBCM2837には2つのUARTがあります(以前のバージョンと同様)が、Bluetooth機能をサポートするために、フル機能のPL011 UARTはヘッダーピンからBluetoothチップに移動し、ミニUARTはヘッダーピン8および10
(Pi4のSOCには追加のUARTがありますが、ピン8および10およびBluetoothのデフォルトシリアルにはBCM2837と同じ2つのUARTが使用されます。)

これは、シリアルインターフェイスのユーザーにとって多くの結果をもたらします。

/dev/ttyAMA0以前UARTにアクセスするために使用されるが、今のBluetoothに接続します。
miniUARTはで利用可能になりました/dev/ttyS0
最新のオペレーティングシステムソフトウェアには、Pi3以前のモデルで同じソフトウェアに/dev/serial0置き換え/dev/ttyAMA0/dev/serial0使用できるように、適切なデバイスを選択するがあります。

残念ながら、他にも多くの結果があります:

The mini UART is a secondary low throughput UART  
  intended to be used as a console.
The mini Uart has the following features:
• 7 or 8 bit operation.
• 1 start and 1 stop bit.
• No parities.
• Break generation.
• 8 symbols deep FIFOs for receive and transmit.
• SW controlled RTS, SW readable CTS.
• Auto flow control with programmable FIFO level.
• 16550 like registers.
• Baudrate derived from system clock.

パリティのサポートはなく、スループットは制限されますが、後者はほとんどの用途に影響を与えません。

このシステムクロックが動的に変化する可能性があるため、システムが低電力モードや低電力モードになった場合、miniUARTを役に立たなくするキラー機能「システムクロックから派生したボーレート」が1つあります。

を変更する/boot/config.txtと、最後に次の行が追加され、この依存関係が削除されます。

core_freq=250

これにより問題が修正され、ほとんど影響がないように見えます。SPI clock frequencyそしてARM Timerまた、システムクロックに依存しています。

何らかの奇妙な理由により、最新の4.4.9カーネルを使用するPi3のデフォルトは、UARTを無効にすることです。これを有効にするには、変更する必要がある enable_uart=1/boot/config.txt。(これにより修正されるcore_freqため、これはもう必要ありません。)

最後に、Bluetoothを使用しない場合(または要求の厳しい用途がある場合)、デバイスツリーでポートを交換することができます。ありpi3-miniuart-btpi3-disable-btで説明されているモジュールが/boot/overlays/README


すばらしい説明をありがとう@Milliways まだ行っていないこと... UARTを使用してラズベリーに接続する無線モジュールがあり、ボーレートが優先され9600ます。core_freq=250ma pythonスクリプトでボーレートを設定してから構成すると、動作するはずです。また、raspberrypi.stackexchange.com / questions / 47379 /…をご覧いただければ幸いです。ありがとうございます!
ジョージ

/ dev / serial0、および/boot/config.txtでenable_uart = 1を試しましたが、これはraspberry pi 2で動作するのに使用されているwireingPiコードで、シリアル通信を開始できません(戻り条件は-1)。/ dev / S0も試してみましたが、役に立ちませんでした。何が欠けているのでしょうか?(また、raspi-configからシリアルポートを解放しました)。(raspbianを含むすべてが最新です)
ozgeneral

1
@ OE1質問がある場合は、コメントではなく、新しい質問で質問してください。
ミリウェイズ

私は少し混乱しています。パリティをサポートしていないとはどういう意味ですか?pi3と通信するデバイスがあり、EVENパリティが必要です。そうしないと、システムはデバイスと通信しません。あなたの答えとnaseerの答えに従った後、プログラムを実行しているpi3にEVENパリティに設定されたこのデバイスと正常に話すことができました。
ThN

1
USB to UARTコンバーターは3.3V互換であり、5V互換ではないことを追加してください。
マニーヤック

20

最終的にこれは私のpi3で動作しました(os:debian jessie)

これらの6つの手順を慎重に実行してください。

手順1-Raspbian JessieをSDカードにインストールし、ネットワークに接続したらPiを起動します端末またはデスクトップおよびシェル経由でログインします。

sudo raspi-config

ファイルシステムを展開し、詳細ページでシリアルを有効にし、終了して再起動します。

ステップ2-jessieの新しいリリースがある場合、これは必要ありません。システムを次のように更新します。

sudo apt-get update

sudo apt-get upgrade

ステップ3-以下のデバイスツリー設定:

デバイスツリーを/boot/config.txtに追加して、Raspberry Pi 3 bluetoothを無効にします。

sudo nano /boot/config.txt

ファイルの最後に追加

* blutoothをminiuartポートに変更する場合(悪い)

dtoverlay=pi3-miniuart-bt

* blutoothを無効にする場合(良好)

dtoverlay=pi3-disable-bt

エディターを終了して、変更を保存します。

ステップ4-piを再起動します

sudo reboot

ステップ5-

a)シリアルコンソールを無効にするには、次を使用してファイルを編集します。

sudo nano /boot/cmdline.txt

フェーズ「console=serial0,115200」または「console=ttyAMA0,115200」という単語を削除します

終了して変更を保存します

b)シリアルコンソールを有効にするには、次を使用してファイルを編集します。

sudo nano /boot/cmdline.txt

ファイルを次のように変更します。

dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

終了して変更を保存します

ステップ6-piを再起動する

sudo reboot

----------------- それだけです、楽しんでください ---------------------------- ---


rpi2ではこれが機能し、Bluetoothリレーボードに接続してATコマンドでメッセージを送信します。しかし、この方法でarduinoからデータを受信できますか?
-marciokoko

10

Naseerの答えは正しいですが、最新のrasbianをフラッシュしただけでは少し手の込んだものになります。必要なのは、config.txtに次の行を追加するだけです(たとえば、fat32パーティションにSDカードを接続するウィンドウから)。

dtoverlay=pi3-disable-bt

次にプラグを差し込むと、piはコンソールピンに直接印刷します。


これはどのように機能しますか?Bluetooth UARTはGPIOピンにも接続されていません!
ドミトリーグリゴリエフ

4
@DmitryGrigoryev PI 3で動作します。
ThN16年

2
これは、同様に私のために働いた、私はこのスレッドがいくつかの小さな問題を明確にするために助けたことがわかった:raspberrypi.org/forums/...
クリス・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.