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, .ultra_start = ULTRA_AUTO,
.low_level_offset = 100.0, // Uncalibrated .low_level_offset = 100.0, // Uncalibrated
.high_level_offset = 100, // Uncalibrated .high_level_offset = 100, // Uncalibrated
.lna_level_offset = 100, .lna_level_offset = 0,
.low_level_output_offset = 100.0, // Uncalibrated .low_level_output_offset = 100.0, // Uncalibrated
.high_level_output_offset = 0, // Uncalibrated, but checking code is not yet present .high_level_output_offset = 0, // Uncalibrated, but checking code is not yet present
.harmonic_level_offset = 7, .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}, /* 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 */ { 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 /* 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 */ { 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 /* 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}, /* 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}, /* 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}, /* 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}, /* 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 */ { 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 /* 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 */ { 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 /* 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}, /* 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}, /* 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}, /* 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; (void)argc;
#ifdef TINYSA4 #ifdef TINYSA4
#ifdef DIRECT_CORRECTION 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 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 range[] = "0-19"; static const char range[] = "0-19";
#else #else
static const char cmd[] = "low|high"; static const char cmd[] = "low|high";

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

Loading…
Cancel
Save

Powered by TurnKey Linux.