0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-05-05 17:51:24 +03:00

disable AFC in SSB mode

This commit is contained in:
OneOfEleven 2023-11-05 15:02:08 +00:00
parent d3efd0a10b
commit bf9891fe3c
5 changed files with 66 additions and 85 deletions

View File

@ -102,8 +102,6 @@ void BK4819_Init(void)
// BK4819_WriteRegister(0x77, 0xCCEF); // rssi + noise // BK4819_WriteRegister(0x77, 0xCCEF); // rssi + noise
// BK4819_WriteRegister(0x77, 0xFFEF); // rssi // BK4819_WriteRegister(0x77, 0xFFEF); // rssi
// BK4819_WriteRegister(0x73, (0u << 11) | (1u << 4)); // disable AFC
BK4819_config_sub_audible(); BK4819_config_sub_audible();
const uint8_t dtmf_coeffs[] = {111, 107, 103, 98, 80, 71, 58, 44, 65, 55, 37, 23, 228, 203, 181, 159}; const uint8_t dtmf_coeffs[] = {111, 107, 103, 98, 80, 71, 58, 44, 65, 55, 37, 23, 228, 203, 181, 159};
@ -245,6 +243,15 @@ void BK4819_WriteU16(uint16_t Data)
SYSTICK_DelayUs(1); SYSTICK_DelayUs(1);
} }
} }
void BK4819_EnableAFC(void)
{
BK4819_WriteRegister(0x73, (0u << 11) | (0u << 4));
}
void BK4819_DisableAFC(void)
{
BK4819_WriteRegister(0x73, (0u << 11) | (1u << 4));
}
void BK4819_DisableAGC(void) void BK4819_DisableAGC(void)
{ {
@ -413,7 +420,7 @@ void BK4819_set_TX_deviation(const bool narrow)
BK4819_WriteRegister(0x40, (3u << 12) | deviation); BK4819_WriteRegister(0x40, (3u << 12) | deviation);
} }
void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth, const bool weak_no_different) void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth)
{ {
// REG_43 // REG_43
// <15> 0 ??? // <15> 0 ???
@ -467,88 +474,45 @@ void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth, const
m_bandwidth = Bandwidth; m_bandwidth = Bandwidth;
// when received signal is weak, the RX bandwidth is reduced
switch (Bandwidth) switch (Bandwidth)
{ {
default: default:
case BK4819_FILTER_BW_WIDE: // 25kHz case BK4819_FILTER_BW_WIDE: // 25kHz
if (weak_no_different) val = // 0x3028); // 0 011 000 000 10 1 0 00
{ // make the RX bandwidth the same with weak signals (0u << 15) | // 0
val = (4u << 12) | // *3 RF filter bandwidth
(0u << 15) | // 0 (2u << 9) | // *0 RF filter bandwidth when signal is weak
(4u << 12) | // *3 RF filter bandwidth (6u << 6) | // *0 AFTxLPF2 filter Band Width
(2u << 9) | // *0 RF filter bandwidth when signal is weak (2u << 4) | // 2 BW Mode Selection
(6u << 6) | // *0 AFTxLPF2 filter Band Width (1u << 3) | // 1
(2u << 4) | // 2 BW Mode Selection (0u << 2) | // 0 Gain after FM Demodulation
(1u << 3) | // 1 (0u << 0); // 0
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0); // 0
}
else
{ // with weak RX signals the RX bandwidth is reduced
val = // 0x3028); // 0 011 000 000 10 1 0 00
(0u << 15) | // 0
(4u << 12) | // *3 RF filter bandwidth
(2u << 9) | // *0 RF filter bandwidth when signal is weak
(6u << 6) | // *0 AFTxLPF2 filter Band Width
(2u << 4) | // 2 BW Mode Selection
(1u << 3) | // 1
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0); // 0
}
break; break;
case BK4819_FILTER_BW_NARROW: // 12.5kHz case BK4819_FILTER_BW_NARROW: // 12.5kHz
if (weak_no_different) val =
{ (0u << 15) | // 0
val = (4u << 12) | // *4 RF filter bandwidth
(0u << 15) | // 0 (2u << 9) | // *0 RF filter bandwidth when signal is weak
(4u << 12) | // *4 RF filter bandwidth (0u << 6) | // *1 AFTxLPF2 filter Band Width
(2u << 9) | // *0 RF filter bandwidth when signal is weak (0u << 4) | // 0 BW Mode Selection
(0u << 6) | // *1 AFTxLPF2 filter Band Width (1u << 3) | // 1
(0u << 4) | // 0 BW Mode Selection (0u << 2) | // 0 Gain after FM Demodulation
(1u << 3) | // 1 (0u << 0); // 0
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0); // 0
}
else
{
val = // 0x4048); // 0 100 000 001 00 1 0 00
(0u << 15) | // 0
(4u << 12) | // *4 RF filter bandwidth
(2u << 9) | // *0 RF filter bandwidth when signal is weak
(0u << 6) | // *1 AFTxLPF2 filter Band Width
(0u << 4) | // 0 BW Mode Selection
(1u << 3) | // 1
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0); // 0
}
break; break;
case BK4819_FILTER_BW_NARROWER: // 6.25kHz case BK4819_FILTER_BW_NARROWER: // 6.25kHz
if (weak_no_different) val =
{ (0u << 15) | // 0
val = (3u << 12) | // 3 RF filter bandwidth
(0u << 15) | // 0 (2u << 9) | // *0 RF filter bandwidth when signal is weak
(3u << 12) | // 3 RF filter bandwidth (1u << 6) | // 1 AFTxLPF2 filter Band Width
(3u << 9) | // *0 RF filter bandwidth when signal is weak (1u << 4) | // 1 BW Mode Selection
(1u << 6) | // 1 AFTxLPF2 filter Band Width (1u << 3) | // 1
(1u << 4) | // 1 BW Mode Selection (0u << 2) | // 0 Gain after FM Demodulation
(1u << 3) | // 1 (0u << 0); // 0
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0); // 0
}
else
{
val =
(0u << 15) | // 0
(3u << 12) | // 3 RF filter bandwidth
(0u << 9) | // 0 RF filter bandwidth when signal is weak
(1u << 6) | // 1 AFTxLPF2 filter Band Width
(1u << 4) | // 1 BW Mode Selection
(1u << 3) | // 1
(0u << 2) | // 1 Gain after FM Demodulation
(0u << 0); // 0
}
break; break;
} }

