United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

ラズパイにセンサー追加をオシロでデバッグしよう(その2)UART編

オシロスコープでラズパイのシリアルコンソールのUART の波形を見る

それではラズパイをUSBシリアル変換でパソコンとつなげてオシロスコープを使います。

ラズパイとシリアルコンソール (UART)で通信するには以下の設定が必要です。

起動前にSD カードのconfig.txtを編集します。公式ページに記述がございますが英語ですのでここで簡単に説明いたします。config.txtに下記の2行を追加してください。

enable_uart=1
core_freq=250

公式リンク先の説明ページ https://www.raspberrypi.org/documentation/configuration/uart.md

2行目は Raspberry Pi 3の時に Rasbian の古いバージョンによっては必要です。私がよく行う方法は、とりあえず2行とも追加して、UART が動いていることが確認できた後で2行目を削り、問題が出たら2行目を再度追加します。

今回は USB シリアル変換にFTDI製の TTL-232R-3V3 を使いました。ラズパイの IO入出力が 3.3Vですので、USB シリアル変換ケーブルやボードを選ぶときは 3.3V 対応のものを購入してください。他に 5V 用も市販されていますがラズパイでは3.3V用でないと正常に動作しません。

それでは図2-1のようにラズパイの40ピンの端子の表1を見ながらラズパイとUSB シリアルケーブルをつなげます。今回はシリアル変換の黄色(RXD)を黄色のジャンパー線でラズパイの40ピン端子の8番(TXD0/GPIO14)に接続しました。同様にシリアル変換のオレンジ色(TXD)を赤色のジャンパー線でラズパイの40ピン端子の10番(RXD0/GPIO15)に、シリアル変換の黒色(GND)を黒色のジャンパー線でラズパイの40ピン端子の6番(Ground)に接続します。合計3線の接続です。

表1: ラズパイの40ピン端子の配列 

image131_0ca8d9c7dd4c817bb65236600acd6f913c1cc8b3.png

ここで黄色のプローブ1を赤色のジャンパー線(シリアル変換のTXD)に、緑のプローブ2を黄色のジャンパー線(シリアル変換のRXD)に接続します。プローブ1とプローブ2のグランドは40ピンの同じ6番ピンに接続したいのですが、ワニ口クリップで挟みやすいので、ラズパイのグランドに直結である HDMI 端子の外側に接続しました(図2-1)。

image141_2d3dbff22dea8080f9e4efa2d32187eab600cb0d.jpg

図2- 1 ラズパイとシリアル変換ケーブルを接続

そしてオシロスコープの取扱説明書を参照し、 UART のトリガーの設定とデコードの設定を行います。

次にパソコンでシリアルコンソールアプリを起動します。今回は Linux の minicom を使いました。それではラズパイの電源を入れます。パソコンのシリアル画面に図2-2のようにラズパイの起動画面が表示されます。

image15_15a31b12317919fa0aea21a4d5ae7bcffcceb9d8.jpg

図2- 2 シリアルコンソールの画面

この時に UART 信号のトリガーに成功していますと図?のような波形がオシロスコープに表示されます。RS232/UART のトリガーの設定とデコードの操作方法は各社のオシロスコープで違いますので、説明書を見ながら正常にトリガーできるまで試行錯誤してください。

image16_5f7b3a4fceb41a4e9346ff71891d833f3287f184.jpg

図2- 3 UART 信号のトリガーができた画面

ここで図2-3を見ていただくと画面下に 72, 61, 73, 70 とつづくデコードしたデータが表示されています。これは図? の最後の行の”raspberrypi login”のアスキーコードと一致します。ネットでアスキーコードの一覧をご覧になってください。アセンブラーから入ったプログラマーはアスキーコードはなじみが深いかもしれませんが、そうでない方も多いと思います。私の簡単な覚え方を紹介します。アスキーコードはすべて16進法です。10進法と見間違えないように先頭に0xをつけるのが習わしとなっています。アスキーコードで数字は 0x30 が '0' で 0x31 = '1' と数字と一緒に増えていくので、 0x3?(?の部分は0から9) だった場合は数字だとわかります。文字列は 0x41 がアルファベットの最初の 'A' になります。小文字は 0x41 に 0x20 を足した 0x61 が 'a' になります。この 0x30、0x41と 0x61 の3つだけでも覚えておくと便利です。そうするとオシロの画面の最初の72, 61, 73は、シリアルコンソール画面の最初の3文字の "ras" であることがわかります。オシロでこの部分の波形を拡大してみます(図2-4)。

image17_c051244fe798835098491097c79ccb10345547b9.jpg

図2- 4 シリアルデコードの最初の3文字

見事にラズパイからの出力が緑のチャンネル2でとらえていることがわかります。ここでラズパイからパソコンへの UART 信号をデコードした値と、パソコンでのシリアルコンソールの表示が一致することがわかります。またきれいな矩形波で波形を計測してみますとHIGH が 3.3V 付近で LOW が 0V 付近です。

記事一覧:

* Summary - Project Leadership and developer under multi-cultural circumstance and cooperation with external team and/or open source communities. * Technical profile Developing flight controller. https://github.com/DCoJA/yatagarasu-red Library to enable GPIO, I2C and SPI on Linux Boards. http://www.96boards.org/blog/programing-i2c-devices-libmra Youtube channel https://www.youtube.com/channel/UCnda3kAWPcxMnDBoaSM6uXQ