diff --git a/NANOVNA_STM32_F303/mcuconf.h b/NANOVNA_STM32_F303/mcuconf.h index 92cc42b..c0d4001 100644 --- a/NANOVNA_STM32_F303/mcuconf.h +++ b/NANOVNA_STM32_F303/mcuconf.h @@ -39,7 +39,7 @@ #define STM32_NO_INIT FALSE #define STM32_PVD_ENABLE FALSE #define STM32_PLS STM32_PLS_LEV0 -#if 0 // 72MHz +#if 0 // 72MHz #define STM32_HSI_ENABLED FALSE #define STM32_HSE_ENABLED TRUE #define STM32_SW STM32_SW_PLL @@ -165,7 +165,7 @@ /* * I2C driver system settings. */ -#define STM32_I2C_USE_I2C1 TRUE +#define STM32_I2C_USE_I2C1 FALSE #define STM32_I2C_USE_I2C2 FALSE #define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_I2C1_IRQ_PRIORITY 3 @@ -179,7 +179,7 @@ * I2S driver system settings. */ #define STM32_I2S_USE_SPI1 FALSE -#define STM32_I2S_USE_SPI2 TRUE +#define STM32_I2S_USE_SPI2 FALSE #define STM32_I2S_SPI1_MODE (STM32_I2S_MODE_MASTER | \ STM32_I2S_MODE_RX) #define STM32_I2S_SPI2_MODE (STM32_I2S_MODE_SLAVE | \ diff --git a/nanovna.h b/nanovna.h index b8e651e..f92dcd0 100644 --- a/nanovna.h +++ b/nanovna.h @@ -95,6 +95,7 @@ #define DEFAULT_IF 433800000 #define DEFAULT_SPUR_IF 434000000 #define DEFAULT_MAX_FREQ 350000000 +//#define DEFAULT_MAX_FREQ 527000000 #define HIGH_MIN_FREQ_MHZ 240 #define HIGH_MAX_FREQ_MHZ 960 #endif diff --git a/sa_core.c b/sa_core.c index b831d79..60788d5 100644 --- a/sa_core.c +++ b/sa_core.c @@ -88,6 +88,7 @@ const int8_t drive_dBm [16] = {-38, -32, -30, -27, -24, -19, -15, -12, -5, -2, 0 #ifdef TINYSA4 #define SWITCH_ATTENUATION ((setting.mode == M_GENHIGH && config.high_out_adf4350) ? 40 : 35.8 - config.switch_offset) +#define RECEIVE_SWITCH_ATTENUATION 21 //#define POWER_OFFSET -18 // Max level with all enabled //#define POWER_RANGE 70 #define MAX_DRIVE ((setting.mode == M_GENHIGH && config.high_out_adf4350 ) ? 3 : 18) @@ -104,6 +105,7 @@ const int8_t drive_dBm [16] = {-38, -32, -30, -27, -24, -19, -15, -12, -5, -2, 0 #else #define SWITCH_ATTENUATION (29 - config.switch_offset) +#define RECEIVE_SWITCH_ATTENUATION 24 #define POWER_OFFSET 15 #define MAX_DRIVE (setting.mode == M_GENHIGH ? 15 : 11) #define MIN_DRIVE 8 @@ -115,7 +117,6 @@ const int8_t drive_dBm [16] = {-38, -32, -30, -27, -24, -19, -15, -12, -5, -2, 0 #define BELOW_MAX_DRIVE(X) (drive_dBm[X] - drive_dBm[MAX_DRIVE]) -#define RECEIVE_SWITCH_ATTENUATION 21 // TODO differentiate for tinySA3 and tinySA4 //float level_min; //float level_max; @@ -938,7 +939,12 @@ void set_actual_power(float o) // Set peak level to known value config.lna_level_offset = new_offset; else #endif - config.low_level_offset = new_offset; + { + // if (get_attennuation() > 32) + // config.receive_switch_offset = new_offset; + // else + config.low_level_offset = new_offset; + } } dirty = true; config_save(); @@ -4469,11 +4475,11 @@ marker_search_right_min(int from) // -------------------- Self testing ------------------------------------------------- enum { - TC_SIGNAL, TC_BELOW, TC_ABOVE, TC_FLAT, TC_MEASURE, TC_SET, TC_END, TC_ATTEN, TC_DISPLAY, TC_LEVEL, + TC_SIGNAL, TC_BELOW, TC_ABOVE, TC_FLAT, TC_MEASURE, TC_SET, TC_END, TC_ATTEN, TC_DISPLAY, TC_LEVEL, TC_SWITCH }; enum { - TP_SILENT, TPH_SILENT, TP_10MHZ, TP_10MHZEXTRA, TP_10MHZ_SWITCH, TP_30MHZ, TPH_30MHZ, TPH_30MHZ_SWITCH, + TP_SILENT, TPH_SILENT, TP_10MHZ, TP_10MHZEXTRA, TP_30MHZ_SWITCH, TP_30MHZ, TPH_30MHZ, TPH_30MHZ_SWITCH, #ifdef TINYSA4 TP_30MHZ_ULTRA, TP_30MHZ_LNA, #endif @@ -4517,7 +4523,7 @@ const test_case_t test_case [] = TEST_CASE_STRUCT(TC_SIGNAL, TP_10MHZEXTRA, 30, 14, -23, 27, -70), // 7 BPF loss and stop band TEST_CASE_STRUCT(TC_FLAT, TP_10MHZEXTRA, 30, 14, -18, 9, -60), // 8 BPF pass band flatness TEST_CASE_STRUCT(TC_BELOW, TP_30MHZ, 900, 1, -90, 0, -90), // 9 LPF cutoff - TEST_CASE_STRUCT(TC_SIGNAL, TP_10MHZ_SWITCH,20, 7, -29, 10, -50), // 10 Switch isolation using high attenuation + TEST_CASE_STRUCT(TC_SIGNAL, TP_30MHZ_SWITCH,30, 7, -23, 10, -50), // 10 Switch isolation using high attenuation TEST_CASE_STRUCT(TC_DISPLAY, TP_30MHZ, 30, 0, -25, 145, -60), // 11 test display TEST_CASE_STRUCT(TC_ATTEN, TP_30MHZ, 30, 0, CAL_LEVEL, 145, -60), // 12 Measure atten step accuracy TEST_CASE_STRUCT(TC_SIGNAL, TP_30MHZ_LNA, 30, 5, -23, 10, -75), // 13 Measure LNA @@ -4544,19 +4550,19 @@ const test_case_t test_case [] = }; #else -{// Condition Preparation Center Span Pass Width(%)Stop +{// Condition Preparation Center Span Pass Width(%)Stop TEST_CASE_STRUCT(TC_BELOW, TP_SILENT, 0.005, 0.01, 0, 0, 0), // 1 Zero Hz leakage TEST_CASE_STRUCT(TC_BELOW, TP_SILENT, 0.015, 0.01, -30, 0, 0), // 2 Phase noise of zero Hz - TEST_CASE_STRUCT(TC_SIGNAL, TP_10MHZ, 20, 7, -39, 10, -90), // 3 + TEST_CASE_STRUCT(TC_SIGNAL, TP_30MHZ, 30, 7, -25, 10, -90), // 3 TEST_CASE_STRUCT(TC_SIGNAL, TP_10MHZ, 30, 7, -34, 10, -90), // 4 #define TEST_SILENCE 4 TEST_CASE_STRUCT(TC_BELOW, TP_SILENT, 200, 100, -75, 0, 0), // 5 Wide band noise floor low mode TEST_CASE_STRUCT(TC_BELOW, TPH_SILENT, 600, 720, -75, 0, 0), // 6 Wide band noise floor high mode TEST_CASE_STRUCT(TC_SIGNAL, TP_10MHZEXTRA, 10, 7, -20, 27, -80), // 7 BPF loss and stop band TEST_CASE_STRUCT(TC_FLAT, TP_10MHZEXTRA, 10, 4, -18, 9, -60), // 8 BPF pass band flatness - TEST_CASE_STRUCT(TC_BELOW, TP_30MHZ, 400, 60, -75, 0, -75), // 9 LPF cutoff - TEST_CASE_STRUCT(TC_SIGNAL, TP_10MHZ_SWITCH,20, 7, -39, 10, -60), // 10 Switch isolation using high attenuation - TEST_CASE_STRUCT(TC_DISPLAY, TP_30MHZ, 30, 0, -25, 145, -60), // 11 Measure atten step accuracy + TEST_CASE_STRUCT(TC_BELOW, TP_30MHZ, 450, 80, -75, 0, -75), // 9 LPF cutoff + TEST_CASE_STRUCT(TC_SIGNAL, TP_30MHZ_SWITCH, 30, 7, -25, 10, -60), // 10 Switch isolation using high attenuation + TEST_CASE_STRUCT(TC_DISPLAY, TP_30MHZ, 30, 0, -25, 145, -60), // 11 Test display TEST_CASE_STRUCT(TC_ATTEN, TP_30MHZ, 30, 0, -25, 145, -60), // 12 Measure atten step accuracy #define TEST_END 12 TEST_CASE_STRUCT(TC_END, 0, 0, 0, 0, 0, 0), @@ -4883,9 +4889,9 @@ common_silent: stored_t[j] = test_case[i].pass; in_selftest = false; // Otherwise spurs will be visible break; - case TP_10MHZ_SWITCH: + case TP_30MHZ_SWITCH: set_mode(M_LOW); - set_refer_output(2); + set_refer_output(0); goto common; case TP_10MHZEXTRA: // Swept receiver set_mode(M_LOW); @@ -4964,7 +4970,7 @@ common_silent: setting.extra_lna = true; break; #endif - case TP_10MHZ_SWITCH: + case TP_30MHZ_SWITCH: set_attenuation(32); // This forces the switch to transmit so isolation can be tested break; case TPH_30MHZ_SWITCH: diff --git a/si4468.c b/si4468.c index 857a9a8..9664523 100644 --- a/si4468.c +++ b/si4468.c @@ -567,8 +567,18 @@ static void SI4463_set_state(si446x_state_t); #define SI4463_READ_CTS (palReadLine(LINE_RX_CTS)) #ifdef __WAIT_CTS_WHILE_SLEEPING__ -extern int sleep; -#define SI4463_WAIT_CTS while (!SI4463_READ_CTS) if (sleep) __WFI(); +extern volatile int sleep; +#if 0 +#define SI4463_WAIT_CTS while (!SI4463_READ_CTS) {\ + if (sleep) {\ + CS_PE_HIGH;\ + __WFI();\ + CS_PE_LOW;\ + } \ + }; +#else +#define SI4463_WAIT_CTS while (!SI4463_READ_CTS) ; +#endif #else #define SI4463_WAIT_CTS while (!SI4463_READ_CTS) ; #endif @@ -1165,7 +1175,19 @@ static char Si446x_readRSSI(void){ while (SPI_RX_IS_NOT_EMPTY(SI4432_SPI)) (void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes +#if 0 SI4463_WAIT_CTS; // Wait for CTS +#else + while (!SI4463_READ_CTS) { + if (sleep) { + __disable_irq(); +// CS_PE_HIGH; + __WFI(); +// CS_PE_LOW; + __enable_irq(); + } + } + #endif SI_CS_LOW; SPI_WRITE_8BIT(SI4432_SPI, SI446X_CMD_READ_CMD_BUFF); // read answer while (SPI_IS_BUSY(SI4432_SPI)) ; // wait tx diff --git a/ui_sa.c b/ui_sa.c index e769427..a99958b 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -1082,7 +1082,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_ultra_acb) } #ifdef __WAIT_CTS_WHILE_SLEEPING__ -int sleep = 0; +volatile int sleep = 0; static UI_FUNCTION_ADV_CALLBACK(menu_sleep_acb) { (void)data; @@ -1809,6 +1809,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_shift_acb) } #ifdef __REMOTE_DESKTOP__ +#if 0 // Not used in UI static UI_FUNCTION_ADV_CALLBACK(menu_send_display_acb) { (void) data; @@ -1823,6 +1824,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_send_display_acb) redraw_request|=REDRAW_AREA|REDRAW_BATTERY|REDRAW_FREQUENCY|REDRAW_CAL_STATUS; } #endif +#endif static UI_FUNCTION_ADV_CALLBACK(menu_outputmode_acb) { @@ -1886,6 +1888,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_connection_acb) } config._mode&=~_MODE_CONNECTION_MASK; config._mode|=data; + config_save(); shell_reset_console(); } #endif