diff --git a/app/aircopy.c b/app/aircopy.c index a8284a2..e1c3fa3 100644 --- a/app/aircopy.c +++ b/app/aircopy.c @@ -134,6 +134,34 @@ void AIRCOPY_start_fsk_tx(const int request_block_num) // turn the TX on RADIO_enableTX(true); + // REG_2B 0 + // + // <10> 0 AF RX HPF 300Hz filter + // 0 = enable + // 1 = disable + // + // <9> 0 AF RX LPF 3kHz filter + // 0 = enable + // 1 = disable + // + // <8> 0 AF RX de-emphasis filter + // 0 = enable + // 1 = disable + // + // <2> 0 AF TX HPF 300Hz filter + // 0 = enable + // 1 = disable + // + // <1> 0 AF TX LPF filter + // 0 = enable + // 1 = disable + // + // <0> 0 AF TX pre-emphasis filter + // 0 = enable + // 1 = disable + // + BK4819_WriteRegister(0x2B, (1u << 2) | (1u << 0)); // try to improve the TX waveform + // REG_59 // // <15> 0 TX FIFO @@ -217,6 +245,9 @@ void AIRCOPY_stop_fsk_tx(void) BK4819_reset_fsk(); + // restore TX/RX filtering + BK4819_WriteRegister(0x2B, 0); + if (g_aircopy_state == AIRCOPY_TX) { g_aircopy_block_number++; diff --git a/driver/bk4819.c b/driver/bk4819.c index 18d527d..43c099c 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -817,14 +817,14 @@ void BK4819_SetupSquelch( // 1 = Enable // 0 = Disable // - // <14:8> 0 TONE1 tuning gain + // <14:8> 0 TONE1 tuning // 0 ~ 127 // // <7> 0 Enable TONE2 // 1 = Enable // 0 = Disable // - // <6:0> 0 TONE2/FSK tuning gain + // <6:0> 0 TONE2/FSK tuning // 0 ~ 127 // BK4819_WriteRegister(0x70, 0); @@ -1839,8 +1839,8 @@ uint8_t BK4819_GetCTCType(void) ( 0u << 15) | ( 0u << 8) | ( 1u << 7) | -// (96u << 0)); - (127u << 0)); // best waveform + (96u << 0)); +// (127u << 0)); // best waveform // REG_72 // @@ -2119,7 +2119,7 @@ void BK4819_reset_fsk(void) ( 0u << 15) | // 0 ( 0u << 8) | // 0 ( 1u << 7) | // 1 - (96u << 0)); // 96 (127 looks better) + (96u << 0)); // 96 BK4819_WriteRegister(0x72, ((1200u * 103244) + 5000) / 10000); // with rounding @@ -2187,6 +2187,9 @@ void BK4819_reset_fsk(void) uint16_t fsk_reg59; uint8_t packet[42]; + // create the MDC1200 packet + const unsigned int size = MDC1200_encode_single_packet(packet, op, arg, id); + BK4819_ExitTxMute(); #if 1 @@ -2226,6 +2229,34 @@ void BK4819_reset_fsk(void) const uint16_t tx_dev = BK4819_ReadRegister(0x40); // BK4819_WriteRegister(0x40, (0u << 12) | (1232 << 0)); // 000 0 010011010000 BK4819_WriteRegister(0x40, (tx_dev & 0xf000) | (1050 << 0)); // reduce the deviation a little + + // REG_2B 0 + // + // <10> 0 AF RX HPF 300Hz filter + // 0 = enable + // 1 = disable + // + // <9> 0 AF RX LPF 3kHz filter + // 0 = enable + // 1 = disable + // + // <8> 0 AF RX de-emphasis filter + // 0 = enable + // 1 = disable + // + // <2> 0 AF TX HPF 300Hz filter + // 0 = enable + // 1 = disable + // + // <1> 0 AF TX LPF filter + // 0 = enable + // 1 = disable + // + // <0> 0 AF TX pre-emphasis filter + // 0 = enable + // 1 = disable + // + BK4819_WriteRegister(0x2B, (1u << 2) | (1u << 0)); // ******************************************* @@ -2245,9 +2276,6 @@ void BK4819_reset_fsk(void) // ******************************************* - // create the MDC1200 packet - const unsigned int size = MDC1200_encode_single_packet(packet, op, arg, id); - // MDC1200 uses 1200/1800 Hz FSK tone frequencies 1200 bits/s // BK4819_WriteRegister(0x58, // 0x37C3); // 001 101 11 11 00 001 1 @@ -2328,9 +2356,9 @@ void BK4819_reset_fsk(void) ( 0u << 15) | // 0 ( 0u << 8) | // 0 ( 1u << 7) | // 1 - // (96u << 0)); // 96 - (127u << 0)); // 127 produces nicer waveform - + (96u << 0)); // 96 +// (127u << 0)); + // REG_59 // // <15> 0 TX FIFO @@ -2462,6 +2490,9 @@ void BK4819_reset_fsk(void) // restore the original TX deviation level BK4819_WriteRegister(0x40, tx_dev); + // restore TX/RX filtering + BK4819_WriteRegister(0x2B, 0); + // restore the CTCSS/CDCSS setting BK4819_WriteRegister(0x51, css_val); diff --git a/firmware.bin b/firmware.bin index 7ddfc9e..7518b79 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index 92178fc..b2beab3 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