Reduce jitter and use HPF to improve SNR
This commit is contained in:
parent
38b7ec34f6
commit
574c474c6e
40
src/main.c
40
src/main.c
|
@ -48,7 +48,7 @@ static uint32_t lo_cos[LO_WORDS] __attribute__((__aligned__(1 << LO_BITS_DEPTH))
|
|||
#define RX_BITS_DEPTH 13
|
||||
#define RX_WORDS (1 << (RX_BITS_DEPTH - 2))
|
||||
|
||||
static_assert(RX_STRIDE * 4 < RX_WORDS, "RX_STRIDE * 4 < RX_WORDS");
|
||||
static_assert(RX_STRIDE * 4 <= RX_WORDS, "RX_STRIDE * 4 <= RX_WORDS");
|
||||
|
||||
static uint32_t rx_cos[RX_WORDS] __attribute__((__aligned__(1 << RX_BITS_DEPTH)));
|
||||
|
||||
|
@ -142,7 +142,7 @@ static void init_fb()
|
|||
const uint16_t insn[] = {
|
||||
pio_encode_mov_not(pio_pins, pio_pins) | pio_encode_sideset(1, 1) |
|
||||
pio_encode_delay(0),
|
||||
pio_encode_nop() | pio_encode_sideset(1, 0),
|
||||
pio_encode_nop() | pio_encode_sideset(1, 0) | pio_encode_delay(0),
|
||||
};
|
||||
|
||||
pio_program_t prog = {
|
||||
|
@ -217,11 +217,11 @@ static void init_ad()
|
|||
* Should wrap here.
|
||||
* Jump to this portion must be inserted from the outside.
|
||||
*/
|
||||
pio_encode_in(pio_y, 32),
|
||||
pio_encode_in(pio_x, 32),
|
||||
pio_encode_in(pio_y, 32),
|
||||
pio_encode_set(pio_x, 0),
|
||||
pio_encode_set(pio_y, 0),
|
||||
pio_encode_jmp(1),
|
||||
pio_encode_out(pio_pc, 2),
|
||||
};
|
||||
|
||||
pio_program_t prog = {
|
||||
|
@ -421,6 +421,7 @@ static void rf_rx_stop(void)
|
|||
static void rf_rx(void)
|
||||
{
|
||||
const uint32_t base = (uint32_t)rx_cos;
|
||||
int prev = 0;
|
||||
int pos = 0;
|
||||
|
||||
while (true) {
|
||||
|
@ -463,20 +464,31 @@ static void rf_rx(void)
|
|||
|
||||
for (int i = 0; i < IQ_SAMPLES; i++) {
|
||||
int sI = 0, sQ = 0;
|
||||
int pos, neg;
|
||||
|
||||
/* Convert to I/Q signal. */
|
||||
// +I
|
||||
pos = *cos_ptr++;
|
||||
neg = *cos_ptr++;
|
||||
sI += pos - neg - prev;
|
||||
prev = pos - neg;
|
||||
|
||||
sI += *cos_ptr++;
|
||||
sI -= *cos_ptr++;
|
||||
// +Q
|
||||
pos = *cos_ptr++;
|
||||
neg = *cos_ptr++;
|
||||
sQ += pos - neg - prev;
|
||||
prev = pos - neg;
|
||||
|
||||
sQ += *cos_ptr++;
|
||||
sQ -= *cos_ptr++;
|
||||
// -I
|
||||
pos = *cos_ptr++;
|
||||
neg = *cos_ptr++;
|
||||
sI -= pos - neg - prev;
|
||||
prev = pos - neg;
|
||||
|
||||
sI -= *cos_ptr++;
|
||||
sI += *cos_ptr++;
|
||||
|
||||
sQ -= *cos_ptr++;
|
||||
sQ += *cos_ptr++;
|
||||
// -Q
|
||||
pos = *cos_ptr++;
|
||||
neg = *cos_ptr++;
|
||||
sQ -= pos - neg - prev;
|
||||
prev = pos - neg;
|
||||
|
||||
int64_t I = sI;
|
||||
int64_t Q = sQ;
|
||||
|
|
Loading…
Reference in a new issue