DCA1220-1

1.はじめに
 高分解能の20bitDAコンバータDAC1220(TI製)を
 使用するためプログラムを作り動作確認をしたので紹介します。





DAC1220-2

2.DAC1220の基本性能と回路構成
 (1)特徴
    ①分解能:20bit
    ②2線または 3線式の同期シリアル転送
    ③外部リファレンスが必要
     (今回は2.5V(1ppm/℃) MAX6325使用)
    ④2.5MHzの外部CLK,又は水晶振動子が必要
    ⑤出力電圧はVrefの2倍 (今回は5V)


DAC1220-3

 (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)を設けた


DAC1220-4

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になっている)


DAC1220-5

 (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のタイミング
     ①CLK立下とDATA:(13μs/CLK)      ②/CSとCLK:(設定に約450μsec)
DAC1220-6 DAC1220-7

          DCA1220-15  DAC1220-9


 (2)データ送信シーケンス

            DAC1220-10


 (3)リセットシーケンス(CLK信号でRESETする)

       DAC1220-11


   (4)DA出力動作10msec毎に
     ①データ更新FS/16(0x10000)ずつ加算      ②データ更新 FS/256(0x1000)ずつ加算
DAC1220-12 DAC1220-13

5.結果
 (1)20bit分解能のDAコンバータを使えた。
 (2)キャリブレーション動作が実現できなかった。(何の変化もなかった)
   (「自己校正には 300ms から 500ms かかります。」とあるが、直ぐ終了してしまう)
 (3)フルスケールレジスタ,オフセットレジスタは使用せず,外部メモリで調整することとした。