Reduced SPI speed and hop command added

multi_trace
erikkaashoek 5 years ago
parent 8cd573f94a
commit de39eac5a8

@ -293,9 +293,9 @@
#define VAL_GPIOB_OSPEEDR (PIN_PUPDR_FLOATING(GPIOB_XN) | \ #define VAL_GPIOB_OSPEEDR (PIN_PUPDR_FLOATING(GPIOB_XN) | \
PIN_PUPDR_FLOATING(GPIOB_YN) | \ PIN_PUPDR_FLOATING(GPIOB_YN) | \
PIN_OSPEED_100M(GPIO_LCD_RESET) | \ PIN_OSPEED_100M(GPIO_LCD_RESET) | \
PIN_OSPEED_100M(GPIOB_SPI_SCLK) | \ PIN_OSPEED_2M(GPIOB_SPI_SCLK) | \
PIN_OSPEED_100M(GPIOB_SPI_MISO) | \ PIN_OSPEED_2M(GPIOB_SPI_MISO) | \
PIN_OSPEED_100M(GPIOB_SPI_MOSI) | \ PIN_OSPEED_2M(GPIOB_SPI_MOSI) | \
PIN_OSPEED_100M(6) | \ PIN_OSPEED_100M(6) | \
PIN_OSPEED_100M(GPIO_SD_CD) | \ PIN_OSPEED_100M(GPIO_SD_CD) | \
PIN_OSPEED_100M(8) | \ PIN_OSPEED_100M(8) | \

