2020年11月8日日曜日

Analog Discovery2で波形のログを保持や保存や再読込する方法


背景

Analog Discovery 2である程度長い時間の波形を表示したり、後で検証するためにログを保存したりしたり再読込したりしたかったので、試行錯誤して方法を把握しました。
備忘録を兼ねて記事を共有します。

使ったもの

AnalogDiscovery2

USBでPCに接続して利用するオシロスコープです。
秋月電子digikeyや製造元であるDigilentのウェブショップで買えます。
学生の場合は、DigilentのウェブショップのAcademic Pricingを利用すると安く買えると思います。

記事を書いている2020.11.08時点は、コロナの影響なのか、製造工場が閉じたために在庫が無くなっているようです。
Digilentのブログによると2021年2月頃には在庫が復活するということなので、購入を希望される方はそれまでお待ちください。

WaveFormsをインストールしたPC

Analog Discovery2を動かすためにWaveFormsが必要です。
Linuxの場合はそれに合わせてAdept2も必要です。
Linuxへのインストール方法やコマンドは、過去の記事が参考になると思います。
この記事はUbuntu20.04にWaveForms 3.12.2をインストールした環境を利用しました。

信号を見たい装置

今回はM5StackからのI2Cの信号をAnalogDiscovery2で読み取りました。
信号線の引き出しはオスメスジャンパワイヤ(とSideBB For M5Stack)を利用して、このように接続しました。
1+: SDA
1-: GND
2+ SCL
2-: GND

ログの取得

WaveFormsのメニューでScopeを選択します。

ModeをRecordにします。

サンプリングレートやサンプル数は隠れているので、Scope画面右側にあるTimeの矢印をクリックしてメニューを展開します。

Timeで表示されるSamplesが保存するサンプル数を示し、Rateがサンプリングレートを示します。
この場合262144点を800kHzで保存するため、262144/800000=約0.33秒を記録することになります。

Record開始ボタンを押すとサンプルの取得が始まります。

今回は約0.33秒なので、すぐに終わります。
表示されているエラーについては後で解説します。

サンプルが画面からはみ出ている場合は、チャンネルのOffsetやRangeを変えると収まるようになります。
今回はChannel1と2のRangeを2 V/divにしました。

マウスのスクロールやドラッグで、波形を拡大・縮小・移動が可能です。


信号の変化を確認できます。

ログの保存

取得したサンプルを保存する場合はExportを押します。
(保存を繰り返す場合は、Esportと同じ並びで画面中央にあるLoggingが便利だと思います。)

Export画面で保存する情報を確認できます。
Saveを押すと保存画面が開きます。

今回はホームフォルダにwavefomsというフォルダを作り、その中にdefault.csvとして保存しました。

ログの読み込み

保存したログはFile -> Inportから読み込めます。

先ほど保存したdefault.csvを開きます。

読み込み確認画面が表示されるのでOKを押します。

default.csvタブとして、Export時の画面が表示されます。

エクスポートされたCSVファイルの中身

1-9行目まではWaveFormsで表示する際のパラメータが記述され、10行目に空白行、11行目にヘッダ、12行見以後にデータが保存されていました。
解析プログラムを作る際は、空白行以後にデータがあるとして作れば良さそうです。

警告 Samples could be lost! Reduce sample rate.について



警告の意味

Analog Discovery 2は装置としては100MHzでの測定が可能ですが、USB2.0で接続しているためPCへの送信速度が最大60MB/sという制限があります。
そのため、一定のサンプルリングレートを越えると値の取りこぼしが発生するため、この警告が表示されるようです。

サンプル数が262144だと51kHzを越えると警告が出る

サンプリングレートを変えつつ閾値を探った所、51kHzまでなら警告は出ませんでした。

52kHz以上だと警告が出ました。

For large device buffer, go to Settings/Devie Manager and select 2nd configuration.とあるものの、効果は無さそう

設定を装置のバッファ設定を変えたら良くなりそうな説明が表示されますが、自分が試した範囲では変化がありませんでした。

試したこと1: サンプル数をプルダウンメニューの中で最小の32にする

バッファで保持できる数のサンプル数なら良いのかと思いましたが、変化がありませんでした。


32サンプルでも値が抜けるというのはどういうことなのでしょう。

試したこと2: Device Managerから装置のバッファ設定からScopeの値が最も大きいものを選ぶ(Scopeモードを利用するので、多分これが最も効果があると思います)

説明だとデバイスマネージャの2番目の設定を変えれば良いとあったので変えてみましたが、変化はありませんでした。

2番目を選び、Selectをクリック。
(2番目を選ぶ前は、1番目が選ばれていました。)

何も変化がありませんでした。

試したこと3: Device Managerの装置のPatternsのバッファが大きいものを選ぶ

Patternsの値が最も大きい設定も試しましたが、変化無しでした。


効果のあるDeviceManagerの設定方法をご存知でしたら、教えていただけると嬉しいです。

最高サンプリングレート100MHzと最大サンプル数16777216でログ取得は可能なものの、信頼できない値になる

Analog Discovery2で選べる最高サンプリングレートは100MHzです。

設定可能なサンプルの最大数は16777216です。

警告が発生しますが、取得処理は実行できました。
時間にすると16777216/(100x1000x1000)=約0.17秒です。

しかしながら、拡大しても期待する波形が表れておらず、ほぼ無意味な値になっていました。

期待するような波形が出ている部分もI2Cの信号のまとまりが550nsで送信されていることとなっており、本来110usほどでで送信されるべき波が200倍も短い波として表示されていて、誤った情報になっているようでした。

1MHzと500kHzのサンプリングレートでは、期待するように110usほどで波がまとまっていました。


100MHzでのRecordモードの実行は難しいようです。

2MHz以下なら最大サンプル数でログを取れそう

サンプリングレートが10MHzだと、100MHzのときのように波長さが短くなりました。
110usほどあるはずなのに、21usになっています。

2MHzなら波の長さが110usのままだったので、2MHz以下なら信頼する値で最大サンプル数のログを取れそうでした。

まとめ

Analog Discovery2で波形のログを取得し保存する方法を把握しました。
サンプリングレートとして100MHzを設定可能ではあるものの、そのレートではログの値が壊れるようでした。
レート1MHzなら最大サンプル数でも信頼できる値が取れそうだったので、波のログを保存するときは2MHz以下で利用しようと思いました。

さらに正確なログを取るための設定方法をご存知でしたら、コメントで教えていただけると嬉しいです。

0 件のコメント :