View File

@ -67,6 +67,9 @@ void BK4819_WriteRegister(const uint8_t Register, uint16_t Data);
void BK4819_WriteU8(uint8_t Data); void BK4819_WriteU8(uint8_t Data);
void BK4819_WriteU16(uint16_t Data); void BK4819_WriteU16(uint16_t Data);
void BK4819_EnableAFC(void);
void BK4819_DisableAFC(void);
void BK4819_DisableAGC(void); void BK4819_DisableAGC(void);
void BK4819_EnableAGC(void); void BK4819_EnableAGC(void);
@ -79,7 +82,7 @@ void BK4819_EnableVox(uint16_t Vox1Threshold, uint16_t Vox0Threshold);
void BK4819_set_TX_deviation(const bool narrow); void BK4819_set_TX_deviation(const bool narrow);
void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth, const bool weak_no_different); void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth);
void BK4819_SetupPowerAmplifier(const uint8_t bias, const uint32_t frequency); void BK4819_SetupPowerAmplifier(const uint8_t bias, const uint32_t frequency);
void BK4819_set_rf_frequency(const uint32_t frequency, const bool trigger_update); void BK4819_set_rf_frequency(const uint32_t frequency, const bool trigger_update);

Binary file not shown.

Binary file not shown.

32
radio.c
View File

@ -644,16 +644,23 @@ void RADIO_setup_registers(bool switch_to_function_foreground)
case BK4819_FILTER_BW_NARROW: case BK4819_FILTER_BW_NARROW:
#ifdef ENABLE_AM_FIX #ifdef ENABLE_AM_FIX
#if 0 #if 0
// BK4819_SetFilterBandwidth(Bandwidth, g_rx_vfo->channel.am_mode > 0 && g_eeprom.config.setting.am_fix); BK4819_SetFilterBandwidth(Bandwidth);
BK4819_SetFilterBandwidth(Bandwidth, true); BK4819_EnableAFC();
#else #else
if (g_rx_vfo->channel.am_mode > 1) if (g_rx_vfo->channel.am_mode > 1)
BK4819_SetFilterBandwidth(BK4819_FILTER_BW_NARROWER, false); {
BK4819_SetFilterBandwidth(BK4819_FILTER_BW_NARROWER); // sideband
BK4819_DisableAFC();
}
else else
BK4819_SetFilterBandwidth(Bandwidth, true); {
BK4819_SetFilterBandwidth(Bandwidth);
BK4819_EnableAFC();
}
#endif #endif
#else #else
BK4819_SetFilterBandwidth(Bandwidth, false); BK4819_SetFilterBandwidth(Bandwidth, false);
BK4819_EnableAFC();
#endif #endif
break; break;
} }
@ -908,16 +915,23 @@ void RADIO_enableTX(const bool fsk_tx)
case BK4819_FILTER_BW_NARROW: case BK4819_FILTER_BW_NARROW:
#ifdef ENABLE_AM_FIX #ifdef ENABLE_AM_FIX
#if 0 #if 0
// BK4819_SetFilterBandwidth(Bandwidth, g_current_vfo->channel.am_mode > 0 && g_eeprom.config.setting.am_fix); BK4819_SetFilterBandwidth(Bandwidth);
BK4819_SetFilterBandwidth(Bandwidth, true); BK4819_EnableAFC();
#else #else
if (g_current_vfo->channel.am_mode > 1) if (g_current_vfo->channel.am_mode > 1)
BK4819_SetFilterBandwidth(BK4819_FILTER_BW_NARROWER, false); {
BK4819_SetFilterBandwidth(BK4819_FILTER_BW_NARROWER); // sideband
BK4819_DisableAFC();
}
else else
BK4819_SetFilterBandwidth(Bandwidth, true); {
BK4819_SetFilterBandwidth(Bandwidth);
BK4819_EnableAFC();
}
#endif #endif
#else #else
BK4819_SetFilterBandwidth(Bandwidth, false); BK4819_SetFilterBandwidth(Bandwidth);
BK4819_EnableAFC();
#endif #endif
break; break;
} }