From 3b6d29f33ad40731743f772905a4162f6adee6d2 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Mon, 27 Sep 2021 11:22:55 +0200 Subject: [PATCH] New switches configuration --- NANOVNA_STM32_F303/board.h | 10 ++++++++++ halconf.h | 2 +- nanovna.h | 1 + sa_core.c | 12 +++++++----- si4432.c | 3 ++- si4432.h | 1 + si4468.c | 31 +++++++++++++++++++++++++------ ui_sa.c | 3 +++ 8 files changed, 50 insertions(+), 13 deletions(-) diff --git a/NANOVNA_STM32_F303/board.h b/NANOVNA_STM32_F303/board.h index 0a772be..b8d7390 100644 --- a/NANOVNA_STM32_F303/board.h +++ b/NANOVNA_STM32_F303/board.h @@ -89,8 +89,13 @@ #define GPIOB_SPI_MOSI 5 #define GPIO_LO_SEL 6 #define LINE_LO_SEL PAL_LINE(GPIOB, GPIO_LO_SEL) +#ifdef __NEW_SWITCHES__ +#define GPIO_SD_CD 12 +#define LINE_SD_CD PAL_LINE(GPIOB, GPIO_SD_CD) +#else #define GPIO_SD_CD 7 #define LINE_SD_CD PAL_LINE(GPIOB, GPIO_SD_CD) +#endif #define GPIO_RX_SEL 8 #define LINE_RX_SEL PAL_LINE(GPIOB, GPIO_RX_SEL) #define GPIO_RX_CTS 9 @@ -99,8 +104,13 @@ #define GPIO_LCD_CD_PORT GPIOB #define GPIO_LCD_CS 11 #define GPIO_LCD_CS_PORT GPIOB +#ifdef __NEW_SWITCHES__ +#define GPIO_RX_SDN 7 +#define LINE_RX_SDN PAL_LINE(GPIOB, GPIO_RX_SDN) +#else #define GPIO_RX_SDN 12 #define LINE_RX_SDN PAL_LINE(GPIOB, GPIO_RX_SDN) +#endif #define GPIO_PB13 13 #define LINE_PB13 PAL_LINE(GPIOB, GPIO_PB13) #define GPIO_PB14 14 diff --git a/halconf.h b/halconf.h index 6f358e2..9d34c41 100644 --- a/halconf.h +++ b/halconf.h @@ -61,7 +61,7 @@ #if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) #define HAL_USE_DAC FALSE #endif - +#define STM32_DMA_REQUIRED /** * @brief Enables the EXT subsystem. */ diff --git a/nanovna.h b/nanovna.h index d538a11..d9f05d6 100644 --- a/nanovna.h +++ b/nanovna.h @@ -49,6 +49,7 @@ #define __SI4463__ #define __SI4468__ #define __ADF4351__ +#define __NEW_SWITCHES__ #endif #define __PE4302__ //#define __SIMULATION__ diff --git a/sa_core.c b/sa_core.c index 1b5e32e..2738694 100644 --- a/sa_core.c +++ b/sa_core.c @@ -709,7 +709,7 @@ void set_modulation_frequency(int f) void set_repeat(int r) { - if (r > 0 && r <= 100) { + if (r > 0 && r <= 500) { setting.repeat = r; // dirty = true; // No HW update required, only status panel refresh } @@ -1786,7 +1786,7 @@ done: float peakLevel; float min_level; freq_t peakFreq; -int peakIndex; +int peakIndex = 0; float temppeakLevel; uint16_t temppeakIndex; // volatile int t; @@ -1824,7 +1824,9 @@ void setup_sa(void) #endif enable_rx_output(false); enable_high(false); - +#ifdef __NEW_SWITCHES__ + enable_direct(false); +#endif fill_spur_table(); #endif #if 0 // Measure fast scan time @@ -3891,8 +3893,8 @@ static uint8_t sweep_counter = 0; // Only used for HW refresh static bool sweep(bool break_on_operation) { float RSSI; - float local_peakLevel; - int local_peakIndex; + float local_peakLevel = -150.0; + int local_peakIndex = 0; #ifdef __SI4432__ freq_t agc_peak_freq = 0; float agc_peak_rssi = -150; diff --git a/si4432.c b/si4432.c index 40a91ba..be9cbe7 100644 --- a/si4432.c +++ b/si4432.c @@ -825,8 +825,9 @@ pureRSSI_t SI4432_RSSI(uint32_t i, int s) my_microsecond_delay(100); }while(1); - if (setting.repeat > 1) + if (setting.repeat > 1){ RSSI_RAW = RSSI_RAW / setting.repeat; + } // if (MODE_INPUT(setting.mode) && RSSI_RAW == 0) // SI4432_Init(); #ifdef __SIMULATION__ diff --git a/si4432.h b/si4432.h index 3d3e26c..1c5aaeb 100644 --- a/si4432.h +++ b/si4432.h @@ -203,6 +203,7 @@ void enable_extra_lna(int s); void enable_ultra(int s); void enable_rx_output(int s); void enable_high(int s); +void enable_direct(int s); #endif diff --git a/si4468.c b/si4468.c index c610e01..9221cc7 100644 --- a/si4468.c +++ b/si4468.c @@ -149,6 +149,7 @@ void stop_PE4312_SPI_mode(void){ SI4432_SPI->CR1 = old_spi_settings; } +#if 0 static void software_shiftOut(uint8_t val) { SI4432_log(SI4432_Sel); @@ -164,7 +165,7 @@ static void software_shiftOut(uint8_t val) val<<=1; }while((++i) & 0x07); } - +#endif static void shiftOut(uint8_t val) { @@ -819,11 +820,12 @@ static void SI4463_set_state(si446x_state_t newState) SI4463_do_api(data, sizeof(data), NULL, 0); } -static uint8_t gpio_state[4] = { +static uint8_t gpio_state[5] = { SI446X_GPIO_MODE_DIV_CLK, SI446X_GPIO_MODE_CTS, SI446X_GPIO_MODE_DONOTHING, - SI446X_GPIO_MODE_DONOTHING + SI446X_GPIO_MODE_DONOTHING, + SI446X_GPIO_MODE_DRIVE1 }; void SI4463_refresh_gpio(void) @@ -832,9 +834,9 @@ void SI4463_refresh_gpio(void) SI446X_CMD_GPIO_PIN_CFG, gpio_state[0], // GPIO[0] gpio_state[1], // GPIO[1] - gpio_state[2], // GPIO[2] - gpio_state[3], // GPIO[3] - 0, // NIRQ + gpio_state[2], // GPIO[2] // High + gpio_state[3], // GPIO[3] // TX/RX + gpio_state[4], // NIRQ // Direct 0, // SDO 0 // GEN_CONFIG }; @@ -1853,11 +1855,28 @@ void enable_rx_output(int s) void enable_high(int s) { +#ifdef __NEW_SWITCHES__ + if (s) + SI4463_set_gpio(2,SI446X_GPIO_MODE_DRIVE0); + else + SI4463_set_gpio(2,SI446X_GPIO_MODE_DRIVE1); +#else if (s) SI4463_set_gpio(2,SI446X_GPIO_MODE_DRIVE1); else SI4463_set_gpio(2,SI446X_GPIO_MODE_DRIVE0); +#endif +} + +#ifdef __NEW_SWITCHES__ +void enable_direct(int s) +{ + if (s) + SI4463_set_gpio(4,SI446X_GPIO_MODE_DRIVE0); + else + SI4463_set_gpio(4,SI446X_GPIO_MODE_DRIVE1); } +#endif #pragma GCC pop_options diff --git a/ui_sa.c b/ui_sa.c index 246d649..a9ca825 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -1111,6 +1111,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_harmonic_spur_acb) #endif #endif +#if 0 #ifdef __ULTRA__ static UI_FUNCTION_ADV_CALLBACK(menu_debug_spur_acb) { @@ -1125,6 +1126,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_debug_spur_acb) ui_mode_normal(); } #endif +#endif #ifdef TINYSA4 static UI_FUNCTION_ADV_CALLBACK(menu_extra_lna_acb) @@ -1804,6 +1806,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_marker_modify_acb) break; case M_DELTA: uistat.text[0] = markers[active_marker].ref+'1'; + /* fall through */ case M_NOISE: case M_TRACKING: case M_AVER: