ADF4350 Frequency sweep
How do I do it .
and also amplitude is not constant for all the frequency ... it keeps varying from one frequency to another..
use ADF4350, it can output from 137.5M~4400M. If you want to control output power, you can use digital control attenuator. Such as Aeroflex has such attenuator. It's better to add a buffer amplifier between the ADF4350 and the attenuator.
When progammimg the PLL , write a software code to control the digital electronic attenuator depending on your output frequency.
For electronic attenuators, see Hittite
You have to program it with every frequency in your chosen sweep. i.e. you have to program every step manually.
You can alter the output power via one of the control registers and this might help flatten the output power but my guess is that your output stage from the 4350 will contribute a lot of the unequal power delivery.
From memory you have to reprogram registers 0 and 4 each time you update for a new frequency.
You could run it into a limiter amplifier and then compensate for the rolloff in the limiter with a simple lumped network to get a very flat output power across the full range.
Note: You will get fairly poor spectral purity from the ADF4350 because of the way it operates via internal dividers. i.e. you will get fairly high harmonic content from it. If you use a limiter to level the output then the purity will get worse but it might still meet your requirements.
Your sweep speed will be limited by the speed of your SPI interface to the ADF4350 and the number of programmed step points you choose..
Below is the SPI function. just check and tell me whether the delays I have given is correct or wrong
void WRITE_REG(unsigned long int byte)
{
unsigned char i; // Loop counter
Nop();
CLK = 0; // Ensure CLK is low
LE = 0;
Nop();
for (i = 0; i < 32; i++) // Loop through each bit
{
if (byte & 0x80000000) // Check if next bit is a 1
{
DATA = 1; // If a 1, pull DATA high
}
else
{
DATA = 0; // If a 0, pull DATA low
}
Nop();
CLK = 1; // Bring CLK high to latch bit
Nop(); // Avoid violating Thi
byte = byte << 1; // Shift byte left for next bit
CLK = 0; // Bring CLK low for next bit
}
DATA = 0;
Nop();
LE=1;
Nop();
LE=0;
}