AD9834にデータを送る方法を説明します。
AD9834へPSI通信で送るデータは、16ビット単位です。
ですから、データは、コントロールワード+周波数データ(または、位相データ)の形で2回または3回送信します。
コントロールワード(D15=0,D14=0)のD13が1の時は、28ビットモードで、コントロールワードに続く2回の連続した書き込みで周波数レジスタに完全なデータが書き込まれます。
D13が0の時は、続いて書き込むデータを周波数レジスタの上位または下位に書き込みます。上位か下位かは、D12で指定します。
周波数データの上位2ビット(D15,D14)は、01でFREQ0を10でFREQ1を指定します。
以上をまとめると(28ビットモードのとき)次のようになります。
では、Arduinoでは、どのようにスケッチを書いたらよいのでしょう。
Web上を検索しても日本語のサイトは、あまりヒットしません。そんな中、JA2GQPさんのブログにすばらしいスケッチが公開されていました。
そのスケッチを参考にして(というよりコピーして)、とりあえずスケッチを書き、1MHzを発生させてみました。
回路図は、次のとおりです。
マスタクロックには、SG-8002DB(67.108864MHz)を使いました。PLLですからそれほどの精度は望めませんが、値段も手頃なのでこれにしました。
SG-8002DBに流れる電流は約16mA、AD9834は1MHz発生の時約40mAで、計、約56mAでした。
1MHzの出力波形です。AD9850DDSと比べるとギザギザが目立ちます。無負荷で0.6Vp-p程度の出力が得られました。
SCLKとSDATAの波形です。
赤がSDATA、青がSCLKです。
なお、コントロールワードのD1を1にすると(0X2002)、三角波を発生させることができます。1MHzの三角波です。
周波数を変えて実験をしました。上限は20MHz程度、下限は10Hz程度でした。スペックでは37.5MHzまで発生できるはずですが、 ??です。
カウンタのせいか、ちょっと分かりませんが、20MHzまで使えれば、7MHzトランシーバのVFOとしては大丈夫でしょう。ただ、高調波が多いと思いますので、LPFは必須ですね。
スケッチについては、次回書きます。