@ -961,7 +961,7 @@ void set_sweep_points(uint16_t points){
VNA_SHELL_FUNCTION(cmd_scan) VNA_SHELL_FUNCTION(cmd_scan)
{ {
freq_t start, stop; freq_t start, stop;
uint32_t points = sweep_points; uint32_t old_points = sweep_points;
uint32_t i; uint32_t i;
if (argc < 2 || argc > 4) { if (argc < 2 || argc > 4) {
shell_printf("usage: scan {start(Hz)} {stop(Hz)} [points] [outmask]\r\n"); shell_printf("usage: scan {start(Hz)} {stop(Hz)} [points] [outmask]\r\n");
@ -975,20 +975,21 @@ VNA_SHELL_FUNCTION(cmd_scan)
return; return;
} }
if (argc >= 3) { if (argc >= 3) {
points = my_atoi(argv[2]); int points = my_atoi(argv[2]);
if (points <= 0 || points > sweep_points) { if (points <= 0 || points > POINTS_COUNT) {
shell_printf("sweep points exceeds range "define_to_STR(POINTS_COUNT)"\r\n"); shell_printf("sweep points exceeds range "define_to_STR(POINTS_COUNT)"\r\n");
return; return;
} }
sweep_points = points;
} }
set_frequencies(start, stop, points); set_frequencies(start, stop, sweep_points);
pause_sweep(); pause_sweep();
sweep(false); sweep(false);
// Output data after if set (faster data recive) // Output data after if set (faster data recive)
if (argc == 4) { if (argc == 4) {
uint16_t mask = my_atoui(argv[3]); uint16_t mask = my_atoui(argv[3]);
if (mask) { if (mask) {
for (i = 0; i < points; i++) { for (i = 0; i < sweep_points; i++) {
if (mask & 1) shell_printf("%U ", frequencies[i]); if (mask & 1) shell_printf("%U ", frequencies[i]);
if (mask & 2) shell_printf("%f %f ", value(measured[TRACE_ACTUAL][i]), 0.0); if (mask & 2) shell_printf("%f %f ", value(measured[TRACE_ACTUAL][i]), 0.0);
if (mask & 4) shell_printf("%f %f ", value(measured[TRACE_STORED][i]), 0.0); if (mask & 4) shell_printf("%f %f ", value(measured[TRACE_STORED][i]), 0.0);
@ -997,7 +998,59 @@ VNA_SHELL_FUNCTION(cmd_scan)
} }
} }
} }
sweep_points = old_points;
}
#ifdef TINYSA4
VNA_SHELL_FUNCTION(cmd_hop)
{
freq_t start, stop, step;
uint32_t old_points = sweep_points;
uint32_t i;
if (argc < 2 || argc > 4) {
shell_printf("usage: hop {start(Hz)} {stop(Hz)} {step(Hz) | points} [outmask]\r\n");
return;
}
start = my_atoui(argv[0]);
stop = my_atoui(argv[1]);
if (start > stop) {
shell_printf("frequency range is invalid\r\n");
return;
}
if (argc >= 3) {
step = my_atoui(argv[2]);
if (step > POINTS_COUNT) {
int i = 0;
for (freq_t f = start; f<= stop; f += step)
frequencies[i++] = f;
dirty = true;
sweep_points = 1 + (stop-start)/step;
} else {
sweep_points = step;
set_frequencies(start, stop, sweep_points);
}
}
pause_sweep();
setting.frequency_step = 0;
sweep(false);
// Output data after if set (faster data recive)
uint16_t mask = 3;
if (argc == 4) {
mask = my_atoui(argv[3]);
}
if (mask) {
for (i = 0; i < sweep_points; i++) {
if (mask & 1) shell_printf("%Q ", frequencies[i]);
if (mask & 2) shell_printf("%f ", value(measured[TRACE_ACTUAL][i]));
if (mask & 4) shell_printf("%f ", value(measured[TRACE_STORED][i]));
if (mask & 8) shell_printf("%f ", value(measured[TRACE_TEMP][i]));
shell_printf("\r\n");
}
}
sweep_points = old_points;
} }
#endif
static void static void
update_marker_index(void) update_marker_index(void)
@ -1668,6 +1721,9 @@ static const VNAShellCommand commands[] =
{"frequencies" , cmd_frequencies , 0}, {"frequencies" , cmd_frequencies , 0},
// {"gamma" , cmd_gamma , 0}, // {"gamma" , cmd_gamma , 0},
{"scan" , cmd_scan , CMD_WAIT_MUTEX}, {"scan" , cmd_scan , CMD_WAIT_MUTEX},
#ifdef TINYSA4
{"hop" , cmd_hop , CMD_WAIT_MUTEX},
#endif
{"scanraw" , cmd_scanraw , CMD_WAIT_MUTEX}, {"scanraw" , cmd_scanraw , CMD_WAIT_MUTEX},
{"zero" , cmd_zero , CMD_WAIT_MUTEX | CMD_RUN_IN_LOAD}, // Will set the scanraw measured value offset (128 or 174) {"zero" , cmd_zero , CMD_WAIT_MUTEX | CMD_RUN_IN_LOAD}, // Will set the scanraw measured value offset (128 or 174)
{"sweep" , cmd_sweep , 0}, {"sweep" , cmd_sweep , 0},

@ -3177,7 +3177,7 @@ again: // Spur redu
if (debug_avoid_second) { if (debug_avoid_second) {
if (S_IS_AUTO(setting.below_IF) && lf < local_IF/2 - 2000000) { if (S_IS_AUTO(setting.below_IF) && lf < local_IF/2 - 2000000) {
setting.below_IF = S_AUTO_ON; setting.below_IF = S_AUTO_ON;
local_IF = local_IF; // No spure removal and no spur, center in IF local_IF = local_IF; // No spur removal and no spur, center in IF
} else if (setting.auto_IF) { } else if (setting.auto_IF) {
local_IF = local_IF + DEFAULT_SPUR_OFFSET/2; local_IF = local_IF + DEFAULT_SPUR_OFFSET/2;
// if (actual_rbw_x10 == 6000 ) // if (actual_rbw_x10 == 6000 )
@ -3195,7 +3195,7 @@ again: // Spur redu
} else { } else {
if (S_IS_AUTO(setting.below_IF) && lf < local_IF/2 - 2000000) { if (S_IS_AUTO(setting.below_IF) && lf < local_IF/2 - 2000000) {
setting.below_IF = S_AUTO_ON; setting.below_IF = S_AUTO_ON;
local_IF = local_IF; // No spure removal and no spur, center in IF local_IF = local_IF; // No spur removal and no spur, center in IF
} else if (setting.auto_IF) { } else if (setting.auto_IF) {
local_IF = local_IF + DEFAULT_SPUR_OFFSET/2; local_IF = local_IF + DEFAULT_SPUR_OFFSET/2;
// if (actual_rbw_x10 == 6000 ) // if (actual_rbw_x10 == 6000 )
@ -5872,12 +5872,15 @@ abort:
// reset_settings(M_LOW); // reset_settings(M_LOW);
set_refer_output(-1); set_refer_output(-1);
if (setting.test_argument > 0) if (setting.test_argument > 0)
set_R(setting.test_argument); set_R(((int)setting.test_argument) % 10);
set_attenuation(0); int freq_step = 30;
if (setting.test_argument > 9)
freq_step = (((int)setting.test_argument)/10) * 1000000 ;
set_attenuation(0);
int test_case = TEST_POWER; int test_case = TEST_POWER;
for (int i=1; i<30; i++) { for (freq_t f=freq_step; f<900000000; f += freq_step) {
set_sweep_points(51); set_sweep_points(51);
set_sweep_frequency(ST_CENTER, 30000000 * i); set_sweep_frequency(ST_CENTER, f);
set_sweep_frequency(ST_SPAN, 3000); set_sweep_frequency(ST_SPAN, 3000);
test_acquire(test_case); // Acquire test test_acquire(test_case); // Acquire test
test_validate(test_case); test_validate(test_case);

@ -61,10 +61,12 @@
// Check device SPI clock speed // Check device SPI clock speed
#if STM32_PCLK2 > 48000000 // 48 or 72M MCU #if STM32_PCLK2 > 48000000 // 48 or 72M MCU
// On 72M MCU STM32_PCLK2 = 72M, SPI = 72M/4 = 18M // On 72M MCU STM32_PCLK2 = 72M, SPI = 72M/4 = 18M
#define SI4432_SPI_SPEED SPI_BR_DIV4 //#define SI4432_SPI_SPEED SPI_BR_DIV4
#define SI4432_SPI_SPEED SPI_BR_DIV8
#else #else
// On 48M MCU STM32_PCLK2 = 48M, SPI = 48M/2 = 24M // On 48M MCU STM32_PCLK2 = 48M, SPI = 48M/2 = 24M
#define SI4432_SPI_SPEED SPI_BR_DIV2 //#define SI4432_SPI_SPEED SPI_BR_DIV2
#define SI4432_SPI_SPEED SPI_BR_DIV4
#endif #endif

Loading…
Cancel
Save

Powered by TurnKey Linux.