🌊

格安ロジックアナライザで UART 通信の波形を確認してみた

2025/02/16に公開

やりたいこと

タイトルの通り、UART 通信の波形を確認してみたい。

結論

先に結論を言うと、上手く波形を取得することができました。
詳細については以下をご参照ください。

背景

下記の CO2 センサー + Arduino UNO でセンサーの値を UART で取得しようと思ったが、上手くいかなかった。
なので、原因を確かめるために、ロジックアナライザを使用してみようと思った。

やってみる

今回、UART 送信を行うマイコンボードについては、Arduino UNO を使用しましたが、他の物でも大丈夫です。そのため、Arduino・Arduino IDE の使用方法についての詳細な説明は省略します。

1. ロジックアナライザを購入・セットアップ

購入したもの

ロジックアナライザは amazon で 2000 円弱のものを購入しました。

機材の準備

ケーブルとクリップは、自身ではんだ付けして、接続する必要があります。
また、自分が購入した個体はコネクタにケーブルが刺さらなかったため、一旦コネクタを切断し、他の物を付け直しました・・・。

  • ケーブルとクリップの部分をはんだ付け

    • とりあえず、GND を黒のケーブルにしておくと良いと思います
  • ケーブルが刺さらない・・・😔

  • コネクタを付け直して完成

    • 恐らく GND と思われる部分が CND になっているが、ホントに大丈夫なんだろうか・・・🙄

2. ソフトウェアインストール・セットアップ

ソフトウェアは Pulse View を使用します。

Pulse View のインストール・デバイスのセットアップ

Pulse View でロジックアナライザを使用できる状態にする手順については、下記のページが丁寧に解説してくれているため、そちらをご参照ください。

Pulse View で UART のデコーダーを設定する

  • デコーダーを設定するには、以下の黄色と黄緑色のアイコン(プロトコルデコーダーを追加)をクリックします

  • その後、デコーダー選択が表示されるため、検索ボックス "UART" と入れると、デコーダーが表示されます。表示されたものをクリックすることで、選択することができます

  • 最後に、TX を設定します。今回は D0 を設定します

トリガーの設定

必須ではないですが、波形を見やすくするため、トリガーを設定します。
詳細として、Arduino の 7番 Pin を PalseView でいう D7 に接続し、トリガーを設定しています。
設定は立ち上がり(LOWからHIGHを検知する)にします。このようにすることで、7番 Pin が HIGH になった瞬間に、ロジックアナライザが計測を開始してくれます。

3. 波形を取得する

コードは以下を使用しました。
補足:SoftWareSerial を使用していますが、Serial だけで実施できます。ただ、あまり使ったことがない SoftwareSerial を試しに使用してみようと思ったため、以下のようなコードになっています。

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX
int triggerPin = 7;
byte txdataChar = 0x0f;

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  pinMode(triggerPin, OUTPUT);

  delay( 1000 );
}

void loop() {
	// トリガー用。ロジアナで HIGH を検知してサンプリングを開始する。
	digitalWrite(triggerPin, HIGH);
	digitalWrite(triggerPin, LOW);

	// データを送信する。
	mySerial.write(txdataChar);
	// シリアルモニターにも出力する。
	Serial.println(txdataChar);

	// ビット反転する。
	txdataChar = 0xff  ^ txdataChar;
}

結果

意図通りに、波形を取得することができました。
UART の所を見ると 0x0F, 0xF0, 0x0F・・・というように、ビット反転しながら、データが送信されていることが判ります。

Discussion