Updated LNA calibration

pull/34/head
erikkaashoek 4 years ago
parent fe67a2b209
commit 14742b4cf1

@ -978,7 +978,7 @@ config_t config = {
.ultra_start = ULTRA_AUTO,
.low_level_offset = 100.0, // Uncalibrated
.high_level_offset = 100, // Uncalibrated
.lna_level_offset = 100,
.lna_level_offset = 0,
.low_level_output_offset = 100.0, // Uncalibrated
.high_level_output_offset = 0, // Uncalibrated, but checking code is not yet present
.harmonic_level_offset = 7,
@ -995,10 +995,8 @@ config_t config = {
/* low lna */ { 10000, 20000, 50000, 90000, 230000, 360000, 670000, 800000, 1000000, 7000000, 30000000, 43000000, 90000000, 300000000, 525000000, 640000000, 750000000, 770000000, 785000000, 780000000},
/* ultra */ { 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra in
/* ultra LNA*/ { 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra lna
#ifdef DIRECT_CORRECTION
/* direct */ { 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra in
/* direct LNA*/ { 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra lna
#endif
/* out */ {10000, 30000, 70000, 100000, 300000, 500000, 800000, 2000000, 5000000, 8000000, 30000000, 90000000, 140000000, 370000000, 630000000, 750000000, 790000000, 810000000, 820000000, 830000000},
/* direct */ { 500000000, 823000000, 830000000, 840000000, 850000000, 860000000, 910000000, 920000000, 930000000, 970000000, 990000000, 1030000000, 1040000000, 1070000000, 1080000000, 1090000000, 1100000000, 1110000000, 1120000000, 1130000000},
/* adf */ { 500000000, 700000000, 820000000, 840000000, 950000000, 1000000000, 1040000000, 1070000000, 1320000000, 1570000000, 1750000000, 2220000000, 2800000000, 2810000000, 3000000000, 3250000000, 3440000000, 3800000000, 4060000000, 4350000000},
@ -1010,10 +1008,8 @@ config_t config = {
/* low lna */ { 13.78, 11.68, 9.74, 8.64, 6.03, 6.13, 1.99, 1.29, 1.15, 0.46, 0, 0.33, -0.29, 1.31, 0.88, 1.33, 2.13, 2.79, 3.74, 4.96},
/* ultra */ { 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
/* ultra LNA*/ { 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
#ifdef DIRECT_CORRECTION
/* direct */ { 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
/* direct LNA*/ { 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
#endif
/* out */ { 8.5, 6.04, 3.55, 2.42, -0.04, -1.06, -1.46, -2.16, -2.71, -2.56, -3.08, -3.47, -3.15, -1.03, -1.75, -0.21, 1.53, 3.81, 5.69, 9.4},
/* direct */ { -6.71, -2.48, -2.46, -2.2, -2.24, -1.96, -1.37, -1.41, -1.14, -0.55, -0.5, 0.11, 0.06, 0.69, 0.64, 0.71, 0.96, 0.93, 1.35, 1.52},
/* adf */ { -1, -5.25, -8.11, -8.35, -8.1, -8.91, -10.3, -10.05, -5.19, -2.69, -2.31, -2.68, -1.31, -2.36, -2.93, -1.94, -0.37, 4.33, 7.17, 9.02},

@ -1031,11 +1031,7 @@ VNA_SHELL_FUNCTION(cmd_correction)
{
(void)argc;
#ifdef TINYSA4
#ifdef DIRECT_CORRECTION
static const char cmd[] = "low|lna|ultra|ultra_lna|direct|direct_lna|out|out_direct|out_ultra|out_adf|high|off|on";
#else
static const char cmd[] = "low|lna|ultra|ultra_lna|out|out_direct|out_ultra|out_adf|high|off|on";
#endif
static const char cmd[] = "low|lna|ultra|ultra_lna|direct|direct_lna|out|out_direct|out_adf|out_ultra|high|off|on";
static const char range[] = "0-19";
#else
static const char cmd[] = "low|high";

@ -366,7 +366,7 @@ void set_input_path(freq_t f)
}
else if (MODE_HIGH(setting.mode))
signal_path = PATH_HIGH;
else if(config.ultra && ((config.ultra_start == ULTRA_AUTO && f > 700) || (config.ultra_start != ULTRA_AUTO && f >config.ultra_start)))
else if(ultra && ((config.ultra_start == ULTRA_AUTO && f > 700) || (config.ultra_start != ULTRA_AUTO && f >config.ultra_start)))
signal_path = PATH_ULTRA;
else if (config.direct && f >= config.direct_start && f < config.direct_stop)
signal_path = PATH_DIRECT;
@ -603,7 +603,7 @@ void reset_settings(int m)
setting.tracking_output = false;
setting.measurement = M_OFF;
#ifdef __ULTRA__
setting.ultra = S_AUTO_OFF;
// setting.ultra = S_AUTO_OFF;
#endif
#ifdef TINYSA4
setting.frequency_IF = config.frequency_IF1; ;
@ -997,6 +997,7 @@ void toggle_below_IF(void)
dirty = true;
}
#if 0
#ifdef __ULTRA__
void toggle_ultra(void)
{
@ -1009,6 +1010,7 @@ void toggle_ultra(void)
dirty = true;
}
#endif
#endif
void set_modulation(int m)
{
@ -1446,15 +1448,13 @@ void set_actual_power(float o) // Set peak level to known value
config.lna_level_offset += new_offset;
else
#endif
{
if (setting.atten_step)
config.receive_switch_offset += new_offset;
else
config.low_level_offset += new_offset;
}
if (setting.atten_step)
config.receive_switch_offset += new_offset;
else
config.low_level_offset += new_offset;
}
dirty = true;
config_save();
// config_save();
// dirty = true; // No HW update required, only status panel refresh
}
@ -1472,13 +1472,16 @@ float get_level_offset(void)
lev = config.direct_level_offset;
} else if (signal_path == PATH_ULTRA) {
lev = config.ultra_level_offset;
} else if (setting.extra_lna) {
lev = config.lna_level_offset;
} else
#endif
{
lev = config.low_level_offset;
}
#ifdef TINYSA4
if (lev != 1000 && setting.extra_lna) {
lev += config.lna_level_offset;
}
#endif
return(lev == 100? 0 : lev);
}
if (setting.mode == M_GENLOW) {
@ -7036,6 +7039,7 @@ void calibrate(void)
int local_test_status;
int old_sweep_points = setting._sweep_points;
#ifdef TINYSA4
int old_ultra = config.ultra;
// setting.auto_IF = true; // set in selftest
// setting.frequency_IF = config.frequency_IF1; // set in selftest
float direct_level=0.0;
@ -7098,6 +7102,11 @@ again:
for (int j= 0; j < CALIBRATE_RBWS; j++ ) {
#if 1
reset_settings(M_LOW);
config.ultra = true; // Enable ultra
maxFreq = 12000000000;
ultra = true;
set_refer_output(0);
#ifdef TINYSA4
set_attenuation(0);
@ -7217,6 +7226,10 @@ again:
goto again;
setting.below_IF = S_AUTO_OFF;
in_calibration = false;
#ifdef TINYSA4
ultra = old_ultra;
config.ultra = old_ultra;
#endif
#if 0 // No high input calibration as CAL OUTPUT is unreliable
@ -7254,15 +7267,8 @@ quit:
set_sweep_points(old_sweep_points);
in_selftest = false;
// set_refer_output(-1);
#ifdef TINYSA4
reset_settings(M_LOW);
// set_extra_lna(false);
// set_average(0,AV_OFF);
set_refer_output(-1);
#else
reset_settings(M_LOW);
set_refer_output(-1);
#endif
test_wait = false;
}

Loading…
Cancel
Save

Powered by TurnKey Linux.