ZeroPlus LAP-C 16064 をというロジックアナライザを買ってみた。Windows にしか対応してないけど、一応 Mac でも動かせそうな感じなのでやってみた。ただ、ロジックアナライザの値段はソフトウェアの値段感があって、できれば Windows で使いたくなる。
- sigrok を使う
- VM 上で Windows を起動する
という方法を試した。結論からすると sigrok を使うほうが楽だけど、機能的にはちゃんと Windows 使ったほうがよさそう。
sigrok を使う
OSS で対応しているソフトがあるので使ってみる
$ brew tap rene-dev/sigrok $ brew install --HEAD libserialport $ brew install --HEAD --with-libserialport libsigrok $ brew install --HEAD libsigrokdecode $ brew install --HEAD --with-libserialport sigrok-cli $ brew install --HEAD pulseview
で頑張ると入る。libsigrokdecode がうまく入らなかったので いろいろ頑張った。
pulseview
pulseview コマンドで Qt で作られた GUI が起動する。あんまり機能はないので難しくはない感じ…
- [File] -> [Connect to Device...] で LAP-C を選択する。
- ツールバーの設定アイコンで Volatage Threshold を適切に設定する
- サンプリング数とサンプリングレートを設定する
- Run を押すと出てくる
Decoder の追加はそのまんまなので難しくない Threshold 設定するのが忘れがちでハマりそう。
左のラベルをクリックするとトリガーの条件をかけられる。なぜか状態トリガーしかない。ハード的にはエッジトリガもあるはずなんだけどよくわからない。
captureratio ってのがなんなのかわかりにくいが、トリガーがかかるまでのサンプリングレートを決定する割合みたい。たぶん設定したサンプリングレートに captureratio をかけた値でトリガーがかかるまでサンプルされ、その後設定したサンプリングレートでサンプリングされる、のかな。
よくわからないけど、基本、トリガかけたい信号の周波数の2倍になるように captureratio を設定して、あとは細かいタイミングを見るために高速にサンプリングする、という使いかたなのかな。
sigrok-cli
sigrok-cli --show --driver zeroplus-logic-cube zeroplus-logic-cube - ZEROPLUS LAP-C(16064) with 16 probes: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 Supported configuration options: samplerate - supported samplerates: 100 Hz 500 Hz 1 kHz 5 kHz 25 kHz 50 kHz 100 kHz 200 kHz 400 kHz 800 kHz 1 MHz 10 MHz 25 MHz 50 MHz 80 MHz 100 MHz captureratio voltage_threshold Maximum number of samples: 65536
ここに出てくるサンプリングレート以外を設定するとセグフォして死ぬので注意
sigrok-cli --driver zeroplus-logic-cube --probes A0=SCL,A1=SDA --output-format bits --samples 1k --config samplerate=25K
で適当に表示されるはずなんだけど、なぜか手元のだと 4bit ごとにビットが立つみたいな挙動になってしまう…
あと sigrok-cli だとvoltage_threshold は設定できない (パースできない)。エラーもでないので罠。たぶん sigrok-cli あんまり使ってる人いない。
VirtualBox 上の Windows を使う
Mac、VirtualBox 上の Win XP で動かす
接続からドライバインストールまで
VirtualBox は USB extension を入れる必要がある。
ゲスト Windows が起動したら、VirtualBox のメニューの Devices -> USB Devices -> LAP-C〜 を選ぶ (つまり Windows 側へ接続する)
Windows 側では特に何も起きていないように見えるが、デバイスマネージャを見ると不明なデバイスが1つ見える。
そのデバイスのプロパティを開き、ドライバの再インストールボタンを押す。
- (Windows Update に)「いいえ、今回は接続しません」を選択
- 「一覧または特定の場所からインストールする」を選択
- 「次の場所で最適のドライバを検索する」を選択
- リムーバブルメディアは検索しない
- 「 次の場所を含める」に C:\Program Files\PC-Based Instrument\ZEROPLUS\DRIVER を入れる
- 次へをやると1段階進む
- 今度は再び自動的にドライバのインストールウィザードが開くので、同じように進める
- ドライバの選択では一番新しそうなのを選ぶ
これで起動はするようになる。
使いかた (I2C)
A0 を SCL, A1 を SDA にする場合 (当然これらと GND を結線しておく)
- [Bus/Signal] → [Channels Setup]
- [Delete All] して全部消す
- [Add Bus/Signal] を SCL, SDA 及びバスのデータ表示用に3回押す
- SCL 用には A0 を選択
- SDA 用には A1 を選択
- I2C 用には A0, A1 をどっちも選択
- [OK] で閉じる
[Tool] -> [Bus Property...] をクリックするとアナイラザを選択できるはずだが、エラって死ぬ……… ので終了。うまくいく方法はわからず。
ZeroPlus に問いあわせてみたら、これは V3.12.02 のバグらしい。Channels Setup から BUS を作ってはダメみたい。
V3.12.02 でうまくいく方法は以下
- [Bus/Signal] → [Channels Setup]
- [Restore Default] して元に戻す
- [OK] で閉じる
- メイン画面の左側のプローブ一覧から A1, A0 を Shift か Ctrl を押しながら複数選択して、右クリックから [Group into Bus] をする。
- [Tool] -> [Bus Property...] で開く (開ける)
- 適当に設定する
あらかじめ対応する DLL を入れる必要がある。http://www.zeroplus.com.tw/logic-analyzer_en/products.php?pdn=10&pdnex=list で、とりあえず Generic Free Protocols を入れたらいい
- シリアルが必要なアナライザの場合入れるコードは http://www.zeroplus.com.tw/ に登録して出てきたコード
- 入れる場所は設定画面
で、適当にセットしたらいける。