Updated receive switch attenuation

Removed_REF_marker
erikkaashoek 5 years ago
parent 5fc1de2a42
commit 449d128285

@ -39,7 +39,7 @@
#define STM32_NO_INIT FALSE #define STM32_NO_INIT FALSE
#define STM32_PVD_ENABLE FALSE #define STM32_PVD_ENABLE FALSE
#define STM32_PLS STM32_PLS_LEV0 #define STM32_PLS STM32_PLS_LEV0
#if 0 // 72MHz #if 0 // 72MHz
#define STM32_HSI_ENABLED FALSE #define STM32_HSI_ENABLED FALSE
#define STM32_HSE_ENABLED TRUE #define STM32_HSE_ENABLED TRUE
#define STM32_SW STM32_SW_PLL #define STM32_SW STM32_SW_PLL
@ -165,7 +165,7 @@
/* /*
* I2C driver system settings. * 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_USE_I2C2 FALSE
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_BUSY_TIMEOUT 50
#define STM32_I2C_I2C1_IRQ_PRIORITY 3 #define STM32_I2C_I2C1_IRQ_PRIORITY 3
@ -179,7 +179,7 @@
* I2S driver system settings. * I2S driver system settings.
*/ */
#define STM32_I2S_USE_SPI1 FALSE #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 | \ #define STM32_I2S_SPI1_MODE (STM32_I2S_MODE_MASTER | \
STM32_I2S_MODE_RX) STM32_I2S_MODE_RX)
#define STM32_I2S_SPI2_MODE (STM32_I2S_MODE_SLAVE | \ #define STM32_I2S_SPI2_MODE (STM32_I2S_MODE_SLAVE | \

@ -95,6 +95,7 @@
#define DEFAULT_IF 433800000 #define DEFAULT_IF 433800000
#define DEFAULT_SPUR_IF 434000000 #define DEFAULT_SPUR_IF 434000000
#define DEFAULT_MAX_FREQ 350000000 #define DEFAULT_MAX_FREQ 350000000
//#define DEFAULT_MAX_FREQ 527000000
#define HIGH_MIN_FREQ_MHZ 240 #define HIGH_MIN_FREQ_MHZ 240
#define HIGH_MAX_FREQ_MHZ 960 #define HIGH_MAX_FREQ_MHZ 960
#endif #endif

