input path control added

pull/34/head
erikkaashoek 4 years ago
parent 4f3f3fb8fe
commit 81159cdd07

@ -987,41 +987,37 @@ config_t config = {
.drive1_level_offset = 0,
.drive2_level_offset = -1.5,
.drive3_level_offset = -0.5,
.direct_level_offset = 100.0, // Uncalibrated
.ultra_level_offset = 100.0, // Uncalibrated
.correction_frequency =
{
{ 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low in
{ 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low lna
{ 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra in
{ 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra lna
/* low */ { 10000, 40000, 90000, 110000, 150000, 280000, 550000, 1000000, 5000000, 30000000, 100000000, 200000000, 360000000, 500000000, 625000000, 675000000, 729000000, 750000000, 800000000, 800000000},
/* 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
{ 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra in
{ 10000, 100000, 1000000, 5000000, 15000000, 30000000, 145000000, 400000000, 720000000, 800000000, 800000001, 1519000000, 1527000000, 3000000000, 3500000000, 4000000000, 4500000000, 5000000000, 5500000000, 6000000000 }, // low ultra lna
/* 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
{ 10000, 50000, 80000, 150000, 300000, 1000000, 5000000, 30000000, 100000000, 180000000, 650000000, 700000000, 760000000, 780000000, 790000000, 800000000, 800000000, 800000000, 800000000, 800000000}, // low out
/* 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},
/* ultra */ { 500000000, 840000000, 1160000000, 1500000000, 1670000000, 2050000000, 2300000000, 2800000000, 2810000000, 3020000000, 3250000000, 3360000000, 3370000000, 3640000000, 3730000000, 4030000000, 4330000000, 4830000000, 5200000000, 5350000000},
},
.correction_value =
{
#if 1
{ 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
{ 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
{ 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
{ 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
/* low */ { 14.16, 11.11, 9.33, 8.55, 7.26, 5.47, 2.8, 1.53, 0.25, 0, -0.46, 0.61, 1.54, 1.43, 0.91, 2, 2.03, 2.6, 5.08, 5.08},
/* 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
{ 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
{ 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low in
#endif
#else
{ 10.5, +3, +1 , -0.1, 0, 0, +1.1, +1.5, +1.8, +9.7, +3.8, +3.5, +4, +8, +10.5, +13, +17.5, +20, +24, +28,}, // low in
{ 10.5, +3, +1 , -0.1, 0, 0, +1.1, +1.5, +1.8, +9.7, +3.8, +3.5, +4, +8, +10.5, +13, +17.5, +20, +24, +28,}, // lna in
{ 10.5, +3, +1 , -0.1, 0, 0, +1.1, +1.5, +1.8, +3.7, +3.8, +3.5, +4, +8, +10.5, +13, +17.5, +20, +24, +28,}, // low ultra in
{ 10.5, +3, +1 , -0.1, 0, 0, +1.1, +1.5, +1.8, +3.7, +3.8, +3.5, +4, +8, +10.5, +13, +17.5, +20, +24, +28,}, // lna ultra in
#ifdef DIRECT_CORRECTION
{ 10.5, +3, +1 , -0.1, 0, 0, +1.1, +1.5, +1.8, +9.7, +3.8, +3.5, +4, +8, +10.5, +13, +17.5, +20, +24, +28,}, // low in
{ 10.5, +3, +1 , -0.1, 0, 0, +1.1, +1.5, +1.8, +9.7, +3.8, +3.5, +4, +8, +10.5, +13, +17.5, +20, +24, +28,}, // lna in
#endif
/* 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
{ 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // low out
// { 11.5, 7, 6, 3.5, 1.5, 0.5, -0.2, 0, 0, -0.5, +1.5, +2, +4, +6.5, +9, +13, +13, +13, +13, +13, }, // low out
/* 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},
/* ultra */ { -1.92, -1.89, -0.81, 1.16, 0.99, -0.34, 0.29, 3.33, 2.26, 3.08, 4.99, 6.75, 4.87, 6.12, 6.1, 5.3, 5.21, 8.3, 9.25, 10.85},
},
.setting_frequency_30mhz = 30000000ULL * FREQ_MULTIPLIER,
.cor_am = 0,

@ -18,7 +18,7 @@
*/
#include "ch.h"
#ifdef TINYSA_F303
//#ifdef TINYSA_F303
#ifdef TINYSA_F072
#error "Remove comment for #ifdef TINYSA_F303"
#endif
@ -26,7 +26,7 @@
#define TINYSA4
#endif
#define TINYSA4_PROTO
#endif
//#endif
#ifdef TINYSA_F072
#ifdef TINYSA_F303
@ -346,12 +346,12 @@ extern float *drive_dBm;
extern bool level_error;
#else
extern const int8_t drive_dBm [];
#endif
extern int test_output;
extern int test_output_switch;
extern int test_output_drive;
extern int test_output_attenuate;
extern int test_path;
#endif
extern uint8_t signal_is_AM;
extern const uint32_t reffer_freq[];
extern freq_t minFreq;
@ -731,6 +731,8 @@ typedef struct config {
float drive1_level_offset;
float drive2_level_offset;
float drive3_level_offset;
float direct_level_offset;
float ultra_level_offset;
#endif
#ifdef __NOISE_FIGURE__
float noise_figure;

@ -353,7 +353,7 @@ VNA_SHELL_FUNCTION(cmd_leveloffset)
{
// 0 1 2
#ifdef TINYSA4
static const char cmd_mode_list[] = "low|high|switch|receive_switch|out_switch|lna|harmonic|shift1|shift2|drive1|drive2|drive3";
static const char cmd_mode_list[] = "low|high|switch|receive_switch|out_switch|lna|harmonic|shift1|shift2|drive1|drive2|drive3|direct|ultra";
#else
static const char cmd_mode_list[] = "low|high|switch|receive_switch";
#endif
@ -374,6 +374,8 @@ VNA_SHELL_FUNCTION(cmd_leveloffset)
shell_printf(p, "drive1", config.drive1_level_offset);
shell_printf(p, "drive2", config.drive2_level_offset);
shell_printf(p, "drive3", config.drive3_level_offset);
shell_printf(p, "direct", config.direct_level_offset);
shell_printf(p, "ultra", config.ultra_level_offset);
#endif
return;
}
@ -399,6 +401,8 @@ VNA_SHELL_FUNCTION(cmd_leveloffset)
case 9: config.drive1_level_offset = v; break;
case 10: config.drive2_level_offset = v; break;
case 11: config.drive3_level_offset = v; break;
case 12: config.direct_level_offset = v; break;
case 13: config.ultra_level_offset = v; break;
#endif
default: goto usage;
}
@ -1028,9 +1032,9 @@ 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_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_adf|out_ultra|high|off|on";
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";
#else
@ -1154,7 +1158,7 @@ VNA_SHELL_FUNCTION(cmd_caloutput)
set_refer_output(m - 1);
}
#if 0
#ifdef TINYSA4
VNA_SHELL_FUNCTION(cmd_q)
{
if (argc < 1) {

@ -145,8 +145,8 @@ int max_drive = 18;
#define MAX_ATTENUATE 31.5
#endif
// 0 1 2 3 4 5
enum {PATH_OFF, PATH_LOW, PATH_DIRECT, PATH_ULTRA, PATH_LEAKAGE, PATH_HIGH};
// 0 1 2 3 4 5
enum {PATH_OFF, PATH_LOW, PATH_DIRECT, PATH_LEAKAGE, PATH_ULTRA, PATH_HIGH};
int signal_path = PATH_OFF;
#ifdef TINYSA4
@ -350,10 +350,17 @@ void set_output_path(freq_t f, float level)
}
static void calculate_static_correction(void);
void set_input_path(freq_t f)
{
if (test_output)
signal_path = test_path;
if (test_output) {
setting.extra_lna = test_path & 0x01;
switch ((test_path & 0xFE)>>1) {
case 0: signal_path = PATH_LOW; break;
case 1: signal_path = PATH_ULTRA; break;
case 2: signal_path = PATH_DIRECT; break;
}
}
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)))
@ -372,14 +379,15 @@ void set_input_path(freq_t f)
switch(signal_path) {
case PATH_LOW:
enable_ultra(false);
enable_high(false);
enable_direct(false);
enable_high(false);
goto common;
case PATH_DIRECT:
enable_ADF_output(false, false);
enable_ultra(!setting.atten_step);
enable_ultra(true);
enable_direct(true);
enable_high(true);
enable_ADF_output(false, false);
goto common2;
case PATH_ULTRA:
enable_ultra(true);
@ -392,6 +400,8 @@ void set_input_path(freq_t f)
SI4463_init_rx();
break;
}
if (test_output)
calculate_static_correction();
}
#endif
@ -1448,18 +1458,20 @@ float get_level_offset(void)
return(config.high_level_offset);
}
if (setting.mode == M_LOW) {
int lev;
#ifdef TINYSA4
if (setting.extra_lna) {
if (config.lna_level_offset == 100)
return 0;
return(config.lna_level_offset);
lev = config.lna_level_offset;
} else if (signal_path == PATH_DIRECT) {
lev = config.direct_level_offset;
} else if (signal_path == PATH_ULTRA) {
lev = config.ultra_level_offset;
} else
#endif
{
if (config.low_level_offset == 100)
return 0;
return(config.low_level_offset);
lev = config.low_level_offset;
}
return(lev == 100? 0 : lev);
}
if (setting.mode == M_GENLOW) {
return(LOW_OUT_OFFSET);
@ -3408,8 +3420,8 @@ pureRSSI_t perform(bool break_on_operation, int i, freq_t f, int tracking) /
if (SDU1.config->usbp->state == USB_ACTIVE)
shell_printf ("level=%f, d=%d, a=%d, s=%d\r\n", setting.level, d, setting.attenuate_x2, (setting.atten_step ? 1 : 0));
#endif
}
#endif
}
}
else if (setting.mode == M_GENHIGH) {
#ifdef TINYSA4

Loading…
Cancel
Save

Powered by TurnKey Linux.