1.はじめに
高分解能の20bitDAコンバータDAC1220(TI製)を
使用するためプログラムを作り動作確認をしたので紹介します。
2.DAC1220の基本性能と回路構成
(1)特徴
①分解能:20bit
②2線または 3線式の同期シリアル転送
③外部リファレンスが必要
(今回は2.5V(1ppm/℃) MAX6325使用)
④2.5MHzの外部CLK,又は水晶振動子が必要
⑤出力電圧はVrefの2倍 (今回は5V)
(2)回路図
製品:高精度電源 PS-GI0147
計測・IO回路(PS-GI0147-G07)
①DACの出力電圧はVrefの2倍なので5V
(オペアンプで+10Vにしている)
②ここで使用するオペアンプはオフセットの
温度係数を考慮しLT1013を使用
③基準電圧は外付
MAX6325は,温度係数1ppm(標準)
トリミング用VRはデータシートでは「0.6%まで可変」と
あったが、ゼロまで動いてしまう
→5p-6p間をシュートで2.5V出力
④2.5MHzクロックはマイコンから供給
(水晶振動子も取付可能パタンとした)
⑤シリアル通信線はノイズ対策のため
RCフィルタ(時定数1μsec)を設けた
3.データの送信方法
(1)設定レジスタ(4レジスタ,③④は未使用)
①DIR:Data Input Register(3Byte)
出力値設定データ
②CMR:Command Register(2Byte)
動作モードと次の送信レジスタを指定
③OCR:Offset Calibration Register(3Byte)
キャリブレーション後のオフセット値が入る
(0x0になっている)
④FCR:Full-Scale Calibration Register(3Byte)
キャリブレーション後のフルスケールが入る
(0x800000になっている)
(2)コマンドBYTE
各レジスタにアクセルする前に、
必ずコマンドBYTEを送る必要がある。
①bit7:Read/Write
次のアクセスは読出か書込か
②bit6-5:次にアクセスするレジスタのBYTE数
③bit3-0:次にアクセスするレジスタのアドレス
(3)送信データ例(MSB最上位bitからシリアル転送する)
①コマンドレジスタの設定:0x24+0x20A0=24bit送信
0x24(Write,2Byte,アドレス4),0x20A0(20bitDA,符号なし,測定モード)
②20bitDA出力設定 :0x40+0xFFFFFx=32bit送信 (x=Do not care:0にした)
0x40(Write,3yte,アドレス0),0xFFFFFx(最大値20bit)
4.波形確認
(1)CLK,DATA,/CSのタイミング
(2)データ送信シーケンス
(3)リセットシーケンス(CLK信号でRESETする)
(4)DA出力動作10msec毎に
5.結果
(1)20bit分解能のDAコンバータを使えた。
(2)キャリブレーション動作が実現できなかった。(何の変化もなかった)
(「自己校正には 300ms から 500ms かかります。」とあるが、直ぐ終了してしまう)
(3)フルスケールレジスタ,オフセットレジスタは使用せず,外部メモリで調整することとした。