From d1b4973cc93cf40c80dd2644499a6dbf556f91b1 Mon Sep 17 00:00:00 2001 From: Silvano Seva Date: Mon, 28 Mar 2022 15:30:46 +0200 Subject: [PATCH] Fixed reset of DC bias on stream stop in Module 17 output stream driver, made parametric the gain of the RRC at modulator side --- openrtx/include/protocols/M17/M17Modulator.h | 1 + openrtx/src/protocols/M17/M17Modulator.cpp | 2 +- platform/drivers/audio/outputStream_Mod17.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/openrtx/include/protocols/M17/M17Modulator.h b/openrtx/include/protocols/M17/M17Modulator.h index 1fa80a7e..618e00fa 100644 --- a/openrtx/include/protocols/M17/M17Modulator.h +++ b/openrtx/include/protocols/M17/M17Modulator.h @@ -111,6 +111,7 @@ private: static constexpr size_t M17_TX_SAMPLE_RATE = 48000; static constexpr size_t M17_FRAME_SAMPLES_48K = 1920; static constexpr size_t M17_FRAME_SYMBOLS = 192; + static constexpr float M17_RRC_GAIN = 7168.0f; std::array< int16_t, M17_FRAME_SYMBOLS > symbols; stream_sample_t *baseband_buffer; ///< Buffer for baseband audio handling. diff --git a/openrtx/src/protocols/M17/M17Modulator.cpp b/openrtx/src/protocols/M17/M17Modulator.cpp index e06c68b1..ef86df97 100644 --- a/openrtx/src/protocols/M17/M17Modulator.cpp +++ b/openrtx/src/protocols/M17/M17Modulator.cpp @@ -97,7 +97,7 @@ void M17Modulator::generateBaseband() for(size_t i = 0; i < M17_FRAME_SAMPLES_48K; i++) { float elem = static_cast< float >(idleBuffer[i]); - idleBuffer[i] = static_cast< int16_t >(M17::rrc(elem) * 7168.0); + idleBuffer[i] = static_cast< int16_t >(M17::rrc(elem) * M17_RRC_GAIN); } } diff --git a/platform/drivers/audio/outputStream_Mod17.cpp b/platform/drivers/audio/outputStream_Mod17.cpp index 4927c3c1..31456a1b 100644 --- a/platform/drivers/audio/outputStream_Mod17.cpp +++ b/platform/drivers/audio/outputStream_Mod17.cpp @@ -49,8 +49,8 @@ void stopTransfer() DMA1_Stream6->CR = 0; TIM7->CR1 = 0; // Shutdown timer - DAC->CR &= ~DAC_CR_EN2; // Disable only channel 2 DAC->SR = 0; // Clear status flags + DAC->CR = DAC_CR_EN1; // Keep only channel 1 active DAC->DHR12R1 = 2048; // Set channel 1 (RTX) to VDD/2 when idle // Clear flags