ロジアナのプロトコルアナライザを使う

Arduinoのデバッグをしていると信号の状態を知りたくなる時がよくある。例えば、I2Cデバイスと接続しているのに期待した応答がデバイスから返ってこない時など。こういう時に重宝するのがロジアナのプロトコルアナライザ機能だ。

スポンサーリンク

使用するロジアナ

愛用のロジアナはZeroplus Logic Analyzer。もう5年以上に秋月で買った物だが、現在も現役で販売中でWindows10にも対応している。台湾製だがしっかりしたメーカーのようだ。

プロトコルアナライザの設定

以前プロトコルアナライザは有償だったようだが、有り難いことに現在は全てフリーで使える。I2Cバスの解析を行うための手順は以下

  1. チャネル名称を信号名にする。A0とA1をそれぞれSDAとSCLに変更した(この手順は省略可)。
  2. 信号をバスにまとめる。上記の2つの信号線をマウスで選択したうえで、右クリックでメニューを選択。
  3. まとめたバスを右クリックして「バス特性」メニューを選択すると下のダイアログが表示されるので、ここでI2Cを選択し「パラメータ構成」ボタンを押す。
  4. ダイアログの中で赤枠で囲った所の信号線を確認する。上記1.の手順を省略すると、信号線がA0とA1のままになる。確認後「OK」を押し、元の(上記3.)ダイアログに戻ったら「確定」を押す。
  5. サンプリング周波数とメモリの設定。I2Cならサンプリングは1MHz程度で良いだろう。あまり低いと正しくデータをキャプチャ出来ないし、高すぎてもメモリの無駄遣いになる。
  6. 「トリガ条件」と「トリガ位置」の設定。I2Cの場合はSDAとSCLのどちらの変化をトリガに指定しても良いだろう。「トリガ位置」はトリガ前後の信号のキャプチャ割合を決めもので、デフォルトで50%位置になっている。常時信号が出ていてトリガ前後のデータを比較したいような場合は50%でも良いが、大抵の場合はトリガ前は信号が無い状態が記録されるだけなのでメモリの無駄遣いとなる。したがって今回も含めトリガ位置は10%位置など手前に設定する方が概ね良い。

測定結果の表示

上記の準備が出来たら、測定対象のI2CバスにA0,A1,GNDを接続したうえで、F5もしくはサンプリングボタンを押して測定を行う。トリガー条件にマッチして測定が完了すると、下の画面キャプチャのようにバスに流れる信号をデコードして見やすい形で表示してくれる。赤枠のドロップダウンで表示レンジを適宜変更しつつ、スクロールバーで測定結果をチェックする。

デコード結果にマウスオーバーすると詳細が表示される。

コメント