お手軽ツールで今更学ぶアナログ(183) AD2のプロトコルアナライザ、UARTなのよ

Joseph Halfmoon

タイトルに「アナログ」と謳っているのに今回もデジタルです。アナデバ社(ADI社)のWeb記事『StudentZone』の和文版に進捗を「同期する」ためです。お手軽ツール Analog Discovery 2の「使ってない機能」を端から使ってみるの巻。今回はプロトコルアナライザ機能でUART通信を観察してみます。

※「お手軽ツールで今更学ぶアナログ」投稿順 indexはこちら

AD2のプロトコルアナライザ

以下にDigilent社Analog Discovery 2の制御ソフトウエアである WaveForms のWelcome画面の「下の方」を掲げます。ProtocolAnalyzer

黄色いマーカのProtocolが、今回練習してみるProtocol Analyzer機能です。しかしね、この機能、Digilent社の以下のマニュアルページには見当たりません。

WaveForms Reference Manual

もともとロジアナ機能の中にプロトコル解読機能があり、その機能を単独で取り出したような機能であるため「おまけ」的な扱い?知らんけど。

UARTのプロトコル解析

プロトコル・アナライザ機能には、UART、SPI、I2C、CAN、CEC、AVRという6個のタブがあります。

6個のうち、最後のAVRというタブはMicroChip社(製品自体はMicroChipに買収されたATEML社)のAVRマイコンのFlashやらE2PROMやらをリード、ライトできる、というFlashライタ的な機能です。便利っちゃ便利か。残りの5つが通信プロトコルの解析となります。

今回使ってみたのはUARTの解析です。使ってみたところはこんな感じ。Protocol00

Settingsのところで、使用するDIO線とか通信速度などを指定し、該当のDIO線を現物に接続すれば、指定どおりの解釈で「通信内容を傍受」してくれます。上記ではことさらに縦にだらだら出力させましたが、実際には横方向出力が出来ます。

プロトコル解析のターゲット機

UART通信のターゲットとして、Arduino UNO R4と、FTDI社のFT232RLを接続して通信させました。9600bps、8ビット、ノンパリティ、ストップ1です。

配線引き出すためのボードの設定は結構ごちゃごちゃ。

UART_DUT

 

 

ターゲット機のArduino UNO R4に書き込んだソースが以下に。

void setup() {
  Serial1.begin(9600);
}

void loop() {
  while(Serial1.available()) {
    char c = Serial1.read();
    if ((c > 0x60) && (c < 0x7A)) {
      c++;
    } else if (c == 0x7A) {
      c = 0x61;
    }
    Serial1.write(c);
  }
}

UNO R4は、「Serial」というオブジェクトで、ボード上のUSBソケット経由のUART通信が使えます。今回は通信している端子を引き出してAD2であたりたかったので、「Serial1」オブジェクトを使ってます。これにより

    • D0、Rx
    • D1、Tx

ということで端子を介した通信が可能です。その先の通信相手としてFTDI社のFT232RLを搭載したUSBシリアルを接続してあります。

上記では、Rxで受信した内容をオウム返しにTxに返信するのが基本です。ただし、アルファベットの小文字のみ、aならbという具合に次の文字にすり替えて返信するようにしてあります。

AD2のオシロスコープで通信を観察したところが以下に。青色がArduino側のRxで、0x61(小文字のa)が送られてきてます。黄色がArduino側のTxで、0x62(小文字のb)が送り返されてます。uartWave

オシロスコープ画面で通信追いかけるのはツライよな。プロトコル解析機能があるとありがたい?

お手軽ツールで今更学ぶアナログ(182) AD2のSTATIC IO機能を試用、デジタルなのよ へ戻る

お手軽ツールで今更学ぶアナログ(184) レールツーレールと普通のオペアンプの振幅を観察 へ進む