mirror of
https://github.com/eried/portapack-mayhem.git
synced 2025-08-06 05:34:50 -04:00
Improve_RF_sensitivity_NOAA_signal (#2654)
This commit is contained in:
parent
db187301ab
commit
322b06d670
5 changed files with 90 additions and 44 deletions
|
@ -143,7 +143,7 @@ class WFMAMAptOptionsView : public View {
|
||||||
};
|
};
|
||||||
OptionsField options_config{
|
OptionsField options_config{
|
||||||
{3 * 8, 0 * 16},
|
{3 * 8, 0 * 16},
|
||||||
15, // Max option char length "FM+AM(NOAA Apt)"
|
16, // Max option char length "80khz (NOAA Apt)" example.
|
||||||
{
|
{
|
||||||
// Using common messages from freqman_ui.cpp
|
// Using common messages from freqman_ui.cpp
|
||||||
}};
|
}};
|
||||||
|
|
|
@ -108,7 +108,8 @@ options_t freqman_bandwidths[6] = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// WFMAM for NOAA satellites, 137 Mhz band
|
// WFMAM for NOAA satellites, 137 Mhz band
|
||||||
{"FM+AM(NOAA Apt)", 1}, // Fixed RX demod- WFM config Index 1 : FM+AM for Audio NOAA APT ones.
|
{"80kHz (NOAA Apt)", 0}, // Fixed RX demod- WFM config Index 1 : FM+AM for Audio NOAA APT ones.
|
||||||
|
{"38kHz (NOAA Apt)", 1},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -69,8 +69,9 @@ static constexpr std::array<baseband::WFMConfig, 3> wfm_configs{{
|
||||||
{taps_40k_wfm_decim_0, taps_40k_wfm_decim_1},
|
{taps_40k_wfm_decim_0, taps_40k_wfm_decim_1},
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static constexpr std::array<baseband::WFMAMConfig, 1> wfmam_configs{{
|
static constexpr std::array<baseband::WFMAMConfig, 2> wfmam_configs{{
|
||||||
{taps_16k0_decim_0, taps_84k_wfmam_decim_1},
|
{taps_16k0_decim_0, taps_80k_wfmam_decim_1},
|
||||||
|
{taps_16k0_decim_0, taps_38k_wfmam_decim_1},
|
||||||
}};
|
}};
|
||||||
|
|
||||||
} /* namespace */
|
} /* namespace */
|
||||||
|
|
|
@ -146,16 +146,16 @@ void NoaaAptRx::configure(const NoaaAptRxConfigureMessage& message) {
|
||||||
// Temptatively , I splitted, in two WidebandFMAudio::configure_wfm / WidebandFMAudio::configure_wfmam and dynamically /2, /8 . (here /8)
|
// Temptatively , I splitted, in two WidebandFMAudio::configure_wfm / WidebandFMAudio::configure_wfmam and dynamically /2, /8 . (here /8)
|
||||||
// decim_1.set<dsp::decimate::FIRC16xR16x16Decim2>().configure(message.decim_1_filter.taps); // for wfm
|
// decim_1.set<dsp::decimate::FIRC16xR16x16Decim2>().configure(message.decim_1_filter.taps); // for wfm
|
||||||
// decim_1.set<dsp::decimate::FIRC16xR16x32Decim8>().configure(message.decim_1_filter.taps); // for wfmam
|
// decim_1.set<dsp::decimate::FIRC16xR16x32Decim8>().configure(message.decim_1_filter.taps); // for wfmam
|
||||||
decim_1.configure(taps_84k_wfmam_decim_1.taps); // for wfmam
|
decim_1.configure(taps_38k_wfmam_decim_1.taps); // for wfmam
|
||||||
size_t decim_1_output_fs = decim_1_input_fs / decim_1.decimation_factor; // wfmam, decim_1.decimation_factor() = /8 ,if applied after the line, decim_1.set<dsp::decimate::FIRC16xR16x16Decim2>().configure(message.decim_1_filter.taps);
|
size_t decim_1_output_fs = decim_1_input_fs / decim_1.decimation_factor; // wfmam, decim_1.decimation_factor() = /8 ,if applied after the line, decim_1.set<dsp::decimate::FIRC16xR16x16Decim2>().configure(message.decim_1_filter.taps);
|
||||||
size_t demod_input_fs = decim_1_output_fs;
|
size_t demod_input_fs = decim_1_output_fs;
|
||||||
|
|
||||||
// spectrum_interval_samples = decim_1_output_fs / spectrum_rate_hz;
|
// spectrum_interval_samples = decim_1_output_fs / spectrum_rate_hz;
|
||||||
// spectrum_samples = 0;
|
// spectrum_samples = 0;
|
||||||
|
|
||||||
channel_filter_low_f = taps_84k_wfmam_decim_1.low_frequency_normalized * decim_1_input_fs;
|
channel_filter_low_f = taps_38k_wfmam_decim_1.low_frequency_normalized * decim_1_input_fs;
|
||||||
channel_filter_high_f = taps_84k_wfmam_decim_1.high_frequency_normalized * decim_1_input_fs;
|
channel_filter_high_f = taps_38k_wfmam_decim_1.high_frequency_normalized * decim_1_input_fs;
|
||||||
channel_filter_transition = taps_84k_wfmam_decim_1.transition_normalized * decim_1_input_fs;
|
channel_filter_transition = taps_38k_wfmam_decim_1.transition_normalized * decim_1_input_fs;
|
||||||
demod.configure(demod_input_fs, 17000);
|
demod.configure(demod_input_fs, 17000);
|
||||||
audio_filter.configure(taps_64_lp_1875_2166.taps);
|
audio_filter.configure(taps_64_lp_1875_2166.taps);
|
||||||
audio_output.configure(apt_audio_12k_notch_2k4_config, apt_audio_12k_lpf_2000hz_config);
|
audio_output.configure(apt_audio_12k_notch_2k4_config, apt_audio_12k_lpf_2000hz_config);
|
||||||
|
|
|
@ -1327,44 +1327,88 @@ constexpr fir_taps_real<16> taps_40k_wfm_decim_1 = {
|
||||||
|
|
||||||
// WFMAM decimation filters ////////////////////////////////////////////////
|
// WFMAM decimation filters ////////////////////////////////////////////////
|
||||||
// Used for NOAA 137 Mhz APT sat demod.
|
// Used for NOAA 137 Mhz APT sat demod.
|
||||||
// IFIR prototype filter: fs=768000, pass=42000, stop=95000, decim=8, fout=96000
|
// IFIR prototype filter: fs=768000, pass=40000, stop=95000, decim=8, fout=96000
|
||||||
constexpr fir_taps_real<32> taps_84k_wfmam_decim_1 = {
|
constexpr fir_taps_real<32> taps_80k_wfmam_decim_1 = {
|
||||||
.low_frequency_normalized = -42000.0f / 768000.0f,
|
.low_frequency_normalized = -40000.0f / 768000.0f,
|
||||||
.high_frequency_normalized = 42000.0f / 768000.0f,
|
.high_frequency_normalized = 40000.0f / 768000.0f,
|
||||||
.transition_normalized = 53000.0f / 768000.0f,
|
.transition_normalized = 53000.0f / 768000.0f,
|
||||||
.taps = {{
|
.taps = {{
|
||||||
13,
|
5,
|
||||||
-6,
|
-37,
|
||||||
-47,
|
-120,
|
||||||
-116,
|
-248,
|
||||||
-207,
|
-397,
|
||||||
-294,
|
-519,
|
||||||
-332,
|
-535,
|
||||||
-266,
|
-354,
|
||||||
-39,
|
106,
|
||||||
386,
|
896,
|
||||||
1012,
|
2006,
|
||||||
1795,
|
3355,
|
||||||
2648,
|
4797,
|
||||||
3452,
|
6136,
|
||||||
4079,
|
7171,
|
||||||
4423,
|
7736,
|
||||||
4423,
|
7736,
|
||||||
4079,
|
7171,
|
||||||
3452,
|
6136,
|
||||||
2648,
|
4797,
|
||||||
1795,
|
3355,
|
||||||
1012,
|
2006,
|
||||||
386,
|
896,
|
||||||
-39,
|
106,
|
||||||
-266,
|
-354,
|
||||||
-332,
|
-535,
|
||||||
-294,
|
-519,
|
||||||
-207,
|
-397,
|
||||||
-116,
|
-248,
|
||||||
-47,
|
-120,
|
||||||
-6,
|
-37,
|
||||||
13,
|
5,
|
||||||
|
|
||||||
|
}},
|
||||||
|
};
|
||||||
|
|
||||||
|
// WFMAM decimation filters ////////////////////////////////////////////////
|
||||||
|
// Used for NOAA 137 Mhz APT sat demod.
|
||||||
|
// IFIR prototype filter: fs=768000, pass=19000, stop=68000, decim=8, fout=96000
|
||||||
|
constexpr fir_taps_real<32> taps_38k_wfmam_decim_1 = {
|
||||||
|
.low_frequency_normalized = -19000.0f / 768000.0f,
|
||||||
|
.high_frequency_normalized = 19000.0f / 768000.0f,
|
||||||
|
.transition_normalized = 49000.0f / 768000.0f,
|
||||||
|
.taps = {{
|
||||||
|
49,
|
||||||
|
91,
|
||||||
|
175,
|
||||||
|
303,
|
||||||
|
483,
|
||||||
|
724,
|
||||||
|
1028,
|
||||||
|
1391,
|
||||||
|
1805,
|
||||||
|
2253,
|
||||||
|
2712,
|
||||||
|
3158,
|
||||||
|
3560,
|
||||||
|
3891,
|
||||||
|
4127,
|
||||||
|
4250,
|
||||||
|
4250,
|
||||||
|
4127,
|
||||||
|
3891,
|
||||||
|
3560,
|
||||||
|
3158,
|
||||||
|
2712,
|
||||||
|
2253,
|
||||||
|
1805,
|
||||||
|
1391,
|
||||||
|
1028,
|
||||||
|
724,
|
||||||
|
483,
|
||||||
|
303,
|
||||||
|
175,
|
||||||
|
91,
|
||||||
|
49,
|
||||||
}},
|
}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue