This commit is contained in:
nzasch
2022-01-03 17:52:27 +01:00
parent 9a2f5c0069
commit b9a7a1e15b
9 changed files with 168 additions and 50 deletions

View File

@@ -18,8 +18,8 @@ q31_t st2_filter_Q_state[ST2_FILTER_BLOCK_SIZE + ST2_FILTER_TAP_NUM - 1];
// filtro audio
arm_fir_instance_q31 audio_filter_struct;
q31_t audio_filter_state[AUDIO_FILTER_BLOCK_SIZE + AUDIO_FILTER_TAP_NUM - 1];
int32_t audio_filter_coeffs[AUDIO_FILTER_TAP_NUM];
q31_t audio_filter_state[RX_AUDIO_FILTER_BLOCK_SIZE + RX_AUDIO_FILTER_TAP_NUM - 1];
int32_t audio_filter_coeffs[RX_AUDIO_FILTER_TAP_NUM];
int32_t ms_hbf_filter_taps[MS_HBF_TAP_NUM] = {
-181552, 0, 3414100, 0,
@@ -100,7 +100,7 @@ int32_t st2_wide_taps[ST2_FILTER_TAP_NUM] = {
1221284, 778895, 335568, -97978,
};
int32_t audio_filter_coeffs[AUDIO_FILTER_TAP_NUM];
int32_t audio_filter_coeffs[RX_AUDIO_FILTER_TAP_NUM];
// mix
@@ -244,19 +244,19 @@ void st2_filter_init(void){
}
void audio_filter_init(void){
arm_fir_init_q31 (&audio_filter_struct, AUDIO_FILTER_TAP_NUM, audio_filter_coeffs, &audio_filter_state[0], AUDIO_FILTER_BLOCK_SIZE);
arm_fir_init_q31 (&audio_filter_struct, RX_AUDIO_FILTER_TAP_NUM, audio_filter_coeffs, &audio_filter_state[0], RX_AUDIO_FILTER_BLOCK_SIZE);
}
void audio_filter_generate_coeffs(int32_t *Coeffs, uint32_t freq, uint32_t bw, uint8_t beta){
double FPCoeff[AUDIO_FILTER_TAP_NUM + 1];
double FPCoeff[RX_AUDIO_FILTER_TAP_NUM + 1];
double normalized_center_freq, normalized_bw, fp_beta;
normalized_center_freq = (double)(freq*2)/RX_DAC_SAMPLE_RATE;
normalized_bw = (double)(bw*2)/RX_DAC_SAMPLE_RATE;
fp_beta = beta/4;
RectWinFIR(FPCoeff, AUDIO_FILTER_TAP_NUM, firBPF, normalized_center_freq, normalized_bw);
FIRFilterWindow(FPCoeff, AUDIO_FILTER_TAP_NUM, wtKAISER, fp_beta);
RectWinFIR(FPCoeff, RX_AUDIO_FILTER_TAP_NUM, firBPF, normalized_center_freq, normalized_bw);
FIRFilterWindow(FPCoeff, RX_AUDIO_FILTER_TAP_NUM, wtKAISER, fp_beta);
for( int index = 0; index < AUDIO_FILTER_TAP_NUM; index++){
for( int index = 0; index < RX_AUDIO_FILTER_TAP_NUM; index++){
Coeffs[index] = (int32_t) ( (double)(FPCoeff[index])*(double)0x7FFFFFFF );
}
}