« DDSチップでいろいろ遊んでみる   --第6回-- | メイン | DDSチップでいろいろ遊んでみる   --第8回-- »

DDSチップでいろいろ遊んでみる
   --第7回--

SPIプロトコルを出力させる
 AD9834はSPI(Serial Peripheral Interface)という方法で制御します。SPIはI2Cと並んで、いろいろな機器の制御に使われています。PICマイコンにはSPIやI2Cを出力できるコマンドが用意されていますが、FT245RLにはありません。プログラムで1ビットずつ出力させる必要があります。
 SPIには、データの開始を示すタイミングの取り方で、いくつかのバリエーションがありますが、ここで解説するのは、AD9834に使われている方式です。(SPIのタイミングチャート。AD9834のデータシートより)

SPI.jpg

 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での具体的プログラミングを解説していきます。

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/1340

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメ ントは表示されません。そのときはしばらく待ってください。)