SPIデータの出力をLEDで確認しているところ。左からD0,D1.....D7。

プログラムの実際
最初にFTDI社のホームページからドライバをダウンロードして、インストールしておきます。VB.NETからFTDI社のドライバを呼び出すのはとても簡単で、用意されているコードをコピーしてくるだけです。1バイトずつ出力する場合は、サンプル・コードそのままでも良いのですが、SPIデータを文字列に構成してから出力する場合は、ByRefをByValに書き換えてください。
Public Declare Function FT_Write Lib "FTD2XX.DLL" (ByVal lngHandle As Integer, ByVal lpszBuffer As String, ByVal lngBufferSize As Integer, ByRef lngBytesWritten As Integer) As Integer
AD9834の制御データは次のような構成になっています。
初期化コマンド + 周波数データ + フェーズデータ + 初期化コマンド
最初の初期化コマンドは、読み込むデータの指定を行います。周波数データ、フェーズデータを読み込んだあとで、内部レジスタをリセットすると読み込んだデータが有効になります。最初に周波数データをプログラムしてみます。
周波数データは次の式で求めることができます。
dstatus = (f0 * 10 ^ 6) / MCLK * (2 ^ 28)
dstatusはAD9834に渡すためのデータです。MCLKは外部クロック周波数です。今回は50MHzを使っています。文字列に並べるために求められたdstatusをいったん配列に直します。d0に周波数データを0と1のByte表現に直して配列として保存します。
n = Len(Convert.ToString(dstatus, 2))
For i = 0 To 27
If n >= i Then
d0(i) = Convert.ToString(dstatus And 1)
dstatus = dstatus >> 1
Else
d0(i) = 0
End If
Next
d0をさらに1バイトずつに分解し、出力するための文字列を生成しますが、この辺は実際のコードを見てください。プログラムのソースは用意ができ次第、公開する予定です。VB.NETでは、バイトを操作するコマンドがCなどのように用意されていないので、このような手間をかけて処理しています。
次回はコントロール・プログラムで試作基板を操作しながら、修正点、改良したい機能などを考えてみます。