SPIプロトコルを出力させる
AD9834はSPI(Serial Peripheral Interface)という方法で制御します。SPIはI2Cと並んで、いろいろな機器の制御に使われています。PICマイコンにはSPIやI2Cを出力できるコマンドが用意されていますが、FT245RLにはありません。プログラムで1ビットずつ出力させる必要があります。
SPIには、データの開始を示すタイミングの取り方で、いくつかのバリエーションがありますが、ここで解説するのは、AD9834に使われている方式です。(SPIのタイミングチャート。AD9834のデータシートより)
AD9834は、SCLK、FSYNC、SDATAの三つの信号線を利用してコマンドを送ります。回路図を見るとわかるように、AD9834を2個使っているので、FT245RLのピン、D0、D1、D2とD3、D4、D5をそれぞれの信号に割り当てています。話を簡単にするために、ここでは一つ目のAD9834に対するコマンドについて解説します。
FT245RLの動作については、玄箱proの記事「USB パラレルと LED」にちょうどよい解説が載っています。(光永さん、ありがとうございます)。こちらでもBig Bang Modeを使いSPIを出力します。
タイミングチャートを見ていくと、SCLKが1サイクルするごとにSDATAが1ビット送られていることがわかります。Big Bang Modeでは、出力ピンを1回ON/OFFさせるには、1バイト出力させる必要があります。つまりSCLKを基準にするとSDATAを1ビット送るために2バイトの出力が必要になります。また、FSYNCが1->0に変化する次のタイミングで読み取りが開始されます。
以上のことから、Big Bang Modeで出力させるための最初は次のように表すことができます。
SCLK -> D0 SDATA -> D1 FSYNC -> D2
D0 D1 D2
1 0 1
1 0 1
1 0 1 データを送る前の状態
1 0 0 FSYNCが0になり、開始の合図
1 x 0 データ開始
0 x 0 SCLK が1->0で1サイクル
1 x 0 次のデータ
※実は、あとでから気がついたのですが、FSYNCは複数のAD9834をつなぐときに、データを送るチップに対してロジックを0に設定するもので、単独で使う場合には、最初からGNDに落としておいてもかまいません。AD99xxシリーズでは、この機能が明確にされていてCS(Chip Select)と変えられています。
次回は、VB.NETでの具体的プログラミングを解説していきます。
