Merge pull request #123 from juribeparada/boxcar_dstar_correlator_48k

More changes for 48 kHz
This commit is contained in:
Jonathan Naylor 2017-10-16 09:23:47 +01:00 committed by GitHub
commit a7aade4d81
8 changed files with 23 additions and 22 deletions

View File

@ -22,12 +22,12 @@
#include "CWIdTX.h" #include "CWIdTX.h"
q15_t TONE[] = { q15_t TONE[] = {
0, 518, 1000, 1414, 1732, 1932, 2000, 1932, 1732, 1414, 1000, 518, 0, -518, -1000, -1414, -1732, -1932, -2000, -1932, -1732, -1414, -1000, -518}; 0, 261, 518, 765, 1000, 1218, 1414, 1587, 1732, 1848, 1932, 1983, 2000, 1983, 1932, 1848, 1732, 1587, 1414, 1218, 1000, 765, 518, 261, 0, -261, -518, -765, -1000, -1218, -1414,
-1587, -1732, -1848, -1932, -1983, -2000, -1983, -1932, -1848, -1732, -1587, -1414, -1218, -1000, -765, -518, -261};
q15_t SILENCE[] = { q15_t SILENCE[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
const uint8_t CYCLE_LENGTH = 24U; const uint8_t CYCLE_LENGTH = 48U;
const uint8_t DOT_LENGTH = 50U; const uint8_t DOT_LENGTH = 50U;

View File

@ -22,7 +22,7 @@
#include "Config.h" #include "Config.h"
#include "DMRDefines.h" #include "DMRDefines.h"
const uint16_t DMO_BUFFER_LENGTH_SAMPLES = 1440U; // 60ms at 24 kHz const uint16_t DMO_BUFFER_LENGTH_SAMPLES = 2880U; // 60ms at 48 kHz
enum DMORX_STATE { enum DMORX_STATE {
DMORXS_NONE, DMORXS_NONE,

View File

@ -22,8 +22,8 @@
#include "DMRSlotType.h" #include "DMRSlotType.h"
#include "Utils.h" #include "Utils.h"
const uint16_t SCAN_START = 400U; const uint16_t SCAN_START = 790U;
const uint16_t SCAN_END = 490U; const uint16_t SCAN_END = 920U;
const q15_t SCALING_FACTOR = 19505; // Q15(0.60) const q15_t SCALING_FACTOR = 19505; // Q15(0.60)
@ -97,7 +97,7 @@ bool CDMRSlotRX::processSample(q15_t sample, uint16_t rssi)
return m_state != DMRRXS_NONE; return m_state != DMRRXS_NONE;
// Ensure that the buffer doesn't overflow // Ensure that the buffer doesn't overflow
if (m_dataPtr > m_endPtr || m_dataPtr >= 900U) if (m_dataPtr > m_endPtr || m_dataPtr >= 1900U)
return m_state != DMRRXS_NONE; return m_state != DMRRXS_NONE;
m_buffer[m_dataPtr] = sample; m_buffer[m_dataPtr] = sample;

View File

@ -44,7 +44,7 @@ public:
private: private:
bool m_slot; bool m_slot;
uint32_t m_bitBuffer[DMR_RADIO_SYMBOL_LENGTH]; uint32_t m_bitBuffer[DMR_RADIO_SYMBOL_LENGTH];
q15_t m_buffer[900U]; q15_t m_buffer[1900U];
uint16_t m_bitPtr; uint16_t m_bitPtr;
uint16_t m_dataPtr; uint16_t m_dataPtr;
uint16_t m_syncPtr; uint16_t m_syncPtr;
@ -62,7 +62,7 @@ private:
DMRRX_STATE m_state; DMRRX_STATE m_state;
uint8_t m_n; uint8_t m_n;
uint8_t m_type; uint8_t m_type;
uint16_t m_rssi[900U]; uint16_t m_rssi[1900U];
void correlateSync(bool first); void correlateSync(bool first);
void samplesToBits(uint16_t start, uint8_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold); void samplesToBits(uint16_t start, uint8_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold);

View File

@ -381,10 +381,10 @@ void CDStarRX::processHeader(q15_t sample)
m_frameCount = 0U; m_frameCount = 0U;
m_dataPtr = 0U; m_dataPtr = 0U;
m_startPtr = 476U; m_startPtr = 952U;
m_syncPtr = 471U; m_syncPtr = 942U;
m_maxSyncPtr = 472U; m_maxSyncPtr = 944U;
m_minSyncPtr = 470U; m_minSyncPtr = 940U;
DEBUG5("DStarRX: calc start/sync/max/min", m_startPtr, m_syncPtr, m_maxSyncPtr, m_minSyncPtr); DEBUG5("DStarRX: calc start/sync/max/min", m_startPtr, m_syncPtr, m_maxSyncPtr, m_minSyncPtr);

6
IO.cpp
View File

@ -167,7 +167,7 @@ void CIO::process()
m_ledCount++; m_ledCount++;
if (m_started) { if (m_started) {
// Two seconds timeout // Two seconds timeout
if (m_watchdog >= 48000U) { if (m_watchdog >= 96000U) {
if (m_modemState == STATE_DSTAR || m_modemState == STATE_DMR || m_modemState == STATE_YSF) { if (m_modemState == STATE_DSTAR || m_modemState == STATE_DMR || m_modemState == STATE_YSF) {
if (m_modemState == STATE_DMR && m_tx) if (m_modemState == STATE_DMR && m_tx)
dmrTX.setStart(false); dmrTX.setStart(false);
@ -178,13 +178,13 @@ void CIO::process()
m_watchdog = 0U; m_watchdog = 0U;
} }
if (m_ledCount >= 24000U) { if (m_ledCount >= 48000U) {
m_ledCount = 0U; m_ledCount = 0U;
m_ledValue = !m_ledValue; m_ledValue = !m_ledValue;
setLEDInt(m_ledValue); setLEDInt(m_ledValue);
} }
} else { } else {
if (m_ledCount >= 240000U) { if (m_ledCount >= 480000U) {
m_ledCount = 0U; m_ledCount = 0U;
m_ledValue = !m_ledValue; m_ledValue = !m_ledValue;
setLEDInt(m_ledValue); setLEDInt(m_ledValue);

View File

@ -642,12 +642,13 @@ void CIO::startInt()
// TIM2 output frequency // TIM2 output frequency
#if defined(EXTERNAL_OSC) && !defined(STM32F4_PI) #if defined(EXTERNAL_OSC) && !defined(STM32F4_PI)
timerInitStructure.TIM_Prescaler = (uint16_t) ((EXTERNAL_OSC/(2*SAMP_FREQ)) - 1); timerInitStructure.TIM_Prescaler = (uint16_t) ((EXTERNAL_OSC/(2*SAMP_FREQ)) - 1);
timerInitStructure.TIM_Period = 1;
#else #else
timerInitStructure.TIM_Prescaler = (uint16_t) ((SystemCoreClock/(4*SAMP_FREQ)) - 1); timerInitStructure.TIM_Prescaler = (uint16_t) ((SystemCoreClock/(6*SAMP_FREQ)) - 1);
timerInitStructure.TIM_Period = 2;
#endif #endif
timerInitStructure.TIM_CounterMode = TIM_CounterMode_Up; timerInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
timerInitStructure.TIM_Period = 1;
timerInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; timerInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
timerInitStructure.TIM_RepetitionCounter = 0; timerInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &timerInitStructure); TIM_TimeBaseInit(TIM2, &timerInitStructure);

View File

@ -73,9 +73,9 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U;
#if defined(EXTERNAL_OSC) #if defined(EXTERNAL_OSC)
#define DESCRIPTION "MMDVM 20170501 TCXO (D-Star/DMR/System Fusion/P25/RSSI/CW Id)" #define DESCRIPTION "MMDVM 20170501 TCXO 48kHz (D-Star/DMR/YSF/P25/RSSI/CW Id)"
#else #else
#define DESCRIPTION "MMDVM 20170501 (D-Star/DMR/System Fusion/P25/RSSI/CW Id)" #define DESCRIPTION "MMDVM 20170501 48kHz (D-Star/DMR/YSF/P25/RSSI/CW Id)"
#endif #endif
#if defined(GITVERSION) #if defined(GITVERSION)
@ -668,7 +668,7 @@ void CSerialPort::process()
} }
} }
if (io.getWatchdog() >= 48000U) { if (io.getWatchdog() >= 96000U) {
m_ptr = 0U; m_ptr = 0U;
m_len = 0U; m_len = 0U;
} }