aggiunto oscillatore

This commit is contained in:
nzasch
2021-12-31 04:22:22 +01:00
parent 36ef31c453
commit 9306bc9852
16 changed files with 743 additions and 240 deletions

View File

@@ -1,10 +1,25 @@
#include <stdint.h>
#include <stdio.h>
#include <arm_math.h>
// #include <arm_math.h>
#include "main.h"
#include "rx.h"
#include "tx.h"
#define TX_TYPE_NONE 0
#define TX_TYPE_DAC 1
#define TX_TYPE_PWM 2
#define TX_TYPE_SI5351 3
// #define TX_TYPE TX_TYPE_SI5351
#define TX_TYPE TX_TYPE_NONE
#define IF_TYPE_NOIF 0
#define IF_TYPE_LOMIX 1
#define IF_TYPE IF_TYPE_NOIF
#define LO_TYPE_FIX 0
#define LO_TYPE_SI5351 1
#define LO_TYPE LO_TYPE_SI5351
#define CLOCK (168000000UL)
// RX ADC
@@ -19,67 +34,15 @@
#define TX_DAC_BUFFER_SIZE (1024)
#define TX_DAC_BUFFER_RATE (TX_DAC_SAMPLE_RATE/TX_DAC_BUFFER_SIZE)
// =========== HBF ==========
// #define MS_HBF_TAP_NUM (15)
// #define DECIMATION_FACTOR (ADC_BUFFER_SIZE/ST2_BUFFER_SIZE)
// #define DECIMATION_FACTOR_MASK (DECIMATION_FACTOR - 1)
/*
// 1° stadio
// decimazione del singolo stadio
#define MS_DECIMATION_FACTOR (2)
#define MS_DECIMATION_FACTOR_MASK (MS_DECIMATION_FACTOR - 1)
// ringbuf
#define MIXED_SAMPLES_RINGBUFFER_SIZE (64) // l'ultimo deve essere grande almeno come MS_HBF_TAP_NUM
#define MIXED_SAMPLES_RINGBUFFER_SIZE_MASK (MIXED_SAMPLES_RINGBUFFER_SIZE - 1)
#define MIXED_SAMPLES_2M_RINGBUFFER_SIZE (MIXED_SAMPLES_RINGBUFFER_SIZE / 2)
#define MIXED_SAMPLES_2M_RINGBUFFER_SIZE_MASK (MIXED_SAMPLES_2M_RINGBUFFER_SIZE - 1)
#define ST1_OUT_SAMPLE_RATE (ADC_SAMPLE_RATE/(MS_DECIMATION_FACTOR*2))
// 2° stadio
#define ST2_BUFFER_SIZE (256)
#define ST2_DECIMATION_FACTOR (4)
#define ST2_OUT_SAMPLE_RATE (ST1_OUT_SAMPLE_RATE/ST2_DECIMATION_FACTOR)
#define ST2_FILTER_BLOCK_SIZE (ST2_BUFFER_SIZE)
#define ST2_FILTER_TAP_NUM (128)
*/
/*
// =========== DEMOD ==========
// DAC_SAMPLE_RATE/((2^32)/(incremento)) = freq
// (2^32)/(DAC_SAMPLE_RATE/freq) = incremento
#define NCO2_INCREMENT (343597383L)
#define NCO2_FREQUENCY (DAC_SAMPLE_RATE/((0xFFFFFFFF)/NCO2_INCREMENT))
#define LF_BUFFER_SIZE (ST2_BUFFER_SIZE/ST2_DECIMATION_FACTOR)
// audio filter
#define AUDIO_FILTER_TAP_NUM 128
#define AUDIO_FILTER_FREQ_DEF (1350)
#define AUDIO_FILTER_FREQ_MAX (DAC_SAMPLE_RATE/2)
#define AUDIO_FILTER_BW_DEF (2000)
#define AUDIO_FILTER_BW_MAX (DAC_SAMPLE_RATE/2)
#define AUDIO_FILTER_BETA_DEF (16)
#define AUDIO_FILTER_BLOCK_SIZE LF_BUFFER_SIZE
*/
// statemask
/*
#define FREQUENCY_OFFSET 0
#define GAIN_OFFSET 1
#define VOLUME_OFFSET 2
#define FILTER_OFFSET 3
#define MODULATION_OFFSET 4
*/
#define MOD_DC 0
#define MOD_LSB 1
#define MOD_USB 2
#define MOD_AM 3
#define STATUS_RX 0
#define STATUS_TX 1
#define STATUS_SQ 2
// === DAC ===
#define DAC_DIVISOR 7680
#define DAC_SAMPLE_RATE (CLOCK/DAC_DIVISOR)
@@ -96,6 +59,8 @@
extern uint8_t receive, transmit;
extern q31_t nco1_increment;
extern uint32_t frequency;
extern int32_t rit;
extern uint16_t pwm_tx_period;
extern int32_t modulation;
extern int32_t gain;
extern int32_t peak, oldpeak, peakset;
@@ -105,9 +70,11 @@ extern int32_t mic_gain;
extern int32_t scan;
extern uint32_t audio_filter_freq, audio_filter_bw, audio_filter_beta;
extern uint16_t state_changed;
extern char tabstring[15];
extern CORDIC_HandleTypeDef hcordic;
extern uint8_t s_meter;
// uartz
extern char uart_rx_buf[2], rx_cmd_rb[RX_CMD_RB_SIZE];
extern uint8_t rx_cmd_rb_in_idx, rx_cmd_rb_out_idx;
@@ -130,6 +97,7 @@ extern q31_t if_Q[LF_BUFFER_SIZE];
extern uint8_t lf_buffer_toggle;
extern q31_t prefilter_lf_buffer[LF_BUFFER_SIZE];
extern q31_t lf_buffer[2][LF_BUFFER_SIZE];
// extern q31_t lf_buffer_test[2][LF_BUFFER_SIZE];
// ======== FUNZIONI ========
@@ -147,3 +115,8 @@ q31_t sat_mult_q31(q31_t a, q31_t b);
// diag
void diag(void);
uint32_t get_pwm_freq(uint16_t pwm_period);
uint16_t get_pwm_period(uint32_t pwm_frequency);
uint8_t measure_log_abs_mean(q31_t *samples, uint16_t size);