aggiunta cod
This commit is contained in:
38
codice/Core/Inc/FIRFilterCode.h
Normal file
38
codice/Core/Inc/FIRFilterCode.h
Normal file
@@ -0,0 +1,38 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#ifndef FIRFilterCodeH
|
||||
#define FIRFilterCodeH
|
||||
// #include "FFTCode.h" // For the definition of TWindowType
|
||||
#include <stdbool.h>
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
typedef enum {wtFIRSTWINDOW, wtNONE, wtKAISER, wtSINC, wtHANNING,
|
||||
wtHAMMING, wtBLACKMAN, wtFLATTOP, wtBLACKMAN_HARRIS,
|
||||
wtBLACKMAN_NUTTALL, wtNUTTALL, wtKAISER_BESSEL, wtTRAPEZOID,
|
||||
wtGAUSS, wtSINE, wtTEST } TWindowType;
|
||||
|
||||
// TWindowType WindowType;
|
||||
|
||||
// typedef enum {FORWARD, INVERSE} TTransFormType;
|
||||
|
||||
#define MAX_NUMTAPS 256
|
||||
#define M_2PI 6.28318530717958647692
|
||||
#define NUM_FREQ_ERR_PTS 1000 // these are only used in the FIRFreqError function.
|
||||
#define dNUM_FREQ_ERR_PTS 1000.0
|
||||
|
||||
typedef enum {firLPF, firHPF, firBPF, firNOTCH, firALLPASS, firNOT_FIR} TFIRPassTypes;
|
||||
|
||||
// TFIRPassTypes PassType;
|
||||
|
||||
void FilterWithFIR(double *FirCoeff, int NumTaps, double *Signal, double *FilteredSignal, int NumSigPts);
|
||||
void FilterWithFIR2(double *FirCoeff, int NumTaps, double *Signal, double *FilteredSignal, int NumSigPts);
|
||||
void RectWinFIR(double *FirCoeff, int NumTaps, TFIRPassTypes PassType, double OmegaC, double BW);
|
||||
void WindowData(double *Data, int N, TWindowType WindowType, double Alpha, double Beta, bool UnityGain);
|
||||
double Sinc(double x);
|
||||
void FIRFreqError(double *Coeff, int NumTaps, int PassType, double *OmegaC, double *BW);
|
||||
void FIRFilterWindow(double *FIRCoeff, int N, TWindowType WindowType, double Beta);
|
||||
void AdjustDelay(double *FirCoeff, int NumTaps, double Delay);
|
||||
|
||||
double Goertzel(double *Samples, int N, double Omega);
|
||||
double Bessel(double x);
|
||||
#endif
|
||||
148
codice/Core/Inc/bassofono.h
Normal file
148
codice/Core/Inc/bassofono.h
Normal file
@@ -0,0 +1,148 @@
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <arm_math.h>
|
||||
#include "main.h"
|
||||
#include "rx.h"
|
||||
#include "tx.h"
|
||||
|
||||
#define CLOCK (168000000UL)
|
||||
|
||||
// RX ADC
|
||||
#define ADC_CLOCK (700000L) // (168000000/((47,5+12,5)*4)
|
||||
#define OVERSAMPLING (2)
|
||||
#define ADC_SAMPLE_RATE (ADC_CLOCK/OVERSAMPLING)
|
||||
#define ADC_BUFFER_SIZE (1024)
|
||||
#define SAMPLES_BUFFER_RATE (ADC_SAMPLE_RATE/ADC_BUFFER_SIZE)
|
||||
|
||||
// TX DAC
|
||||
#define TX_DAC_SAMPLE_RATE (CLOCK/480)
|
||||
#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
|
||||
|
||||
// === DAC ===
|
||||
#define DAC_DIVISOR 7680
|
||||
#define DAC_SAMPLE_RATE (CLOCK/DAC_DIVISOR)
|
||||
|
||||
// === UART ===
|
||||
#define RX_CMD_RB_SIZE (32)
|
||||
#define RX_CMD_RB_SIZE_MASK (RX_CMD_RB_SIZE - 1)
|
||||
|
||||
#define UART_TX_BUFFER_SIZE (512)
|
||||
|
||||
// ====== VARS ====================
|
||||
|
||||
// state
|
||||
extern uint8_t receive, transmit;
|
||||
extern q31_t nco1_increment;
|
||||
extern uint32_t frequency;
|
||||
extern int32_t modulation;
|
||||
extern int32_t gain;
|
||||
extern int32_t volume;
|
||||
extern int32_t squelch;
|
||||
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 CORDIC_HandleTypeDef hcordic;
|
||||
|
||||
// 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;
|
||||
|
||||
// uart tx
|
||||
extern char uart_tx_buf[UART_TX_BUFFER_SIZE];
|
||||
extern uint16_t uart_tx_buf_in_idx;
|
||||
|
||||
// rx adc
|
||||
extern uint16_t adc_buffer[ADC_BUFFER_SIZE];
|
||||
|
||||
// tx dac
|
||||
extern q31_t tx_dac_buffer[2][TX_DAC_BUFFER_SIZE];
|
||||
extern volatile uint8_t half_tx_dac_buffer_empty, tx_dac_buffer_toggle;
|
||||
|
||||
extern q31_t if_I[LF_BUFFER_SIZE];
|
||||
extern q31_t if_Q[LF_BUFFER_SIZE];
|
||||
|
||||
// RX DAC
|
||||
extern uint8_t lf_buffer_toggle;
|
||||
extern q31_t prefilter_lf_buffer[LF_BUFFER_SIZE];
|
||||
extern q31_t lf_buffer[2][LF_BUFFER_SIZE];
|
||||
|
||||
// ======== FUNZIONI ========
|
||||
|
||||
int32_t set_nco1_freq(int32_t freq);
|
||||
|
||||
void set_filter(void);
|
||||
void set_frequency(void);
|
||||
void set_modulation(void);
|
||||
void set_dummy (void);
|
||||
uint8_t get_changed(uint8_t state);
|
||||
|
||||
// varie
|
||||
uint16_t ringbuf_increment(uint8_t *index, uint8_t buff_size_mask);
|
||||
q31_t sat_mult_q31(q31_t a, q31_t b);
|
||||
|
||||
// diag
|
||||
void diag(void);
|
||||
31
codice/Core/Inc/cordic-16bit.h
Normal file
31
codice/Core/Inc/cordic-16bit.h
Normal file
@@ -0,0 +1,31 @@
|
||||
//Cordic in 16 bit signed fixed point math
|
||||
//Function is valid for arguments in range -pi/2 -- pi/2
|
||||
//for values pi/2--pi: value = half_pi-(theta-half_pi) and similarly for values -pi---pi/2
|
||||
//
|
||||
// 1.0 = 16384
|
||||
// 1/k = 0.6072529350088812561694
|
||||
// pi = 3.1415926536897932384626
|
||||
//Constants
|
||||
#define cordic_1K 0x000026DD
|
||||
#define half_pi 0x00006487
|
||||
#define MUL 16384.000000
|
||||
#define CORDIC_NTAB 16
|
||||
int cordic_ctab [] = {0x00003243, 0x00001DAC, 0x00000FAD, 0x000007F5, 0x000003FE, 0x000001FF, 0x000000FF, 0x0000007F, 0x0000003F, 0x0000001F, 0x0000000F, 0x00000007, 0x00000003, 0x00000001, 0x00000000, 0x00000000, };
|
||||
|
||||
void cordic(int theta, int *s, int *c, int n)
|
||||
{
|
||||
int k, d, tx, ty, tz;
|
||||
int x=cordic_1K,y=0,z=theta;
|
||||
n = (n>CORDIC_NTAB) ? CORDIC_NTAB : n;
|
||||
for (k=0; k<n; ++k)
|
||||
{
|
||||
d = z>>15;
|
||||
//get sign. for other architectures, you might want to use the more portable version
|
||||
//d = z>=0 ? 0 : -1;
|
||||
tx = x - (((y>>k) ^ d) - d);
|
||||
ty = y + (((x>>k) ^ d) - d);
|
||||
tz = z - ((cordic_ctab[k] ^ d) - d);
|
||||
x = tx; y = ty; z = tz;
|
||||
}
|
||||
*c = x; *s = y;
|
||||
}
|
||||
111
codice/Core/Inc/interface.h
Normal file
111
codice/Core/Inc/interface.h
Normal file
@@ -0,0 +1,111 @@
|
||||
#include <stdint.h>
|
||||
|
||||
// === Tosta CMDS ===
|
||||
|
||||
#define BT1P 'A'
|
||||
#define BT1R 'a'
|
||||
#define BT2P 'B'
|
||||
#define BT2R 'b'
|
||||
#define BT3P 'C'
|
||||
#define BT3R 'c'
|
||||
#define BT4P 'D'
|
||||
#define BT4R 'd'
|
||||
|
||||
#define JSBP 'E'
|
||||
#define JSBR 'e'
|
||||
#define JSLP 'F'
|
||||
#define JSLR 'f'
|
||||
#define JSRP 'G'
|
||||
#define JSRR 'g'
|
||||
#define JSUP 'H'
|
||||
#define JSUR 'h'
|
||||
#define JSDP 'I'
|
||||
#define JSDR 'i'
|
||||
|
||||
#define ENBP 'J'
|
||||
#define ENBR 'j'
|
||||
#define ENRH '+'
|
||||
#define ENLH '-'
|
||||
|
||||
#define TYP_INT 0
|
||||
#define TYP_FLOAT 1
|
||||
#define TYP_ALPHA 2
|
||||
#define TYP_LIST 3
|
||||
|
||||
/*
|
||||
#define MOD_DC 0
|
||||
#define MOD_LSB 1
|
||||
#define MOD_USB 2
|
||||
#define MOD_AM 3
|
||||
*/
|
||||
|
||||
#define SAT 0
|
||||
#define WRAP 1
|
||||
|
||||
/*
|
||||
#define MENU_SELECT_FREQ 0
|
||||
#define MENU_SELECT_VOL 1
|
||||
#define MENU_SELECT_MODUL 2
|
||||
#define MENU_SELECT_FILTER_F 3
|
||||
#define MENU_SELECT_FILTER_BW 4
|
||||
*/
|
||||
|
||||
// #define MENU_SELECT_DEFAULT MENU_SELECT_FREQ
|
||||
// #define MENU_SELECT_EOM MENU_SELECT_FILTER_BW
|
||||
|
||||
#define MENU_NAME_ROW 0
|
||||
#define MENU_NAME_COL 1
|
||||
|
||||
#define DISPLAY_BL_DIM 0
|
||||
#define DISPLAY_ROWS 6
|
||||
#define DISPLAY_COLS 14
|
||||
|
||||
#define DISPLAY_X_SIZE 48
|
||||
#define DISPLAY_Y_SIZE 84
|
||||
#define DISPLAY_STANDBY_TIMER 30000
|
||||
|
||||
// ==== MENU =======
|
||||
|
||||
typedef void (*menu_set_function)(void);
|
||||
typedef void (*menu_print_function)(uint8_t a);
|
||||
|
||||
struct menu_item {
|
||||
char name[14];
|
||||
uint8_t type;
|
||||
uint8_t size;
|
||||
uint8_t row;
|
||||
uint8_t col;
|
||||
uint32_t step;
|
||||
uint32_t min;
|
||||
uint32_t max;
|
||||
uint8_t wrap;
|
||||
uint32_t *varptr;
|
||||
menu_set_function set_function_ptr;
|
||||
menu_print_function print_function_ptr;
|
||||
};
|
||||
|
||||
extern uint8_t menu_mode, current_tab;
|
||||
extern char modulation_list[4][4];
|
||||
|
||||
extern struct menu_item items[];
|
||||
extern struct menu_item tabs[];
|
||||
|
||||
extern uint8_t menu_item_count;
|
||||
extern uint8_t tabs_count;
|
||||
|
||||
// funcs
|
||||
|
||||
void encoder_increment(void);
|
||||
void encoder_decrement(void);
|
||||
void joystick_dx(void);
|
||||
void joystick_sx(void);
|
||||
void set_menu_mode(uint8_t mode);
|
||||
|
||||
void print_integer(uint8_t item_idx);
|
||||
void print_modulation(uint8_t item_idx);
|
||||
void print_bar(uint8_t item_idx);
|
||||
void print_frequency(uint8_t item_idx);
|
||||
|
||||
char * valToStr(uint32_t val, char *buf, uint8_t bufSize, char sepChar);
|
||||
|
||||
uint8_t sat_subu8b(uint8_t x, uint8_t y);
|
||||
79
codice/Core/Inc/main.h
Normal file
79
codice/Core/Inc/main.h
Normal file
@@ -0,0 +1,79 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : main.h
|
||||
* @brief : Header for main.c file.
|
||||
* This file contains the common defines of the application.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __MAIN_H
|
||||
#define __MAIN_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "stm32g4xx_hal.h"
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN ET */
|
||||
|
||||
/* USER CODE END ET */
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EC */
|
||||
|
||||
/* USER CODE END EC */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EM */
|
||||
|
||||
/* USER CODE END EM */
|
||||
|
||||
/* Exported functions prototypes ---------------------------------------------*/
|
||||
void Error_Handler(void);
|
||||
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
/* USER CODE END EFP */
|
||||
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define T_SWDIO_Pin GPIO_PIN_13
|
||||
#define T_SWDIO_GPIO_Port GPIOA
|
||||
#define T_SWCLK_Pin GPIO_PIN_14
|
||||
#define T_SWCLK_GPIO_Port GPIOA
|
||||
#define T_SWO_Pin GPIO_PIN_3
|
||||
#define T_SWO_GPIO_Port GPIOB
|
||||
#define OUT_Pin GPIO_PIN_5
|
||||
#define OUT_GPIO_Port GPIOB
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __MAIN_H */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
72
codice/Core/Inc/rx.h
Normal file
72
codice/Core/Inc/rx.h
Normal file
@@ -0,0 +1,72 @@
|
||||
#ifndef __RX_H
|
||||
#define __RX_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <arm_math.h>
|
||||
|
||||
#define NCO2_INCREMENT (343597383L)
|
||||
#define NCO2_FREQUENCY (DAC_SAMPLE_RATE/((0xFFFFFFFF)/NCO2_INCREMENT))
|
||||
#define LF_BUFFER_SIZE (ST2_BUFFER_SIZE/ST2_DECIMATION_FACTOR)
|
||||
|
||||
// 1° stadio
|
||||
// decimazione del singolo stadio
|
||||
#define MS_HBF_TAP_NUM (15)
|
||||
#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)
|
||||
|
||||
// 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
|
||||
|
||||
extern int32_t rx_signal;
|
||||
|
||||
// filtro st2
|
||||
extern arm_fir_decimate_instance_q31 st2_filter_I_struct;
|
||||
extern arm_fir_decimate_instance_q31 st2_filter_Q_struct;
|
||||
extern q31_t st2_filter_I_state[ST2_FILTER_BLOCK_SIZE + ST2_FILTER_TAP_NUM - 1];
|
||||
extern q31_t st2_filter_Q_state[ST2_FILTER_BLOCK_SIZE + ST2_FILTER_TAP_NUM - 1];
|
||||
extern int32_t st2_filter_taps[ST2_FILTER_TAP_NUM];
|
||||
extern int32_t st2_wide_taps[ST2_FILTER_TAP_NUM];
|
||||
|
||||
// filtro audio
|
||||
extern arm_fir_instance_q31 audio_filter_struct;
|
||||
extern q31_t audio_filter_state[AUDIO_FILTER_BLOCK_SIZE + AUDIO_FILTER_TAP_NUM - 1];
|
||||
extern int32_t audio_filter_coeffs[AUDIO_FILTER_TAP_NUM];
|
||||
|
||||
// mix
|
||||
void rx_mixer(uint16_t *in, uint16_t size, q31_t *I_out, q31_t *Q_out, int32_t nco_freq);
|
||||
|
||||
// demodulatori
|
||||
void ssb_demodulator(q31_t *in_I, q31_t *in_Q, uint16_t size, q31_t *out, q31_t nco_freq);
|
||||
void dc_demodulator(q31_t *in, uint16_t size, q31_t *out);
|
||||
void am_demodulator(q31_t *in_I, q31_t *in_Q, uint16_t size, q31_t *out);
|
||||
|
||||
// filtri
|
||||
// void filter_init(void);
|
||||
void st2_filter_init(void);
|
||||
void audio_filter_init(void);
|
||||
void audio_filter_generate_coeffs(int32_t *Coeffs, uint32_t freq, uint32_t bw, uint8_t beta);
|
||||
q31_t hb_fir15(q31_t * samples_ringbuf, uint8_t sample_index, uint8_t buff_size_mask, q31_t * coefficients);
|
||||
|
||||
void rx_measure_signal(q31_t *samples, uint16_t size);
|
||||
|
||||
#endif
|
||||
381
codice/Core/Inc/stm32g4xx_hal_conf.h
Normal file
381
codice/Core/Inc/stm32g4xx_hal_conf.h
Normal file
@@ -0,0 +1,381 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32g4xx_hal_conf.h
|
||||
* @author MCD Application Team
|
||||
* @brief HAL configuration file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef STM32G4xx_HAL_CONF_H
|
||||
#define STM32G4xx_HAL_CONF_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
|
||||
/* ########################## Module Selection ############################## */
|
||||
/**
|
||||
* @brief This is the list of modules to be used in the HAL driver
|
||||
*/
|
||||
|
||||
#define HAL_MODULE_ENABLED
|
||||
|
||||
#define HAL_ADC_MODULE_ENABLED
|
||||
/*#define HAL_COMP_MODULE_ENABLED */
|
||||
#define HAL_CORDIC_MODULE_ENABLED
|
||||
/*#define HAL_CRC_MODULE_ENABLED */
|
||||
/*#define HAL_CRYP_MODULE_ENABLED */
|
||||
#define HAL_DAC_MODULE_ENABLED
|
||||
/*#define HAL_FDCAN_MODULE_ENABLED */
|
||||
/*#define HAL_FMAC_MODULE_ENABLED */
|
||||
/*#define HAL_HRTIM_MODULE_ENABLED */
|
||||
/*#define HAL_IRDA_MODULE_ENABLED */
|
||||
/*#define HAL_IWDG_MODULE_ENABLED */
|
||||
/*#define HAL_I2C_MODULE_ENABLED */
|
||||
/*#define HAL_I2S_MODULE_ENABLED */
|
||||
/*#define HAL_LPTIM_MODULE_ENABLED */
|
||||
/*#define HAL_NAND_MODULE_ENABLED */
|
||||
/*#define HAL_NOR_MODULE_ENABLED */
|
||||
#define HAL_OPAMP_MODULE_ENABLED
|
||||
/*#define HAL_PCD_MODULE_ENABLED */
|
||||
/*#define HAL_QSPI_MODULE_ENABLED */
|
||||
/*#define HAL_RNG_MODULE_ENABLED */
|
||||
/*#define HAL_RTC_MODULE_ENABLED */
|
||||
/*#define HAL_SAI_MODULE_ENABLED */
|
||||
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
||||
/*#define HAL_SMBUS_MODULE_ENABLED */
|
||||
/*#define HAL_SPI_MODULE_ENABLED */
|
||||
/*#define HAL_SRAM_MODULE_ENABLED */
|
||||
#define HAL_TIM_MODULE_ENABLED
|
||||
#define HAL_UART_MODULE_ENABLED
|
||||
/*#define HAL_USART_MODULE_ENABLED */
|
||||
/*#define HAL_WWDG_MODULE_ENABLED */
|
||||
#define HAL_GPIO_MODULE_ENABLED
|
||||
#define HAL_EXTI_MODULE_ENABLED
|
||||
#define HAL_DMA_MODULE_ENABLED
|
||||
#define HAL_RCC_MODULE_ENABLED
|
||||
#define HAL_FLASH_MODULE_ENABLED
|
||||
#define HAL_PWR_MODULE_ENABLED
|
||||
#define HAL_CORTEX_MODULE_ENABLED
|
||||
|
||||
/* ########################## Register Callbacks selection ############################## */
|
||||
/**
|
||||
* @brief This is the list of modules where register callback can be used
|
||||
*/
|
||||
#define USE_HAL_ADC_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_COMP_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_CORDIC_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_DAC_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_EXTI_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_FDCAN_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_FMAC_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_HRTIM_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_I2C_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_I2S_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_NAND_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_NOR_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_OPAMP_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_PCD_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_RNG_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_RTC_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_SAI_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_SPI_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_TIM_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_UART_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_USART_REGISTER_CALLBACKS 0U
|
||||
#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U
|
||||
|
||||
/* ########################## Oscillator Values adaptation ####################*/
|
||||
/**
|
||||
* @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
|
||||
* This value is used by the RCC HAL module to compute the system frequency
|
||||
* (when HSE is used as system clock source, directly or through the PLL).
|
||||
*/
|
||||
#if !defined (HSE_VALUE)
|
||||
#define HSE_VALUE (24000000UL) /*!< Value of the External oscillator in Hz */
|
||||
#endif /* HSE_VALUE */
|
||||
|
||||
#if !defined (HSE_STARTUP_TIMEOUT)
|
||||
#define HSE_STARTUP_TIMEOUT (100UL) /*!< Time out for HSE start up, in ms */
|
||||
#endif /* HSE_STARTUP_TIMEOUT */
|
||||
|
||||
/**
|
||||
* @brief Internal High Speed oscillator (HSI) value.
|
||||
* This value is used by the RCC HAL module to compute the system frequency
|
||||
* (when HSI is used as system clock source, directly or through the PLL).
|
||||
*/
|
||||
#if !defined (HSI_VALUE)
|
||||
#define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/
|
||||
#endif /* HSI_VALUE */
|
||||
|
||||
/**
|
||||
* @brief Internal High Speed oscillator (HSI48) value for USB FS and RNG.
|
||||
* This internal oscillator is mainly dedicated to provide a high precision clock to
|
||||
* the USB peripheral by means of a special Clock Recovery System (CRS) circuitry.
|
||||
* When the CRS is not used, the HSI48 RC oscillator runs on it default frequency
|
||||
* which is subject to manufacturing process variations.
|
||||
*/
|
||||
#if !defined (HSI48_VALUE)
|
||||
#define HSI48_VALUE (48000000UL) /*!< Value of the Internal High Speed oscillator for USB FS/RNG in Hz.
|
||||
The real value my vary depending on manufacturing process variations.*/
|
||||
#endif /* HSI48_VALUE */
|
||||
|
||||
/**
|
||||
* @brief Internal Low Speed oscillator (LSI) value.
|
||||
*/
|
||||
#if !defined (LSI_VALUE)
|
||||
/*!< Value of the Internal Low Speed oscillator in Hz
|
||||
The real value may vary depending on the variations in voltage and temperature.*/
|
||||
#define LSI_VALUE (32000UL) /*!< LSI Typical Value in Hz*/
|
||||
#endif /* LSI_VALUE */
|
||||
/**
|
||||
* @brief External Low Speed oscillator (LSE) value.
|
||||
* This value is used by the UART, RTC HAL module to compute the system frequency
|
||||
*/
|
||||
#if !defined (LSE_VALUE)
|
||||
#define LSE_VALUE (32768UL) /*!< Value of the External Low Speed oscillator in Hz */
|
||||
#endif /* LSE_VALUE */
|
||||
|
||||
#if !defined (LSE_STARTUP_TIMEOUT)
|
||||
#define LSE_STARTUP_TIMEOUT (5000UL) /*!< Time out for LSE start up, in ms */
|
||||
#endif /* LSE_STARTUP_TIMEOUT */
|
||||
|
||||
/**
|
||||
* @brief External clock source for I2S and SAI peripherals
|
||||
* This value is used by the I2S and SAI HAL modules to compute the I2S and SAI clock source
|
||||
* frequency, this source is inserted directly through I2S_CKIN pad.
|
||||
*/
|
||||
#if !defined (EXTERNAL_CLOCK_VALUE)
|
||||
#define EXTERNAL_CLOCK_VALUE (12288000UL) /*!< Value of the External oscillator in Hz*/
|
||||
#endif /* EXTERNAL_CLOCK_VALUE */
|
||||
|
||||
/* Tip: To avoid modifying this file each time you need to use different HSE,
|
||||
=== you can define the HSE value in your toolchain compiler preprocessor. */
|
||||
|
||||
/* ########################### System Configuration ######################### */
|
||||
/**
|
||||
* @brief This is the HAL system configuration section
|
||||
*/
|
||||
|
||||
#define VDD_VALUE (3300UL) /*!< Value of VDD in mv */
|
||||
#define TICK_INT_PRIORITY (0UL) /*!< tick interrupt priority (lowest by default) */
|
||||
#define USE_RTOS 0U
|
||||
#define PREFETCH_ENABLE 0U
|
||||
#define INSTRUCTION_CACHE_ENABLE 1U
|
||||
#define DATA_CACHE_ENABLE 1U
|
||||
|
||||
/* ########################## Assert Selection ############################## */
|
||||
/**
|
||||
* @brief Uncomment the line below to expanse the "assert_param" macro in the
|
||||
* HAL drivers code
|
||||
*/
|
||||
/* #define USE_FULL_ASSERT 1U */
|
||||
|
||||
/* ################## SPI peripheral configuration ########################## */
|
||||
|
||||
/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
|
||||
* Activated: CRC code is present inside driver
|
||||
* Deactivated: CRC code cleaned from driver
|
||||
*/
|
||||
|
||||
#define USE_SPI_CRC 0U
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
/**
|
||||
* @brief Include module's header file
|
||||
*/
|
||||
|
||||
#ifdef HAL_RCC_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_rcc.h"
|
||||
#endif /* HAL_RCC_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_GPIO_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_gpio.h"
|
||||
#endif /* HAL_GPIO_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_DMA_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_dma.h"
|
||||
#endif /* HAL_DMA_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_CORTEX_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_cortex.h"
|
||||
#endif /* HAL_CORTEX_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_ADC_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_adc.h"
|
||||
#endif /* HAL_ADC_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_COMP_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_comp.h"
|
||||
#endif /* HAL_COMP_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_CORDIC_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_cordic.h"
|
||||
#endif /* HAL_CORDIC_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_CRC_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_crc.h"
|
||||
#endif /* HAL_CRC_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_CRYP_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_cryp.h"
|
||||
#endif /* HAL_CRYP_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_DAC_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_dac.h"
|
||||
#endif /* HAL_DAC_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_EXTI_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_exti.h"
|
||||
#endif /* HAL_EXTI_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_FDCAN_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_fdcan.h"
|
||||
#endif /* HAL_FDCAN_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_FLASH_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_flash.h"
|
||||
#endif /* HAL_FLASH_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_FMAC_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_fmac.h"
|
||||
#endif /* HAL_FMAC_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_HRTIM_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_hrtim.h"
|
||||
#endif /* HAL_HRTIM_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_IRDA_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_irda.h"
|
||||
#endif /* HAL_IRDA_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_IWDG_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_iwdg.h"
|
||||
#endif /* HAL_IWDG_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_I2C_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_i2c.h"
|
||||
#endif /* HAL_I2C_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_I2S_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_i2s.h"
|
||||
#endif /* HAL_I2S_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_LPTIM_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_lptim.h"
|
||||
#endif /* HAL_LPTIM_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_NAND_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_nand.h"
|
||||
#endif /* HAL_NAND_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_NOR_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_nor.h"
|
||||
#endif /* HAL_NOR_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_OPAMP_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_opamp.h"
|
||||
#endif /* HAL_OPAMP_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_PCD_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_pcd.h"
|
||||
#endif /* HAL_PCD_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_PWR_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_pwr.h"
|
||||
#endif /* HAL_PWR_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_QSPI_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_qspi.h"
|
||||
#endif /* HAL_QSPI_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_RNG_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_rng.h"
|
||||
#endif /* HAL_RNG_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_RTC_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_rtc.h"
|
||||
#endif /* HAL_RTC_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_SAI_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_sai.h"
|
||||
#endif /* HAL_SAI_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_SMARTCARD_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_smartcard.h"
|
||||
#endif /* HAL_SMARTCARD_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_SMBUS_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_smbus.h"
|
||||
#endif /* HAL_SMBUS_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_SPI_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_spi.h"
|
||||
#endif /* HAL_SPI_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_SRAM_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_sram.h"
|
||||
#endif /* HAL_SRAM_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_TIM_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_tim.h"
|
||||
#endif /* HAL_TIM_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_UART_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_uart.h"
|
||||
#endif /* HAL_UART_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_USART_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_usart.h"
|
||||
#endif /* HAL_USART_MODULE_ENABLED */
|
||||
|
||||
#ifdef HAL_WWDG_MODULE_ENABLED
|
||||
#include "stm32g4xx_hal_wwdg.h"
|
||||
#endif /* HAL_WWDG_MODULE_ENABLED */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
#ifdef USE_FULL_ASSERT
|
||||
/**
|
||||
* @brief The assert_param macro is used for function's parameters check.
|
||||
* @param expr: If expr is false, it calls assert_failed function
|
||||
* which reports the name of the source file and the source
|
||||
* line number of the call that failed.
|
||||
* If expr is true, it returns no value.
|
||||
* @retval None
|
||||
*/
|
||||
#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
void assert_failed(uint8_t *file, uint32_t line);
|
||||
#else
|
||||
#define assert_param(expr) ((void)0U)
|
||||
#endif /* USE_FULL_ASSERT */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* STM32G4xx_HAL_CONF_H */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
75
codice/Core/Inc/stm32g4xx_it.h
Normal file
75
codice/Core/Inc/stm32g4xx_it.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32g4xx_it.h
|
||||
* @brief This file contains the headers of the interrupt handlers.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __STM32G4xx_IT_H
|
||||
#define __STM32G4xx_IT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN ET */
|
||||
|
||||
/* USER CODE END ET */
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EC */
|
||||
|
||||
/* USER CODE END EC */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EM */
|
||||
|
||||
/* USER CODE END EM */
|
||||
|
||||
/* Exported functions prototypes ---------------------------------------------*/
|
||||
void NMI_Handler(void);
|
||||
void HardFault_Handler(void);
|
||||
void MemManage_Handler(void);
|
||||
void BusFault_Handler(void);
|
||||
void UsageFault_Handler(void);
|
||||
void SVC_Handler(void);
|
||||
void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void DMA1_Channel1_IRQHandler(void);
|
||||
void DMA1_Channel2_IRQHandler(void);
|
||||
void DMA1_Channel4_IRQHandler(void);
|
||||
void DMA1_Channel5_IRQHandler(void);
|
||||
void USART1_IRQHandler(void);
|
||||
void TIM7_IRQHandler(void);
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
/* USER CODE END EFP */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __STM32G4xx_IT_H */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
27
codice/Core/Inc/tx.h
Normal file
27
codice/Core/Inc/tx.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef __TX_H
|
||||
#define __TX_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <arm_math.h>
|
||||
|
||||
#define TX_AUDIO_FILTER_INTERPOLATION_FACTOR (16)
|
||||
#define TX_AUDIO_FILTER_BLOCK_SIZE (1024)
|
||||
#define TX_AUDIO_FILTER_TAP_NUM (128)
|
||||
|
||||
// buffer
|
||||
extern volatile uint8_t half_tx_dac_buffer_empty, tx_dac_buffer_toggle;
|
||||
extern volatile uint8_t tx_adc_buffer_ready;
|
||||
|
||||
// filtro audio
|
||||
extern arm_fir_instance_q31 tx_audio_filter_I_struct, tx_audio_filter_Q_struct;
|
||||
extern q31_t tx_audio_filter_I_state[TX_AUDIO_FILTER_BLOCK_SIZE + TX_AUDIO_FILTER_TAP_NUM - 1];
|
||||
extern q31_t tx_audio_filter_Q_state[TX_AUDIO_FILTER_BLOCK_SIZE + TX_AUDIO_FILTER_TAP_NUM - 1];
|
||||
extern int32_t tx_audio_filter_coeffs[TX_AUDIO_FILTER_TAP_NUM];
|
||||
|
||||
// modulatori
|
||||
|
||||
void ssb_modulator(q31_t *in_I, q31_t *in_Q, uint16_t size, q31_t *out, q31_t nco_freq);
|
||||
void dc_modulator(q31_t *in, uint16_t size, q31_t *out);
|
||||
void am_modulator(q31_t *in_I, q31_t *in_Q, uint16_t size, q31_t *out);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user