ADF sentezleyicilerin ayarları (faz dedektör frekansı, çıkış frekansı, akım, vb.) ADF’deki bir dizi kayıt içeriği tarafından belirlenir.
ADF için bu kayıtların içerikleri Analog Devices yazılımı kullanılarak hesaplanabilir. Bu yazılım Analog Devices (Engineering) sayfalarında yayınlanmıştır. Örneğin, ADF 4002: ADI PLL Int-N yazılımını arayın, ADF4351 için EVAL-ADF4351 veya ADF435x’i arayın, ADF5355 için EVAL ADF5355’i arayın.
Bir Arduino ile bir ADF programlamak kolaydır. Seviye değiştiricileri kullanmak zorunda kalmamak için 3,3 voltluk bir Arduino önerilir. USB arayüzlü bir Arduino bilgisayara bağlanmayı kolaylaştırır.
İşte 2 örnek:
1) Arduino Leonardo pro micro 3.3 volt
2) Diymore’dan PRO-MICRO 3.3 volt

Şema basittir. Veri, LE ve CLK, ADF kayıtlarını doldurmak için kullanılır. CE (= Chip Enable) ile ADF kilidi açılır. ADF’nin CE bağlantısı ayrıca 3,3 voltluk hatta sürekli olarak bağlanabilir.
Şemaya, ADF’ye veri aktarımı sırasında yanan bir LED eklendi. Basmalı anahtar Arduino’nun sıfırlanmasına olanak tanır.

ADF5355
ADF5355’te 32 bitlik 13 kayıt vardır. Kayıtlar önce kayıt 12, sonra kayıt 11 ve böylece kayıt 0’a kadar teker teker doldurulur. Bu kayıtları doldurmak için, 32 bit veri (Veri hattı) saatin her yükselen kenarında (CLK) ADF’nin 32 bit kaydırma kaydına saatlenir. Veri önce MSB’de saatlenir. Kaydırma kaydından 13 mandaldan birine veri aktarımı LE’nin (Yükleme Etkinleştirme) yükselen kenarında gerçekleşir.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
// Version 0.1 june 2020 // simple Arduino sketch for register setting of the ADF5355. // comments are welcome at on4cdu'at'uba.be int LEpin = 6, datapin = 8, clkpin = 7, CEpin = 9 ; // define ADF5355 enable, data and clock connections int ledpin = 10; unsigned long Reg00, Reg01, Reg02, Reg03, Reg04, Reg05, Reg06, Reg07, Reg08, Reg09, Reg10, Reg11, Reg12; // define registers void writeregister(unsigned long regword) { // this routine clocks a 32 bits word (regword) into the ADF for (int pos = 32; pos > 0; pos --) { // register word has 32 bits if (regword & 0x80000000) { digitalWrite(datapin, HIGH); // write 1 into register ADF } else { digitalWrite(datapin, LOW); // write 0 into register ADF } digitalWrite(clkpin, HIGH); digitalWrite(clkpin, LOW); regword = regword << 1; // rotate left for next bit } digitalWrite(LEpin, HIGH); // latch in register word on rising edge of LE digitalWrite(LEpin, LOW); } // end writeregister void write13registers() { // write 13 registers to ADF digitalWrite(ledpin, HIGH); writeregister(Reg12); writeregister(Reg11); writeregister(Reg10); writeregister(Reg09); writeregister(Reg08); writeregister(Reg07); writeregister(Reg06); writeregister(Reg05); writeregister(Reg04); writeregister(Reg03); writeregister(Reg02); writeregister(Reg01); delay(0.1); writeregister(Reg00); digitalWrite(ledpin, LOW); } void setup () { pinMode(ledpin, OUTPUT); pinMode(clkpin, OUTPUT); pinMode(datapin, OUTPUT); pinMode(CEpin, OUTPUT); pinMode(LEpin, OUTPUT); digitalWrite(ledpin, LOW); digitalWrite(clkpin, LOW); digitalWrite(datapin, LOW); digitalWrite(CEpin, LOW); digitalWrite(LEpin, LOW); delay (500); digitalWrite(CEpin, HIGH); // Register settings for Fout= 400MHz and 26MHz reference frequency. PFD = REF Reg00 = 0x00200F60; Reg01 = 0x02762761; Reg02 = 0x13B20002; Reg03 = 0x00000003; Reg04 = 0x3000BD84; Reg05 = 0x00800025; Reg06 = 0x15802076; Reg07 = 0x120000E7; Reg08 = 0x102D0428; Reg09 = 0x0B0B3CC9; Reg10 = 0x00C0193A; Reg11 = 0x0061300B; Reg12 = 0x0001041C; write13registers(); } void loop() { // empty main loop } |