From b166dd3883702ac179814e000aaa75640410e970 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Tue, 15 Mar 2022 08:50:55 +0100 Subject: [PATCH] Updated step delay --- main.c | 4 ++-- sa_core.c | 50 +++++++++++++++++++++++++++++++++++--------------- si4468.c | 4 ++-- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/main.c b/main.c index 38a0503..cb67b48 100644 --- a/main.c +++ b/main.c @@ -921,8 +921,8 @@ config_t config = { }, .correction_value = { - { 10.5, +3.5, +1.9, +0.5, -0.8, 0, +0.7, +4.7, +5.7, +12.7, +6.8, +10.7, +8.3, +8.3, +8.3, +9, +9, +9, +11, +11,}, // low in - { 10.5, +3.5, +1.9, +0.5, -0.8, 0, +0.7, +4.7, +5.7, +12.7, +6.8, +10.7, +8.3, +9, +11.5, +14.5, +23, +25, +36, +46,}, // LNA in + { 10.5, +2.3, +1.9, -0.2, -0.2, 0, -0.7, +1.8, +1.8, +9.7, +3.8, +4.4, +4.3, +8.3, +8.3, +9, +9, +9, +11, +11,}, // low in + { 10.5, +2.3, +1.9, -0.2, -0.2, 0, -0.7, +1.8, +1.8, +9.7, +3.8, +4.4, +4.3, +8.3, +8.3, +9, +9, +9, +11, +11,}, // low in { 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 }, .setting_frequency_30mhz = 30000000ULL * FREQ_MULTIPLIER, diff --git a/sa_core.c b/sa_core.c index fa4165b..0b7726e 100644 --- a/sa_core.c +++ b/sa_core.c @@ -1624,12 +1624,12 @@ static const struct { { 8500, 150, 50, 400, -90, 0.7}, { 6000, 150, 50, 300, -95, 0.8}, { 3000, 150, 50, 200, -95, 1.3}, - { 1000, 600, 100, 100, -105, 0.3}, - { 300, 800, 120, 100, -110, 0.7}, - { 100, 1500, 120, 100, -115, 0.5}, - { 30, 1500, 300, 100, -120, 0.7}, - { 10, 5000, 600, 100, -122, 1.1}, - { 3, 19000, 12000, 100, -125, 1.0} + { 1000, 260, 100, 100, -105, 0.3}, + { 300, 420, 120, 100, -110, 0.7}, + { 100, 1280, 120, 100, -115, 0.5}, + { 30, 1600, 300, 100, -120, 0.7}, + { 10, 4000, 600, 100, -122, 1.1}, + { 3, 18700, 12000, 100, -125, 1.0} }; #endif @@ -1752,7 +1752,7 @@ pureRSSI_t get_frequency_correction(freq_t f) // Frequency dependent RSSI c if (setting.mode == M_LOW && ultra && f > ultra_threshold) { if ( f > ULTRA_MAX_FREQ) { #ifdef TINYSA4 - cv += float_TO_PURE_RSSI(0); // +9dB correction. + cv += float_TO_PURE_RSSI(8.5); // +9dB correction. #else cv += float_TO_PURE_RSSI(13.5); // +dB correction. TODO !!!!!!!!!!!!!!!!! #endif @@ -5190,9 +5190,9 @@ const test_case_t test_case [] = #ifdef TINYSA4 {// Condition Preparation Center Span Pass Width(%)Stop TEST_CASE_STRUCT(TC_BELOW, TP_SILENT, 0.06, 0.11, -30, 0, -30), // 1 Zero Hz leakage - TEST_CASE_STRUCT(TC_BELOW, TP_SILENT, 0.1, 0.1, -60, 0, 0), // 2 Phase noise of zero Hz + TEST_CASE_STRUCT(TC_BELOW, TP_SILENT, 0.1, 0.1, -55, 0, 0), // 2 Phase noise of zero Hz TEST_CASE_STRUCT(TC_SIGNAL, TP_30MHZ, 30, 1, CAL_LEVEL, 10, -85), // 3 - TEST_CASE_STRUCT(TC_SIGNAL, TP_30MHZ_ULTRA, 900, 1, -75, 10, -85), // 4 Test Ultra mode + TEST_CASE_STRUCT(TC_SIGNAL, TP_30MHZ_ULTRA, 30, 1, CAL_LEVEL, 10, -85), // 4 Test Ultra mode #define TEST_SILENCE 4 TEST_CASE_STRUCT(TC_BELOW, TP_SILENT, 200, 100, -70, 0, 0), // 5 Wide band noise floor low mode TEST_CASE_STRUCT(TC_BELOW, TPH_SILENT, 633, 994, -85, 0, 0), // 6 Wide band noise floor high mode @@ -5876,13 +5876,16 @@ quit: test_validate(TEST_ATTEN); // Validate test #endif reset_settings(M_LOW); - } else if (false && test == 3) { // RBW step time search +#ifdef TINYSA4 + } else if (test == 3) { // RBW step time search in_selftest = true; ui_mode_normal(); test_prepare(TEST_RBW); // reset_settings(M_LOW); setting.auto_IF = false; #ifdef TINYSA4 + int old_setting_r = setting.R; + setting.R = 1; // force to highest scan speed setting.frequency_IF=config.frequency_IF1 + STATIC_DEFAULT_SPUR_OFFSET/2; setting.step_delay = 15000; #else @@ -5893,6 +5896,9 @@ quit: if (setting.test_argument != 0) j = setting.test_argument; // do_again: +#ifdef TINYSA4 + setting.R = 1; // force to highest scan speed +#endif test_prepare(TEST_RBW); setting.spur_removal = S_OFF; #if 1 // Disable for offset baseline scanning @@ -5927,10 +5933,16 @@ quit: // shell_printf("Peak level too low, abort\n\r"); // return; // } - shell_printf("Start level = %f, ",peakLevel); -#if 0 // Enable for step delay tuning + float aver_noise = 0; + for (int i=0;i<50;i++) + aver_noise += actual_t[i]; + aver_noise /= 50; + float saved_aver_noise = aver_noise; + shell_printf("Start level, noise, delay = %f, %f, %d\n\r",peakLevel, aver_noise, setting.step_delay); + +#if 1 // Enable for step delay tuning float saved_peakLevel = peakLevel; - while (setting.step_delay > 10 && test_value != 0 && test_value > saved_peakLevel - 1.5) { + while (setting.step_delay > 10 && test_value != 0 && test_value > saved_peakLevel - 1.5 && aver_noise < saved_aver_noise + 5) { test_prepare(TEST_RBW); setting.spur_removal = S_OFF; setting.step_delay_mode = SD_NORMAL; @@ -5943,7 +5955,11 @@ quit: // setting.repeat = 10; test_acquire(TEST_RBW); // Acquire test test_validate(TEST_RBW); // Validate test - shell_printf(" Step delay %f, %d\n\r",peakLevel, setting.step_delay); + aver_noise = 0; + for (int i=0;i<50;i++) + aver_noise += actual_t[i]; + aver_noise /= 50; + shell_printf(" Level, noise, delay = %f, %f, %d\n\r",peakLevel, aver_noise, setting.step_delay); } setting.step_delay = setting.step_delay * 5 / 4; // back one level @@ -5975,15 +5991,19 @@ quit: } setting.offset_delay = setting.offset_delay * 5 / 4; // back one level } +#endif + shell_printf("End level = %f, noise = %f, step time = %d, fast delay = %d\n\r",peakLevel, aver_noise, setting.step_delay, setting.offset_delay); shell_printf("---------------------------------------------\n\r"); +#ifdef TINYSA4 + setting.R = old_setting_r; #endif - shell_printf("End level = %f, step time = %d, fast delay = %d\n\r",peakLevel, setting.step_delay, setting.offset_delay); if (setting.test_argument != 0) break; } reset_settings(M_LOW); setting.step_delay_mode = SD_NORMAL; setting.step_delay = 0; +#endif } else if (false && test == 4) { // Calibrate modulation frequencies reset_settings(M_LOW); set_mode(M_GENLOW); diff --git a/si4468.c b/si4468.c index 44e2063..4782aa0 100644 --- a/si4468.c +++ b/si4468.c @@ -1428,8 +1428,8 @@ int16_t Si446x_RSSI(void) int j = SAMPLE_COUNT; //setting.repeat; int RSSI_RAW_ARRAY[3]; do{ - if (setting.step_delay) - my_microsecond_delay(setting.step_delay); +// if (setting.step_delay) +// my_microsecond_delay(setting.step_delay); // moved to sweep RSSI_RAW_ARRAY[--j] = Si446x_readRSSI(); if (j == 0) break; // my_microsecond_delay(20);