Updated selftest 1

SI443_RBW_update
erikkaashoek 4 years ago
parent 497dd86db1
commit ef66cbfe23

@ -940,7 +940,7 @@ config_t config = {
.ext_zero_level = 174, .ext_zero_level = 174,
.receive_switch_offset = 0.0, .receive_switch_offset = 0.0,
#ifdef __NOISE_FIGURE__ #ifdef __NOISE_FIGURE__
.noise_figure = 7.2, .noise_figure = 5.0,
#endif #endif
#endif #endif
.sweep_voltage = 3.3, .sweep_voltage = 3.3,

@ -5837,37 +5837,43 @@ quit:
set_refer_output(-1); set_refer_output(-1);
#ifdef TINYSA4 #ifdef TINYSA4
} else if (test == 1) { } else if (test == 1) {
float p2, p1, p; float average, p;
freq_t end_freq = 100000000;
if (setting.test_argument > 0)
end_freq =setting.test_argument;
in_selftest = true; // Spur search in_selftest = true; // Spur search
reset_settings(M_LOW); reset_settings(M_LOW);
test_prepare(TEST_SILENCE); test_prepare(TEST_SILENCE);
freq_t f;
#ifdef TINYSA4 #ifdef TINYSA4
// setting.auto_IF = false;
// setting.frequency_IF=config.frequency_IF1+ STATIC_DEFAULT_SPUR_OFFSET/2;
freq_t f = 47300000; // Start search at 2.2MHz
setting.frequency_step = 1000; setting.frequency_step = 1000;
#else #else
setting.auto_IF = false; setting.auto_IF = false;
setting.frequency_IF=DEFAULT_IF; setting.frequency_IF=DEFAULT_IF;
freq_t f = 400000; // Start search at 400kHz
setting.frequency_step = 30000; setting.frequency_step = 30000;
#endif #endif
if (setting.test_argument > 0)
setting.frequency_step=setting.test_argument;
// int i = 0; // Index in spur table (temp_t) // int i = 0; // Index in spur table (temp_t)
set_RBW(setting.frequency_step/100); set_RBW(setting.frequency_step/100);
last_spur = 0; last_spur = 0;
for (int j = 0; j < 4; j++) { for (int j = 0; j < 4; j++) {
int k=0; int k=0;
p2 = PURE_TO_float(perform(false, 0, f, false)); #ifdef TINYSA4
f = 2200000; // Start search at 2.2MHz
#else
f = 400000; // Start search at 400kHz
#endif
average = PURE_TO_float(perform(false, 0, f, false));
vbwSteps = 1; vbwSteps = 1;
f += setting.frequency_step; f += setting.frequency_step;
p1 = PURE_TO_float(perform(false, 1, f, false)); average += PURE_TO_float(perform(false, 1, f, false));
average /= 2.0;
f += setting.frequency_step; f += setting.frequency_step;
shell_printf("\n\rStarting with %4.2f, %4.2f and IF at %D and step of %D\n\r", p2, p1, setting.frequency_IF, setting.frequency_step ); shell_printf("\n\rStarting with average of %4.2f and IF at %DHz and step of %DHz till %DHz\n\r", average, setting.frequency_IF, setting.frequency_step, end_freq );
while (f < DEFAULT_MAX_FREQ && !global_abort) { // while (f < DEFAULT_MAX_FREQ && !global_abort) {
while (f < end_freq && !global_abort) {
if ((k++ % 1000) == 0) if ((k++ % 1000) == 0)
shell_printf("Pass %d, freq %D\n\r", j, f); shell_printf("Pass %d, freq %D\r", j, f);
int r = 0; int r = 0;
do { do {
p = PURE_TO_float(perform(false, 1, f, false)); p = PURE_TO_float(perform(false, 1, f, false));
@ -5876,18 +5882,15 @@ quit:
#else #else
#define SPUR_DELTA 15 #define SPUR_DELTA 15
#endif #endif
// shell_printf("%ld %4.2f\n\r", f, p); } while ( average + SPUR_DELTA < p && r++ < 4);
// if ( p2 < p1 - SPUR_DELTA && p < p1 - SPUR_DELTA) {
} while ( p2 < p - SPUR_DELTA && r++ < 4);
if (r >= 4) { if (r >= 4) {
shell_printf("Pass %d, spur of %4.2f at %D with count %d\n\r", j, p,f/1000, add_spur(f)); shell_printf("Pass %d, spur of %4.2f at %DkHz with count %d\n\r", j, p,f/1000, add_spur(f));
} }
p2 = (p2*9+p1)/10; average = (average*19+p)/20;
p1 = p;
f += setting.frequency_step; f += setting.frequency_step;
} }
} }
shell_printf("\n\rTable for IF at %d and step of %d\n\r", setting.frequency_IF, setting.frequency_step); shell_printf("\n\rTable for IF at %D and step of %D\n\r", setting.frequency_IF, setting.frequency_step);
for (int j = 0; j < last_spur; j++) { for (int j = 0; j < last_spur; j++) {
if ((int)stored_t[j] >= 1) if ((int)stored_t[j] >= 1)
shell_printf("%d, %d\n\r", ((int)temp_t[j])/1000, (int)stored_t[j]); shell_printf("%d, %d\n\r", ((int)temp_t[j])/1000, (int)stored_t[j]);

@ -1465,8 +1465,8 @@ int16_t Si446x_RSSI(void)
#endif #endif
#endif #endif
if (--i <= 0) break; if (--i <= 0) break;
// if (setting.repeat > 3) if (setting.repeat > 3)
// my_microsecond_delay(30); my_microsecond_delay(100);
}while(1); }while(1);
if (setting.repeat > 1 && setting.exp_aver == 1) if (setting.repeat > 1 && setting.exp_aver == 1)

Loading…
Cancel
Save

Powered by TurnKey Linux.