前回はSAR ADCの実例ということでAD7920を動かしてみるの回だったのですが、ADALP2000部品キットにAD7920入ってないじゃん!ということで次のデュアルスロープADCへ行ってしまいました。しかし、よくよく部品キットの箱の中を確認してみたら、AD7920を発見。再びの「お品書き」のタイポ?
※「お手軽ツールで今更学ぶアナログ」投稿順 indexはこちら
アナデバ社(ADI社)のWeb記事『StudentZone』の2022年2月号の実習、前回は、SAR ADCの実例ということで12ビットADを触る筈の回でした。しかし、実験で使う部品が所蔵されている筈のアナデバ製ADALP2000学習用部品キットの箱に貼り付けてある「お品書き」に騙されました(何度目でしょうか?学ばんな、自分。)
12ビットAD7920、これはSPIインタフェースのチップが入っている筈が、同じ12ビットADでも、まさかのAD7091R-5とな。こちらはI2Cインタフェースと書かれているじゃあ~りませんか。
SPIインタフェースであれば、「お手軽ツール」のデジタルIOをコンフィグしてとりあえず動作確認くらいできそうですが、I2Cとなるとそれなりの手順が必要です。マイコンで操作するなら簡単だけれども、「お手軽ツール」をプログラムしてI2Cのプロトコルを操作するのは嫌だ。ということで見送ってしまいました。
しかし、以下を御覧じろ。箱の中を隅から隅まで調べたら
-
- AD7091R-5の姿は無い
- AD7920が存在した
なんてこったい。AD7920の製品ページは以下です。
12ビットA/Dコンバータ、250kSPS AD7920
AD7091は入ってなかったです。それどころか、データシートを確認したところI2Cじゃなかったです。5MSPS。おお間違い!高速なチップだったので、入っていたら嬉しかったケド。
AD7920の実験用回路
後でマイコンにフツーに接続して使ってみようとは思うのですが、こちらのシリーズでは「お手軽ツール」(アナデバ様の記事ではアナデバ製ADALM2000、当方では持ち合わせがないので、Digilent Analog Discovery2。微妙に差異はありますが、ほぼほぼ同等なことができるツールです)で実験することになっております。
※2022年9月20日追記:マイコンに接続して制御してみた件はこちら。
実験用の回路はこちら。SPI(といっても書き込み側の端子はなし)なので簡単。
ブレッドボード上に配置したところがこちら。なお、ADALP2000所蔵のBB(ブレークアウトボード)の端子配列は、上からみて
-
- 90度ローテイトした上で、
- 実ICに対して鏡像の順番になっている
というクセがあります。クセが強いのう。そしてアナデバ様の記事の実体配線図では、毎度のことですが、
実ICの端子の順番のつもり
で結線している、です。よって実体配線図を鵜呑みにしてはいけません。いつものことよな。
上記のようにブレッドボードに配置した後、Analog Discovery2と結線します。オレンジのオシロ端子も今回接続しましたが使ってません。アナログの実験ではあるものの、制御するのはデジタル端子2本、観察するのはデジタル端子1本。
デジタル端子の制御
CS#(DIO0)と、CLK(DIO1)の制御はパターンジェネレータでやります。以下は、パターンジェネレータの画面です。CLKの方は単純CLKなので、キモはCS#の制御だけです。
CS#(DIO0)は「カスタム」設定としてその変化を以下のように手動でプログラムしてやりました。CLK16発がCSがロウの期間に入るように数えます。
動作結果
DIO0, DIO1, DIO2をロジアナ機能で「SPI」としてまとめて観察してやればOK。以下はVIN端子に1.5Vを印加したときの動作
フルスケール=電源電圧、今回は3Vです。12ビットなので3Vのとき4095なりと。上記の1.5Vでは、0x829=2089(10進)、期待値2048なので、多少大きめだけれどもこんなもんかい。
VINの電圧を変化させてみました。2Vにしたら
0xAD4 = 2772
1Vにしたら
0x582 = 1410
まずまず動いているみたい。精度出すには「それなり」の対処が必要そうですが。