Skip to content

Commit 7d16b95

Browse files
authored
Merge branch 'greatscottgadgets:main' into next
2 parents 48a0e72 + 849ce28 commit 7d16b95

22 files changed

Lines changed: 1373 additions & 1065 deletions

firmware/common/fpga_selftest.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ bool fpga_if_xcvr_selftest(void)
190190
max2831_set_frequency(&max283x, 2500000000);
191191

192192
// Capture 1: 4 Msps, tone at 0.5 MHz, narrowband filter OFF
193-
sample_rate_frac_set(4000000 * 2, 1);
193+
sample_rate_frac_set(4000000, 1);
194194
delay_us_at_mhz(1000, 204);
195195
if (rx_samples(num_samples, 2000000) == -1) {
196196
timeout = true;
@@ -213,7 +213,7 @@ bool fpga_if_xcvr_selftest(void)
213213

214214
// Capture 3: 20 Msps, tone at 5 MHz, narrowband filter OFF
215215
fpga_set_tx_nco_pstep(&fpga, 255);
216-
sample_rate_frac_set(20000000 * 2, 1);
216+
sample_rate_frac_set(20000000, 1);
217217
narrowband_filter_set(0);
218218
delay_us_at_mhz(1000, 204);
219219
if (rx_samples(num_samples, 2000000) == -1) {

firmware/common/hackrf_core.c

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2022 Great Scott Gadgets <info@greatscottgadgets.com>
2+
* Copyright 2012-2026 Great Scott Gadgets <info@greatscottgadgets.com>
33
* Copyright 2012 Jared Boone <jared@sharebrained.com>
44
* Copyright 2013 Benjamin Vernoux <titanmkd@gmail.com>
55
*
@@ -351,40 +351,7 @@ fpga_driver_t fpga = {
351351
};
352352
#endif
353353

354-
radio_t radio = {
355-
.channel[RADIO_CHANNEL0] =
356-
{
357-
.id = RADIO_CHANNEL0,
358-
.config =
359-
{
360-
.sample_rate[RADIO_SAMPLE_RATE_CLOCKGEN] =
361-
{.hz = 0},
362-
.filter[RADIO_FILTER_BASEBAND] = {.hz = 0},
363-
.frequency[RADIO_FREQUENCY_RF] =
364-
{
365-
.hz = 0,
366-
.if_hz = 0,
367-
.lo_hz = 0,
368-
.path = 0,
369-
},
370-
.gain[RADIO_GAIN_RF_AMP] = {.enable = 0},
371-
.gain[RADIO_GAIN_RX_LNA] = {.db = 0},
372-
.gain[RADIO_GAIN_RX_VGA] = {.db = 0},
373-
.gain[RADIO_GAIN_TX_VGA] = {.db = 0},
374-
.antenna[RADIO_ANTENNA_BIAS_TEE] =
375-
{.enable = false},
376-
.mode = TRANSCEIVER_MODE_OFF,
377-
.clock[RADIO_CLOCK_CLKIN] = {.enable = false},
378-
.clock[RADIO_CLOCK_CLKOUT] = {.enable = false},
379-
.trigger_enable = false,
380-
#ifdef PRALINE
381-
.resampling_n = 0,
382-
.shift = FPGA_QUARTER_SHIFT_MODE_NONE,
383-
#endif
384-
},
385-
.clock_source = CLOCK_SOURCE_HACKRF,
386-
},
387-
};
354+
radio_t radio;
388355

389356
rf_path_t rf_path = {
390357
.switchctrl = 0,
@@ -486,7 +453,17 @@ bool sample_rate_frac_set(uint32_t rate_num, uint32_t rate_denom)
486453
uint32_t a, b, c;
487454
uint32_t rem;
488455

489-
hackrf_ui()->set_sample_rate(rate_num / 2);
456+
/* Round to the nearest Hz for display. */
457+
uint32_t rate_hz = (rate_num + (rate_denom >> 1)) / rate_denom;
458+
hackrf_ui()->set_sample_rate(rate_hz);
459+
460+
/*
461+
* First double the sample rate so that we can produce a clock at twice
462+
* the intended sample rate. The 2x clock is sometimes used directly,
463+
* and it is divided by two in an output divider to produce the actual
464+
* AFE clock.
465+
*/
466+
rate_num *= 2;
490467

491468
/* Find best config */
492469
a = (VCO_FREQ * rate_denom) / rate_num;
@@ -999,7 +976,6 @@ clock_source_t activate_best_clock_source(void)
999976
&clock_gen,
1000977
(source == CLOCK_SOURCE_HACKRF) ? PLL_SOURCE_XTAL : PLL_SOURCE_CLKIN);
1001978
hackrf_ui()->set_clock_source(source);
1002-
radio.channel[RADIO_CHANNEL0].clock_source = source;
1003979

1004980
return source;
1005981
}

firmware/common/mixer.c

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -115,36 +115,6 @@ uint64_t mixer_set_frequency(mixer_driver_t* const mixer, uint64_t hz)
115115
#endif
116116
}
117117

118-
void mixer_tx(mixer_driver_t* const mixer)
119-
{
120-
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)
121-
rffc5071_tx(mixer);
122-
#endif
123-
#ifdef RAD1O
124-
(void) mixer;
125-
#endif
126-
}
127-
128-
void mixer_rx(mixer_driver_t* const mixer)
129-
{
130-
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)
131-
rffc5071_rx(mixer);
132-
#endif
133-
#ifdef RAD1O
134-
(void) mixer;
135-
#endif
136-
}
137-
138-
void mixer_rxtx(mixer_driver_t* const mixer)
139-
{
140-
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)
141-
rffc5071_rxtx(mixer);
142-
#endif
143-
#ifdef RAD1O
144-
(void) mixer;
145-
#endif
146-
}
147-
148118
void mixer_enable(mixer_driver_t* const mixer)
149119
{
150120
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)

firmware/common/mixer.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@ extern void mixer_setup(mixer_driver_t* const mixer);
4040
/* Set frequency (Hz). */
4141
extern uint64_t mixer_set_frequency(mixer_driver_t* const mixer, uint64_t hz);
4242

43-
/* Set up rx only, tx only, or full duplex. Chip should be disabled
44-
* before _tx, _rx, or _rxtx are called. */
45-
extern void mixer_tx(mixer_driver_t* const mixer);
46-
extern void mixer_rx(mixer_driver_t* const mixer);
47-
extern void mixer_rxtx(mixer_driver_t* const mixer);
4843
extern void mixer_enable(mixer_driver_t* const mixer);
4944
extern void mixer_disable(mixer_driver_t* const mixer);
5045
extern void mixer_set_gpo(mixer_driver_t* const drv, uint8_t gpo);

0 commit comments

Comments
 (0)