Help us understand the problem. What is going on with this article?

SPIやUARTなど動かない通信をどこでもデバッグできるUSB接続のオシロスコープ/ロジックアナライザをセットアップしてから、波形を解析するまでの手順を丁寧に説明してみました。

内容はタイトルの通りです。こんにちは、@island_peakです。本記事のゴールはコチラ。

  • どこでも波形を見ることができる
  • なぜか動かないSPI通信の中身がわかる
  • USB-UARTを繋いでいないピンも解析できる

SPI通信やUART通信を扱うプログラムを開発してると「なんで動かないんだろう」とか「サンプルコードの生成している波形が見たい」とか測定器が欲しいコトも多いでしょう。弊社内でも同じ課題が挙がりましたので、お手頃な計測器「ADALM2000」の使い方をQiitaの記事にしてみました。

使う機材は?

Analog Devices Inc. ADALM2000 (Digi-Keyへのリンク) を使います。2019/06/01現在、11,793円というお値段が素敵な製品です。ADALM2000はWindows/macOS/Linuxそれぞれに対応しているので、お好きなマシンをご利用いただけます。
000-0.jpg

何ができるの?

ADALM2000は2019/5/29現在、Digi-Keyで11,793円というお手頃価格でありながら、本記事で紹介するアナログ信号の計測、デジタル信号の計測はもちろん、アナログ信号の生成やデジタル信号の生成もできるUSBデバイスです。

下図上がアナログ信号用端子で、下図下がデジタル信号用端子です。アナログ信号用端子は±20V範囲の信号2個を4096段階で計測することができます(GND基準または差動電圧)。デジタル信号用端子はロジックアナライザ機能を備えており、100MHzまでのプロトコルを16チャンネル同時に解析できます。現在、ほとんどのSPI/UART/I2C通信は100MHz以下で動作していますので、様々なセンサーやモータドライバの開発にがしがし使えそうだと思いました。
000-1.png

前世代のADALM1000と何が違うの?

対応している信号の速度や機能が大きく進化しています。ADALM1000は、100kSPSのオシロスコープ機能とファンクションジェネレータ機能のみ使えます。ADALM2000を使うことにより、幅広い種類の信号を解析できるようになりました。これからデバイスを購入するならADALM2000一択でしょう。

注意:計測用のコネクタ

信号を入力するためのコネクタはかなり固く作られています。ぐっとツメが見えなくなるまで刺しましょう。すぐに抜ける場合は刺しが足りていないのかもしれません。
000-2.jpg

早速セットアップしてみましょう

セットアップは以下の順番で進めます。

  • ADALM2000のドライバをインストールする
  • ADALM2000のファームウェアを更新する
  • 追加ドライバをインストールする
  • 測定ツール「Scopy」をインストールする

ADALM2000のドライバをインストールする

まず ADALM2000の製品ページのUser向け情報にある、Windows Drivers(下図)を開いて、リンクから「PlutoSDR-M2k-USB-Drivers.exe」をダウンロードします。
001.png
002.png
インストーラを実行します。
004.png
インストール途中でADAKM2000のデバイスドライバのインストールについて聞かれます。インストールをクリックしてドライバもインストールしましょう。
006.png

PCにADALM2000を接続する

ADALM2000のデバイスドライバがインストールできたら、早速ADALM2000をPCに接続しましょう。マス・ストレージ・デバイス(USBメモリっぽいデバイス)として認識されます。ドライブの中にある「info.html」を開くとデバイス情報が見えます。
009.png
010.png
デバイスのIPアドレスも表示されていますので、ブラウザにこのアドレス(この例では192.168.2.1)を入力すると、下図のようにデバイス情報が表示されます。
011.png

ADALM2000のファームウェアを更新する

出荷時のファームウェアよりも新しいファームウェアが公開されていると、デバイス情報に新しいファームウェアのリンクが表示されます。リンクをクリックしzipファイルをダウンロードしましょう。 なお、この操作から先は決してUSBケーブルを抜かないでください。ファームウェアの更新に失敗すると最悪動かなくなることもあります。
013.png
ダウンロードされたzipファイルを解凍し、
016.png
ADALM2000のマス・ストレージ・デバイスのドライブ内に貼り付けます。ドライブを右クリックして「取り出し」をクリックする( USBを引き抜かない )とファームウェア更新が始まります。
017.png
ファームウェアの更新中は写真左側のLEDが高速に点滅します。ファームウェアの更新が終了すると高速な点滅が終わり、またマス・ストレージ・デバイスとしてPC上に表示されます。
018.JPG
デバイス情報を開くと、ファームウェアのバージョンが上がっていることを確認できます。以降はUSBを抜いてもOK。
019.png

追加ドライバをインストールし、再起動する

