From 91650b5379a7f67c7df1c35ab3541aa63b5069cd Mon Sep 17 00:00:00 2001 From: Nunu Date: Fri, 5 Jan 2024 21:22:40 +0100 Subject: [PATCH 1/4] fix: issue where radio didn't emit 55Hz tail tone --- Makefile | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ee4b5728..cdd5b5b1 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ ENABLE_KEEP_MEM_NAME := 1 ENABLE_WIDE_RX := 1 ENABLE_TX_WHEN_AM := 0 ENABLE_F_CAL_MENU := 0 -ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1 +ENABLE_CTCSS_TAIL_PHASE_SHIFT := 0 ENABLE_BOOT_BEEPS := 0 ENABLE_SHOW_CHARGE_LEVEL := 1 ENABLE_REVERSE_BAT_SYMBOL := 0 diff --git a/README.md b/README.md index 5e4bb1ba..524110dc 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ ENABLE_KEEP_MEM_NAME := 1 maintain channel name when (re)sav ENABLE_WIDE_RX := 1 full 18MHz to 1300MHz RX (though front-end/PA not designed for full range) ENABLE_TX_WHEN_AM := 0 allow TX (always FM) when RX is set to AM ENABLE_F_CAL_MENU := 0 enable the radios hidden frequency calibration menu -ENABLE_CTCSS_TAIL_PHASE_SHIFT := 0 standard CTCSS tail phase shift rather than QS's own 55Hz tone method +ENABLE_CTCSS_TAIL_PHASE_SHIFT := 0 standard CTCSS tail phase shift rather than QS's own 55Hz tone method, do not enable as it breaks STE functionality ENABLE_BOOT_BEEPS := 0 gives user audio feedback on volume knob position at boot-up ENABLE_SHOW_CHARGE_LEVEL := 1 show the charge level when the radio is on charge ENABLE_REVERSE_BAT_SYMBOL := 0 mirror the battery symbol on the status bar (+ pole on the right) From c13fa7512fb95734d1d50215353f4b5f6c8149c6 Mon Sep 17 00:00:00 2001 From: Nunu Date: Sat, 6 Jan 2024 18:18:45 +0100 Subject: [PATCH 2/4] AM receive fixed. --- app/app.c | 18 +++++++++++++----- driver/bk4819.c | 26 +++++++++++++++----------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/app/app.c b/app/app.c index 1be572a5..a3465c91 100644 --- a/app/app.c +++ b/app/app.c @@ -485,12 +485,20 @@ void APP_StartListening(FUNCTION_Type_t Function, const bool reset_am_fix) #ifdef ENABLE_AM_FIX - BK4819_SetAGC(gRxVfo->Modulation != MODULATION_AM || !gSetting_AM_fix); + BK4819_SetAGC(!gSetting_AM_fix); - if (gRxVfo->Modulation == MODULATION_AM && gSetting_AM_fix) { // AM RX mode - if (reset_am_fix) - AM_fix_reset(chan); // TODO: only reset it when moving channel/frequency - AM_fix_10ms(chan); + if (gRxVfo->Modulation == MODULATION_AM) { // AM RX mode + if(gSetting_AM_fix) + { + if (reset_am_fix) + AM_fix_reset(chan); // TODO: only reset it when moving channel/frequency + AM_fix_10ms(chan); + } + else + { + // if not getting AM fix restore gain settings to sane values after AM fix has been turned off + BK4819_SetDefaultAmplifierSettings(); + } } else { // FM RX mode #ifndef ENABLE_ADJUSTABLE_RX_GAIN_SETTINGS diff --git a/driver/bk4819.c b/driver/bk4819.c index a95e0b5b..2c7fe3f3 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -252,7 +252,7 @@ void BK4819_SetAGC(bool enable) // } // else { // BK4819_WriteRegister(BK4819_REG_7B, 0x318C); - + // BK4819_WriteRegister(BK4819_REG_7C, 0x595E); // BK4819_WriteRegister(BK4819_REG_20, 0x8DEF); @@ -310,7 +310,11 @@ void BK4819_InitAGC() BK4819_WriteRegister(BK4819_REG_11, 0x027B); // 0x027B / 000000 10 011 11 011 / -43dB BK4819_WriteRegister(BK4819_REG_10, 0x007A); // 0x007A / 000000 00 011 11 010 / -58dB BK4819_WriteRegister(BK4819_REG_14, 0x0019); // 0x0019 / 000000 00 000 11 001 / -79dB - BK4819_WriteRegister(BK4819_REG_49, (0 << 14) | (84 << 7) | (56 << 0)); //0x2A38 / 00 1010100 0111000 / 84, 56 + //30, 10 - doesn't overload but sound low + //50, 10 - best so far + //50, 15, - signal doesn't fall too low - works best for now + //1 << 14 - way better, seems to open squelch and match squelch as opposed to 0 + BK4819_WriteRegister(BK4819_REG_49, (0b00 << 14) | (50 << 7) | (15 << 0)); //0x2A38 / 00 1010100 0111000 / 84, 56 BK4819_WriteRegister(BK4819_REG_7B, 0x8420); } @@ -727,20 +731,20 @@ void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency) { if (Frequency < 28000000) { // VHF - BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, true); - BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); - } + BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, true); + BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); + } else if (Frequency == 0xFFFFFFFF) { // OFF - BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); - BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); - } + BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); + BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); + } else { // UHF - BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); - BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, true); - } + BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); + BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, true); + } } void BK4819_DisableScramble(void) From 925f77f51aab3154966481412b5ade86ba94bd71 Mon Sep 17 00:00:00 2001 From: Nunu Date: Sat, 6 Jan 2024 18:35:51 +0100 Subject: [PATCH 3/4] Comments. --- driver/bk4819.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/driver/bk4819.c b/driver/bk4819.c index 2c7fe3f3..7f5080b0 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -312,7 +312,8 @@ void BK4819_InitAGC() BK4819_WriteRegister(BK4819_REG_14, 0x0019); // 0x0019 / 000000 00 000 11 001 / -79dB //30, 10 - doesn't overload but sound low //50, 10 - best so far - //50, 15, - signal doesn't fall too low - works best for now + //50, 15, - SOFT - signal doesn't fall too low - works best for now + //45, 25 - AGRESSIVE - lower histeresis, but volume jumps heavily, not good for music, might be good for aviation //1 << 14 - way better, seems to open squelch and match squelch as opposed to 0 BK4819_WriteRegister(BK4819_REG_49, (0b00 << 14) | (50 << 7) | (15 << 0)); //0x2A38 / 00 1010100 0111000 / 84, 56 BK4819_WriteRegister(BK4819_REG_7B, 0x8420); From 22cb1687052b1b6e7249c4f9465c464353ea28c8 Mon Sep 17 00:00:00 2001 From: Nunu Date: Sat, 6 Jan 2024 18:38:01 +0100 Subject: [PATCH 4/4] Cleanup. --- driver/bk4819.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/driver/bk4819.c b/driver/bk4819.c index 7f5080b0..e80be7db 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -732,20 +732,20 @@ void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency) { if (Frequency < 28000000) { // VHF - BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, true); - BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); - } + BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, true); + BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); + } else if (Frequency == 0xFFFFFFFF) { // OFF - BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); - BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); - } + BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); + BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, false); + } else { // UHF - BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); - BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, true); - } + BK4819_ToggleGpioOut(BK4819_GPIO4_PIN32_VHF_LNA, false); + BK4819_ToggleGpioOut(BK4819_GPIO3_PIN31_UHF_LNA, true); + } } void BK4819_DisableScramble(void)