@ -88,6 +88,7 @@ const int8_t drive_dBm [16] = {-38, -32, -30, -27, -24, -19, -15, -12, -5, -2, 0
#ifdef TINYSA4 #ifdef TINYSA4
#define SWITCH_ATTENUATION ((setting.mode == M_GENHIGH && config.high_out_adf4350) ? 40 : 35.8 - config.switch_offset) #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_OFFSET -18 // Max level with all enabled
//#define POWER_RANGE 70 //#define POWER_RANGE 70
#define MAX_DRIVE ((setting.mode == M_GENHIGH && config.high_out_adf4350 ) ? 3 : 18) #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 #else
#define SWITCH_ATTENUATION (29 - config.switch_offset) #define SWITCH_ATTENUATION (29 - config.switch_offset)
#define RECEIVE_SWITCH_ATTENUATION 24
#define POWER_OFFSET 15 #define POWER_OFFSET 15
#define MAX_DRIVE (setting.mode == M_GENHIGH ? 15 : 11) #define MAX_DRIVE (setting.mode == M_GENHIGH ? 15 : 11)
#define MIN_DRIVE 8 #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 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_min;
//float level_max; //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; config.lna_level_offset = new_offset;
else else
#endif #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; dirty = true;
config_save(); config_save();
@ -4469,11 +4475,11 @@ marker_search_right_min(int from)
// -------------------- Self testing ------------------------------------------------- // -------------------- Self testing -------------------------------------------------
enum { 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 { 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 #ifdef TINYSA4
TP_30MHZ_ULTRA, TP_30MHZ_LNA, TP_30MHZ_ULTRA, TP_30MHZ_LNA,
#endif #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_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_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_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_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_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 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 #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.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_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 TEST_CASE_STRUCT(TC_SIGNAL, TP_10MHZ, 30, 7, -34, 10, -90), // 4
#define TEST_SILENCE 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, 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_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_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_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_BELOW, TP_30MHZ, 450, 80, -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_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 Measure atten step accuracy 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 TEST_CASE_STRUCT(TC_ATTEN, TP_30MHZ, 30, 0, -25, 145, -60), // 12 Measure atten step accuracy
#define TEST_END 12 #define TEST_END 12
TEST_CASE_STRUCT(TC_END, 0, 0, 0, 0, 0, 0), TEST_CASE_STRUCT(TC_END, 0, 0, 0, 0, 0, 0),
@ -4883,9 +4889,9 @@ common_silent:
stored_t[j] = test_case[i].pass; stored_t[j] = test_case[i].pass;
in_selftest = false; // Otherwise spurs will be visible in_selftest = false; // Otherwise spurs will be visible
break; break;
case TP_10MHZ_SWITCH: case TP_30MHZ_SWITCH:
set_mode(M_LOW); set_mode(M_LOW);
set_refer_output(2); set_refer_output(0);
goto common; goto common;
case TP_10MHZEXTRA: // Swept receiver case TP_10MHZEXTRA: // Swept receiver
set_mode(M_LOW); set_mode(M_LOW);
@ -4964,7 +4970,7 @@ common_silent:
setting.extra_lna = true; setting.extra_lna = true;
break; break;
#endif #endif
case TP_10MHZ_SWITCH: case TP_30MHZ_SWITCH:
set_attenuation(32); // This forces the switch to transmit so isolation can be tested set_attenuation(32); // This forces the switch to transmit so isolation can be tested
break; break;
case TPH_30MHZ_SWITCH: case TPH_30MHZ_SWITCH:

@ -567,8 +567,18 @@ static void SI4463_set_state(si446x_state_t);
#define SI4463_READ_CTS (palReadLine(LINE_RX_CTS)) #define SI4463_READ_CTS (palReadLine(LINE_RX_CTS))
#ifdef __WAIT_CTS_WHILE_SLEEPING__ #ifdef __WAIT_CTS_WHILE_SLEEPING__
extern int sleep; extern volatile int sleep;
#define SI4463_WAIT_CTS while (!SI4463_READ_CTS) if (sleep) __WFI(); #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 #else
#define SI4463_WAIT_CTS while (!SI4463_READ_CTS) ; #define SI4463_WAIT_CTS while (!SI4463_READ_CTS) ;
#endif #endif
@ -1165,7 +1175,19 @@ static char Si446x_readRSSI(void){
while (SPI_RX_IS_NOT_EMPTY(SI4432_SPI)) while (SPI_RX_IS_NOT_EMPTY(SI4432_SPI))
(void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes (void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes
#if 0
SI4463_WAIT_CTS; // Wait for CTS 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; SI_CS_LOW;
SPI_WRITE_8BIT(SI4432_SPI, SI446X_CMD_READ_CMD_BUFF); // read answer SPI_WRITE_8BIT(SI4432_SPI, SI446X_CMD_READ_CMD_BUFF); // read answer
while (SPI_IS_BUSY(SI4432_SPI)) ; // wait tx while (SPI_IS_BUSY(SI4432_SPI)) ; // wait tx

@ -1082,7 +1082,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_ultra_acb)
} }
#ifdef __WAIT_CTS_WHILE_SLEEPING__ #ifdef __WAIT_CTS_WHILE_SLEEPING__
int sleep = 0; volatile int sleep = 0;
static UI_FUNCTION_ADV_CALLBACK(menu_sleep_acb) static UI_FUNCTION_ADV_CALLBACK(menu_sleep_acb)
{ {
(void)data; (void)data;
@ -1809,6 +1809,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_shift_acb)
} }
#ifdef __REMOTE_DESKTOP__ #ifdef __REMOTE_DESKTOP__
#if 0 // Not used in UI
static UI_FUNCTION_ADV_CALLBACK(menu_send_display_acb) static UI_FUNCTION_ADV_CALLBACK(menu_send_display_acb)
{ {
(void) data; (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; redraw_request|=REDRAW_AREA|REDRAW_BATTERY|REDRAW_FREQUENCY|REDRAW_CAL_STATUS;
} }
#endif #endif
#endif
static UI_FUNCTION_ADV_CALLBACK(menu_outputmode_acb) 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&=~_MODE_CONNECTION_MASK;
config._mode|=data; config._mode|=data;
config_save();
shell_reset_console(); shell_reset_console();
} }
#endif #endif

Loading…
Cancel
Save

Powered by TurnKey Linux.