|
|
@@ -122,6 +122,8 @@ uint32_t lmx2594regs[LMX_COUNT] = {
|
|
|
0x00251C
|
|
|
};
|
|
|
|
|
|
+double lmx_freq; // Frequency of the LMX2594
|
|
|
+
|
|
|
void lmx2594_init(void *bar1) {
|
|
|
// Header for LMX Reset
|
|
|
uint32_t *ptr_rst = bar1 + LMX_BASE_ADDR;
|
|
|
@@ -342,10 +344,18 @@ int lmx_freq_set_main_band(void *bar1, double freq, double f_pd) {
|
|
|
}
|
|
|
|
|
|
int lmx_freq_set_out_of_band(void *bar1, double freq, double f_pd) {
|
|
|
- double f_vco = 2 * freq;
|
|
|
+
|
|
|
+ if (freq >= 10e6 && freq <= 1000e6) {
|
|
|
+ lmx_freq = lmx_lower_bond_set(freq, f_pd);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ lmx_freq = freq;
|
|
|
+ }
|
|
|
+
|
|
|
+ double f_vco = 2 * lmx_freq;
|
|
|
int chan_div = 2;
|
|
|
uint8_t ch_div_reg = 0; // 2
|
|
|
- double vco_div = 7.5e9 / freq;
|
|
|
+ double vco_div = 7.5e9 / lmx_freq;
|
|
|
double N_div;
|
|
|
|
|
|
int vco_core;
|
|
|
@@ -362,70 +372,70 @@ int lmx_freq_set_out_of_band(void *bar1, double freq, double f_pd) {
|
|
|
if (f_vco < 7.5e9) {
|
|
|
if (vco_div > 2 && vco_div <= 4)
|
|
|
chan_div = 4; // 4
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
if (vco_div > 4 && vco_div <= 6) {
|
|
|
chan_div = 6; // 6
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 6 && vco_div <= 8) {
|
|
|
chan_div = 8; // 8
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 8 && vco_div <= 12) {
|
|
|
chan_div = 12; // 12
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 12 && vco_div <= 16) {
|
|
|
chan_div = 16; // 16
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 16 && vco_div <= 24) {
|
|
|
chan_div = 24; // 24
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 24 && vco_div <= 32) {
|
|
|
chan_div = 32; // 32
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 32 && vco_div <= 48) {
|
|
|
chan_div = 48; // 48
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 48 && vco_div <= 64) {
|
|
|
chan_div = 64; // 64
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 64 && vco_div <= 72) {
|
|
|
chan_div = 72; // 72
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 72 && vco_div <= 96) {
|
|
|
chan_div = 96; // 96
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 96 && vco_div <= 128) {
|
|
|
chan_div = 128; // 128
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 128 && vco_div <= 192) {
|
|
|
chan_div = 192; // 192
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 192 && vco_div <= 256) {
|
|
|
chan_div = 256; // 256
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 256 && vco_div <= 384) {
|
|
|
chan_div = 384; // 384
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 384 && vco_div <= 512) {
|
|
|
chan_div = 512; // 512
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
if (vco_div > 512 && vco_div <= 768) {
|
|
|
chan_div = 768; // 768
|
|
|
- f_vco = freq * chan_div;
|
|
|
+ f_vco = lmx_freq * chan_div;
|
|
|
}
|
|
|
|
|
|
switch (chan_div) {
|
|
|
@@ -486,7 +496,7 @@ int lmx_freq_set_out_of_band(void *bar1, double freq, double f_pd) {
|
|
|
}
|
|
|
} else {
|
|
|
ch_div_reg = 0;
|
|
|
- f_vco = freq * 2;
|
|
|
+ f_vco = lmx_freq * 2;
|
|
|
}
|
|
|
N_div = f_vco / f_pd;
|
|
|
|
|
|
@@ -681,6 +691,14 @@ int lmx_freq_set_out_of_band(void *bar1, double freq, double f_pd) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+double lmx_lower_bond_set (double freq, double f_pd) {
|
|
|
+ double f_max2870 = 4e9;
|
|
|
+
|
|
|
+ double lmx_req_freq = f_max2870-freq; // 4 GHz - freq
|
|
|
+
|
|
|
+ return lmx_req_freq;
|
|
|
+}
|
|
|
+
|
|
|
int lmx_freq_set(void *bar1, double freq) {
|
|
|
|
|
|
double f_pd = 200e6;
|
|
|
@@ -697,7 +715,7 @@ int lmx_freq_set(void *bar1, double freq) {
|
|
|
lmx_freq_set_out_of_band(bar1, freq, f_pd);
|
|
|
}
|
|
|
// Switch the keys
|
|
|
- key_switch(bar1, freq);
|
|
|
+ key_switch(bar1, freq,lmx_freq);
|
|
|
return 0;
|
|
|
}
|
|
|
|