From 8bd91bbac6e7cc9f320175c077c27464931d27ac Mon Sep 17 00:00:00 2001 From: Andy CA6JAU Date: Sun, 19 Mar 2017 01:59:38 -0300 Subject: [PATCH] AFC in Dstar enabled by default. Adding support for positive initial offset for AFC --- ADF7021.cpp | 2 +- ADF7021.h | 36 ++++++++++++++++++++++++------------ Config.h | 8 ++++++-- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/ADF7021.cpp b/ADF7021.cpp index c837ba7..b35fea4 100644 --- a/ADF7021.cpp +++ b/ADF7021.cpp @@ -173,7 +173,7 @@ void CIO::ifConf() } if(m_dstarEnable) - AFC_OFFSET = AFC_OFFSET_DSTAR; + AFC_OFFSET = 0; else if(m_dmrEnable) AFC_OFFSET = AFC_OFFSET_DMR; else if(m_ysfEnable) diff --git a/ADF7021.h b/ADF7021.h index 4750ccf..2bbe64d 100644 --- a/ADF7021.h +++ b/ADF7021.h @@ -78,21 +78,25 @@ www.analog.com/media/en/technical-documentation/data-sheets/ADF7021.pdf #define ADF7021_REG6 0x05070E16 // AFC configuration (REG 10) -#if defined(ADF7021_ENABLE_AFC) #define ADF7021_REG10_DSTAR 0x0C96473A + +#if defined(ADF7021_ENABLE_4FSK_AFC) #define ADF7021_REG10_DMR 0x049E473A #define ADF7021_REG10_YSF 0x049E473A #define ADF7021_REG10_P25 0x049E473A -#define AFC_OFFSET_DSTAR 0 +#if defined(ADF7021_AFC_POS) +#define AFC_OFFSET_DMR -1000 +#define AFC_OFFSET_YSF -1000 +#define AFC_OFFSET_P25 -1000 +#else #define AFC_OFFSET_DMR 1000 #define AFC_OFFSET_YSF 1000 #define AFC_OFFSET_P25 1000 +#endif #else -#define ADF7021_REG10_DSTAR 0x0496472A #define ADF7021_REG10_DMR 0x049E472A #define ADF7021_REG10_YSF 0x049E472A #define ADF7021_REG10_P25 0x049E472A -#define AFC_OFFSET_DSTAR 0 #define AFC_OFFSET_DMR 0 #define AFC_OFFSET_YSF 0 #define AFC_OFFSET_P25 0 @@ -142,21 +146,25 @@ www.analog.com/media/en/technical-documentation/data-sheets/ADF7021.pdf #define ADF7021_REG6 0x050972C6 // AFC (REG 10) -#if defined(ADF7021_ENABLE_AFC) #define ADF7021_REG10_DSTAR 0x0C96355A + +#if defined(ADF7021_ENABLE_4FSK_AFC) #define ADF7021_REG10_DMR 0x049E355A #define ADF7021_REG10_YSF 0x049E355A #define ADF7021_REG10_P25 0x049E355A -#define AFC_OFFSET_DSTAR 0 +#if defined(ADF7021_AFC_POS) +#define AFC_OFFSET_DMR -1000 +#define AFC_OFFSET_YSF -1000 +#define AFC_OFFSET_P25 -1000 +#else #define AFC_OFFSET_DMR 1000 #define AFC_OFFSET_YSF 1000 #define AFC_OFFSET_P25 1000 +#endif #else -#define ADF7021_REG10_DSTAR 0x0496354A #define ADF7021_REG10_DMR 0x049E354A #define ADF7021_REG10_YSF 0x049E354A #define ADF7021_REG10_P25 0x049E354A -#define AFC_OFFSET_DSTAR 0 #define AFC_OFFSET_DMR 0 #define AFC_OFFSET_YSF 0 #define AFC_OFFSET_P25 0 @@ -206,21 +214,25 @@ www.analog.com/media/en/technical-documentation/data-sheets/ADF7021.pdf #define ADF7021_REG6 0x0505EBB6 // AFC (REG 10) -#if defined(ADF7021_ENABLE_AFC) #define ADF7021_REG10_DSTAR 0x0C96557A + +#if defined(ADF7021_ENABLE_4FSK_AFC) #define ADF7021_REG10_DMR 0x049E557A #define ADF7021_REG10_YSF 0x049E557A #define ADF7021_REG10_P25 0x049E557A -#define AFC_OFFSET_DSTAR 0 +#if defined(ADF7021_AFC_POS) +#define AFC_OFFSET_DMR -1000 +#define AFC_OFFSET_YSF -1000 +#define AFC_OFFSET_P25 -1000 +#else #define AFC_OFFSET_DMR 1000 #define AFC_OFFSET_YSF 1000 #define AFC_OFFSET_P25 1000 +#endif #else -#define ADF7021_REG10_DSTAR 0x0496556A #define ADF7021_REG10_DMR 0x049E556A #define ADF7021_REG10_YSF 0x049E556A #define ADF7021_REG10_P25 0x049E556A -#define AFC_OFFSET_DSTAR 0 #define AFC_OFFSET_DMR 0 #define AFC_OFFSET_YSF 0 #define AFC_OFFSET_P25 0 diff --git a/Config.h b/Config.h index 1c7fe7e..e015c00 100644 --- a/Config.h +++ b/Config.h @@ -41,8 +41,12 @@ // Original 19.68 MHz, not working, only for experimentation: // #define ADF7021_19_6800 -// Enable AFC support for ADF7021 -// #define ADF7021_ENABLE_AFC +// AFC is enabled by default in D-Star + +// Enable AFC support for DMR, YSF and P25 (experimental) +// #define ADF7021_ENABLE_4FSK_AFC +// Configure AFC with positive initial frequency offset +// #define ADF7021_AFC_POS // Host communication selection: // #define STM32_USART1_HOST