デバイス情報に追加のドライバをインストールするリンクが表示されます(インストール方法の2番目として表示されています)。クリックし、ダウンロード。インストールします。このとき、他のアプリケーションがインストールの邪魔をしている旨が表示されます。無視してインストールしてしまいましょう。
020.png
インストールが完了すると、邪魔していたプログラムが全て強制停止され、スタートメニューなどが消えてしまいますので、「Ctrl+Alt+Del」を押し「ログアウト」を選択「再起動」します。以上で追加ドライバのインストールが完了となります。
021.png

測定ツール「Scopy」をインストールする

デバイス情報にあるインストール方法の3番目として、測定ツール「Scopy」のインストールが指示されます。リンクをクリック、GitHubのサイトに進み、最新のWindows用ソフトウェアをダウンロードます。インストールし、再起動します。
022.png
023.png

以上でセットアップ完了、準備が整いました。

測定してみましょう

ここまでの手順で必要なソフトウェアが揃いました。早速PCに接続されたADALM2000を使って色々な信号を解析してみましょう。

ScopyにてADALM2000を選択する

「Scopy」を起動すると以下のように接続されているADALM2000が表示されます。
024.png
対象となる「ADALM2000」を選択し「Connect」をクリックします。計測を終了する際には「Disconnect」をクリックしてください。
025.png

オシロスコープ機能を使う

左の「Oscilloscope」をクリックすると、オシロスコープ機能を使えます(詳しい使い方は公式サイトをご参照ください)。
026.png
計測開始のタイミングを設定します。右下の「Trigger」をクリックし「Trigger Mode」で「manual」を選択「Rising Edge」でLevelを「500mV」に設定します。これで電圧が500mV以下から、500mV以上に上昇したタイミングの信号線を観察することができます。上の「Run」をクリックすると計測が開始されます。下の例では電源投入した際の電圧ピンの波形を表示しています。
028.png
左下のCH1/CH2の設定から、表示する時間(数μS〜数S)を指定することも可能です。
030.png

ロジックアナライザ機能を使う

左の「Logic Analyzer」をクリックすると、ロジックアナライザ機能を使えます(詳しい使い方は公式サイトをご参照ください)。
032.png
ここでは例としてNucleo-L476RGのSPI(SCLK/MISO/MOSI/CS)とUART(TX/RX)信号線を覗いてみました。それぞれにロジックアナライザ用の計測ピン1〜4と計測ピン5〜6を接続しました。
032-1.jpg

SPI通信を解析する

まずSPIの信号を覗いてみましょう。SPIの信号を接続したピン名(DIO01〜DIO04)横の「Select」にチェックを入れ、画面上の「Group with selected」をクリックし、グループ化します。
033.png
グループの横にあるプロトコル選択メニューで「SPI」を選択します。手元の回路ではSPIの先にSDカードをつないでいたので「SD card(SPI)」に設定しました。
034.png
続いて「Trigger」条件を選択します。SPIは、SCLKピンのクロックを基準として、CSが0Vに落ちている間のみ動作するプロトコルです。そのため、CSに接続したピンの「立ち下がり」もしくはSCLKに接続したピンの「立ち上がり/立ち下がり」を選択します。最後に「Run」をクリックし計測。波形が表示されます。
036.png
計測後は「Stop」をクリックし波形を止めると、波形上でのマウススクロールだけで信号の細部を確認することができます。
037.png

UART通信を解析する

UARTの信号を接続したピン名(DIO05〜DIO06)横の「Select」にチェックを入れ、画面上の「Group with selected」をクリックし、グループ化します。グループの横にあるプロトコル選択メニューで「UART」を選択します。
038.png
UARTは非同期のプロトコル(基準クロックの無いプロトコル)なので「Trigger」はRXまたはTXの「立ち上がり/立ち下がり」を選択します。今回はマイコンから文字を出力するプログラムをサンプルとして使ったのでTXをトリガとしました。「Run」をクリックして計測開始。UARTに出力された文字を下記のように表示できます。
039.png
計測をStopし、波形上でマウスをスクロールさせてズームしていくと、どのような文字列が送信されているかという情報まで解析されていることがわかります(ここではdebugという文字列が送信されています)。TeraTermを使うことなくUARTの中身を覗くことができるため、USB-UART変換を繋いでいない端子の解析も可能です。
040.png
右上の歯車ボタンやスライドバーボタンをクリックすると計測に関する各種設定を行うことができます。
041-1.png

まとめ

SPI通信の場合、接続するプルアップ抵抗により信号が鈍り通信できないケースや、クロックピンがショートしてマイクロ・コントローラ(マイコン)が固まってしまうケースがあります。こうした場合ADALM2000を準備しておけばオシロスコープ機能により信号波形の解析ができます。ロジックアナライザ機能を使えば、期待しているコマンドを送受信できているかも確認できるでしょう。

是非、ご活用ください。

island_peak
開発の中で忘れそうなことや、社内講習会のネタを記事にしていきます。お気軽にフォローしてくださいね。ぜひぜひ。
https://www.aps-web.jp/
aps-web
半導体専門技術コンテンツ・メディアとして日々新しい技術ノウハウを発信しています
https://www.aps-web.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした