こんな値段で大丈夫か?と思っていたがちゃんと届いたし動作した(^q^/
配線図
DATASHEETを見ると5V駆動できそうなのでArduinoで試した。
25MHzの水晶が載っているので正確な周波数も設定できそうだがDATASHEETをちゃんと読む気力がなかったのであてずっぽうで周波数スイープさせてみた。
Arduinoのスケッチ
AD9833_Test.ino
/* * AD9833 Test * MCLK: 25MHz * * 2016.11.02 created * */ #include <SPI.h> const int CS = 10; void setup() { Serial.begin(9600); Serial.println("AD9833 Test"); pinMode(CS, OUTPUT); SPI.begin(); SPI.setDataMode(SPI_MODE2); AD9833reset(); } void loop() { static uint8_t cnt; AD9833setFrequency(cnt); cnt++; delay(10); } void AD9833reset() { writeToAD9833(0x0100); } void AD9833setFrequency(uint8_t cnt) { // 制御ワード writeToAD9833(0x2000); // 14LSBs writeToAD9833(0x4000); // 14MSBs writeToAD9833(0x4000 + cnt); } void writeToAD9833(uint16_t data) { digitalWrite(CS, LOW); SPI.transfer(highByte(data)); SPI.transfer(lowByte(data)); digitalWrite(CS, HIGH); }
出力波形
ch1:out ch2:SPI SCK
メモ:
出力波形はGND~600mV程度。DATASHEETを見ても、(AD9833_JP.pdf p2)
Vout最大 | 0.65 | V
となっているのでこれで正常だと思う。ノイズも相当乗っている(線が太い)のでアナログ回路での波形増幅+LPFは必要そうだ。
AD9833のDATASHEETを見ると、SPIのSCKの下降時にMOSIを評価するらしいので、SPI Mode2を指定した。
最近ARMを使っているのでArduino/ATMegaのintのbit長が16bitなのを忘れてしまって結構混乱する。しかもAD9833の周波数指定が28bitで14bitずつ送らないとだめっぽい。ArduinoのSPIのデータ幅は8bitなので周波数指定するにはちゃんと考えないとだめかもしれない(@@;
ブレッドボードで実験するとSPIの出力時には、波形出力にも相当信号波形が重畳する。
PCM5102を使ったファンクションジェネレータ場合と比べると高周波数でもデジタル歪(ガタガタ)が出ないのでノイズ対策をすれば何かと使いどころがありそう。
0 件のコメント:
コメントを投稿