MAX5591のPICによる制御:PICマイクロコントローラとMAX5591高速セトリングDACとのインタフェース

要約

PIC18F442マイクロコントローラと高速セトリングDACのMAX5591のインタフェースについてプログラム例をあげて解説します。

MAX5591概要

MAX5591は3線式のSPI™シリアルインタフェースを備えた12ビットの高速セトリングDACです。MAX5591のインタフェースは最高20MHzまでSPIをサポートすることができ、セトリングタイムは最大3µsです。このアプリケーションノートはアプリケーション回路の説明とPICコントローラの最高速ライン(PIC18Fコア)をMAX5591にインタフェースするために必要なすべてのファームウェアを含んでいます。実例のアセンブリプログラムは、MPLAB® IDE version 6.10.0.0.で提供される無料アセンブラを用いて、PIC18F442用に特別に書かれています。

ハードウェアの概要

アプリケーション回路はMAX5591EVKITを使用しますが、それはMAX5591、超高精度の電圧リファレンス(MAX6126)、2つの押しボタンスイッチ、利得設定抵抗、および実証済みのPCBレイアウトで構成されています。PIC18F442はMAX5591EVKITのボードには搭載されていませんが、図1に示したアプリケーション回路を完成させるために、ここではシステムに追加されています。MAX5591EVKIT上の/CS\、SCLK、DINおよびDOUTパッドによってSPIシリアルインタフェースを容易に接続することができます。

Figure 1a.

Figure 1. MAX5591 application schematic.

図1. MAX5591のアプリケーション回路

アナログとディジタルのグランドプレーン

アナログとディジタルのグランドプレーンを分離するのは良い方法です。この実例が図2に示されています。この両方のグランドプレーンはフェライトビーズを使用して接続してください。TDK MMZ1608B601Cなどのフェライトビーズを使って両方のグランドを接続すると、マイクロコントローラのシステムクロックとその高調波がアナロググランドに混入するのを防ぐことができます。PIC18F442のシステムクロックが40MHzであるため、「インピーダンス」 対 「周波数特性」からMMZ1608B601Cが選定されました。図3にはMMZ1608B601Cの「インピーダンス」 対 「周波数特性」図が示されています。

Figure 2. Separating analog and digital grounds.

図2. アナログとディジタルグランドの分離

Figure 3. Impedance vs. frequency curve for the TDK MMZ1608B601C ferrite bead.

図3. TDK MMZ1608B601Cフェライトビーズのインピーダンス 対 周波数特性図

ファームウェアの概要

例としてリスト1に示したアセンブリプログラムはPIC18F442の内蔵MSSP SPIペリフェラルを用いてMAX5591を初期化します。PIC18F442の40MHzシステムクロックによってMSSPに最高10MHzのSPIクロック(SCLK)を供給することができます。表1は電源投入後に必要となるコンフィギュレーションワードのみが示されています。MAX5591が初期化されると、表2に示すように、プログラムはDACの出力レジスタに連続してゼロスケールとフルスケールをロードします。この連続ループによって方形波が生成され、MAX5591の高速セトリングタイムを実証します。

リスト1. この実例のアセンブリプログラムはPIC18F442内蔵のMSSP SPIペリフェラルを用いて、MAX5591にインタフェースします。

リスト1. この実例のアセンブリプログラムはPIC18F442内蔵のMSSP SPIペリフェラルを用いて、MAX5591にインタフェースします。

表1. 8チャネルをすべて3µsのセトリングタイムに設定するためのコンフィギュレーション書込みコマンド。
SPI Line C7 C6 C5 C4 C3 C2 C1 C0 D7 D6 D5 D4 D3 D2 D1 D0
DIN 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1
表2. すべてのDAC出力にロードするコマンド。最初のコマンドはすべてのDACの出力にゼロスケールを設定し、2番目のコマンドはすべてのDAC出力にフルスケールを設定します。
SPI Line C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
DIN (1st) 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
DIN (2nd) 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1