デジタルオシロスコープのメモリ機能を使ったSPIのデバッグ
2024/09/16
初心者向けのデジタルオシロの使い方紹介ですオシロスコープ初心者の方向けに、Arduinoを使ったマイコンのSPI(シリアル・パラレル・インタフェース)の信号をデバッグするとき、
私のRIGOLのデジタルオシロスコープ(DS4012)で、どの様に使っているかを紹介します。
SPIデバイスのシリーズ接続Arduino+XIAOマイコンを使って「
プリセットプログラム可能なアナログディレイ」を作った時には、デジタルポット(可変抵抗)と2個のHC595の3つをシリーズに接続して、1つのSPIで制御しました。上の構成図の右下の部分です。
<接続順>
デジタルポット(10bit)→HC595(8bit)→HC595(8bit)
最初につながっているデジタルポットのSPIは、ビット数が10bitで、特殊な信号でした。このシリアルデータが正しく出ているのかを、デジタルオシロで確認しました。このSPIの信号は、HC595経由でLEDを点滅させるための周期タイマーと、ボタン操作による非同期の割り込みハンドラーで、常時連続出力されています。
例として4回目のSPI信号を確認したいとき下の画面は、3つのデバイスの4回分のSPI波形です。1つのパルスの様に見えますが、中身は26bit分のSPI信号です。上がCLK、下がDATAです。例えば、4回目のSPI信号(赤枠)に何が出ているかを確認したいとします。4回目の信号にうまくトリガーが掛かれば一発で確認できるのですが、この信号は常時出続けているため、見たい信号を狙ってトリガーを掛けることは困難です。
デジタルオシロのメモリ機能が威力を発揮このとき、デジタルオシロのメモリ機能が威力を発揮します。以下のような方法です。
1. まず、4回分(もっと多くてもOK)のSPI信号が入るように時間のつまみを長めに調整します。
2. オシロの「SINGLE」モードで、サンプリングします。うまく4回分のSPI信号が入らなかったら、何回か試行して、4回分のSPIがサンプリングできるまで繰り返します。

3. メモリされた信号を左にスクロールし、観察したい4回目のSPI信号を中央に移動させます。

4. このまま時間のつまみで横方向を拡大すると、SPIの波形が見られるようになります。
5. この拡大した波形の右側が最初に出力したデジタルポットの10bit(2bit + 8bit)の信号です。

この例では、上の2.の手順で70msだけサンプリングしていますが、オシロのメモリ長が許す限り、もっと長く(数秒)録っても大丈夫です。
この様に、長い時間範囲の波形を見ている場合は、リアルタイムでは最初の波形のようにSPI信号の中身を見ることはできないのですが、メモリ機能のお陰で、適当に長くサンプリングした後で問題箇所を探し、時間軸を拡大することで、信号の中身を確認することができます。SPIのデバッグには、無くてはならない機能です。
オシロが1台あると趣味の電子工作の幅が広がりますデジタルオシロは、そもそも業務用途の機器ですので、価格的に趣味には敷居が高いイメージがあります。ところが最近では、誰でも購入できる低価格帯のオシロが発売されており、
特に中国の「RIGOL」は、性能、機能ともに十分な標準的なオシロを4万円以下で出しています。私はギター用のエフェクターや鉄道模型の自動運転システム等を作ってきましたが、オーディオ信号の確認やマイコンクロックの確認にとても役に立っており、工作の幅が広がりました。下のブログ記事を参考にしてみてください。
■
RIGOLの新しいオシロスコープ DHO800シリーズ、めちゃくちゃコンパクト高性能