mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 14:21:25 +03:00
CTCSS fixes/tidy-ups/comments
This commit is contained in:
parent
54711a5971
commit
7cdb0c9a33
43
Makefile
43
Makefile
@ -1,19 +1,23 @@
|
||||
TARGET = firmware
|
||||
|
||||
ENABLE_AIRCOPY := 0
|
||||
ENABLE_FMRADIO := 0
|
||||
ENABLE_OVERLAY := 1
|
||||
ENABLE_UART := 1
|
||||
ENABLE_NOAA := 0
|
||||
ENABLE_VOICE := 0
|
||||
ENABLE_ALARM := 0
|
||||
ENABLE_BIG_FREQ := 0
|
||||
ENABLE_KEEP_MEM_NAME := 1
|
||||
ENABLE_CHAN_NAME_FREQ := 1
|
||||
ENABLE_WIDE_RX := 1
|
||||
ENABLE_TX_WHEN_AM := 0
|
||||
#ENABLE_SINGLE_VFO_CHAN := 1
|
||||
#ENABLE_BAND_SCOPE := 1
|
||||
# compile options
|
||||
# you can enable ('1') or disable ('0') any/all of these you like
|
||||
ENABLE_AIRCOPY := 0
|
||||
ENABLE_FMRADIO := 0
|
||||
ENABLE_OVERLAY := 1
|
||||
ENABLE_UART := 1
|
||||
ENABLE_NOAA := 0
|
||||
ENABLE_VOICE := 0
|
||||
ENABLE_ALARM := 0
|
||||
ENABLE_BIG_FREQ := 0
|
||||
ENABLE_KEEP_MEM_NAME := 1
|
||||
ENABLE_CHAN_NAME_FREQ := 1
|
||||
ENABLE_WIDE_RX := 1
|
||||
ENABLE_TX_WHEN_AM := 0
|
||||
ENABLE_TAIL_CTCSS_PHASE_SHIFT := 1
|
||||
#ENABLE_SINGLE_VFO_CHAN := 1
|
||||
#ENABLE_BAND_SCOPE := 1
|
||||
|
||||
TARGET = firmware
|
||||
|
||||
BSP_DEFINITIONS := $(wildcard hardware/*/*.def)
|
||||
BSP_HEADERS := $(patsubst hardware/%,bsp/%,$(BSP_DEFINITIONS))
|
||||
@ -42,8 +46,8 @@ ifeq ($(filter $(ENABLE_AIRCOPY) $(ENABLE_UART),1),1)
|
||||
OBJS += driver/crc.o
|
||||
endif
|
||||
OBJS += driver/eeprom.o
|
||||
ifeq ($(ENABLE_OVERLAY),1)
|
||||
OBJS += driver/flash.o
|
||||
ifeq ($(ENABLE_OVERLAY),1)
|
||||
OBJS += driver/flash.o
|
||||
endif
|
||||
OBJS += driver/gpio.o
|
||||
OBJS += driver/i2c.o
|
||||
@ -104,7 +108,6 @@ OBJS += ui/status.o
|
||||
OBJS += ui/ui.o
|
||||
OBJS += ui/welcome.o
|
||||
OBJS += version.o
|
||||
|
||||
OBJS += main.o
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
@ -125,6 +128,7 @@ ASFLAGS = -c -mcpu=cortex-m0
|
||||
ifeq ($(ENABLE_OVERLAY),1)
|
||||
ASFLAGS += -DENABLE_OVERLAY
|
||||
endif
|
||||
|
||||
CFLAGS = -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD
|
||||
CFLAGS += -DPRINTF_INCLUDE_CONFIG_H
|
||||
CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\"
|
||||
@ -164,6 +168,9 @@ endif
|
||||
ifeq ($(ENABLE_TX_WHEN_AM),1)
|
||||
CFLAGS += -DENABLE_TX_WHEN_AM
|
||||
endif
|
||||
ifeq ($(ENABLE_TAIL_CTCSS_PHASE_SHIFT),1)
|
||||
CFLAGS += -DENABLE_TAIL_CTCSS_PHASE_SHIFT
|
||||
endif
|
||||
ifeq ($(ENABLE_SINGLE_VFO_CHAN),1)
|
||||
CFLAGS += -DENABLE_SINGLE_VFO_CHAN
|
||||
endif
|
||||
|
31
README.md
31
README.md
@ -9,22 +9,23 @@ Am amazing achievement if you ask me !
|
||||
# User customization
|
||||
|
||||
This version you can customize at compile time by making various changes to the makefile.
|
||||
You can edit those changes by (currently) editing the MakeFile, look for these lines near the top of the file ..
|
||||
You can edit those changes by (currently) editing the MakeFile, look for these lines at the top of the file ..
|
||||
|
||||
* ENABLE_AIRCOPY := 0 aircopy
|
||||
* ENABLE_FMRADIO := 0 FM band 2 radio
|
||||
* ENABLE_OVERLAY := 1
|
||||
* ENABLE_UART := 1 serial port
|
||||
* ENABLE_NOAA := 0 NOAA channels
|
||||
* ENABLE_VOICE := 0 voices
|
||||
* ENABLE_ALARM := 0 TX alarms
|
||||
* ENABLE_BIG_FREQ := 0 big font for the frequencies
|
||||
* ENABLE_KEEP_MEM_NAME := 1 maintain the channels name when saving over it
|
||||
* ENABLE_CHAN_NAME_FREQ := 1 show the channels frequency below the channels name/number
|
||||
* ENABLE_WIDE_RX := 1 enable the RX in the full 18MHz to 1300MHz range
|
||||
* ENABLE_TX_WHEN_AM := 0 allow TX when RX set to AM
|
||||
* #ENABLE_SINGLE_VFO_CHAN := 1 not yet implemented
|
||||
* #ENABLE_BAND_SCOPE := 1 not yet implemented
|
||||
* ENABLE_AIRCOPY := 0
|
||||
* ENABLE_FMRADIO := 0 FM band 2 radio
|
||||
* ENABLE_OVERLAY := 1
|
||||
* ENABLE_UART := 1 without this you can't configure the radio with your PC
|
||||
* ENABLE_NOAA := 0 NOAA channels
|
||||
* ENABLE_VOICE := 0 strange voices
|
||||
* ENABLE_ALARM := 0 TX alarms
|
||||
* ENABLE_BIG_FREQ := 0 big font for the frequencies
|
||||
* ENABLE_KEEP_MEM_NAME := 1 maintain the channel name when (re)saving a memory channel
|
||||
* ENABLE_CHAN_NAME_FREQ := 1 show the channel frequency below the channel name/number
|
||||
* ENABLE_WIDE_RX := 1 enable the RX in the full 18MHz to 1300MHz (though frontend is not tuned for full range)
|
||||
* ENABLE_TX_WHEN_AM := 0 allow TX when RX set to AM
|
||||
* ENABLE_TAIL_CTCSS_PHASE_SHIFT := 1 use CTCSS tail phase shift rather than QS's 55Hz tone method
|
||||
* #ENABLE_SINGLE_VFO_CHAN := 1 not yet implemented
|
||||
* #ENABLE_BAND_SCOPE := 1 not yet implemented
|
||||
|
||||
To enable the custom option, set the above option to '1'
|
||||
|
||||
|
70
dcs.c
70
dcs.c
@ -18,49 +18,41 @@
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
||||
|
||||
// CTCSS Hz * 10
|
||||
const uint16_t CTCSS_Options[50] = {
|
||||
0x029E, 0x02B5, 0x02CF, 0x02E8,
|
||||
0x0302, 0x031D, 0x0339, 0x0356,
|
||||
0x0375, 0x0393, 0x03B4, 0x03CE,
|
||||
0x03E8, 0x040B, 0x0430, 0x0455,
|
||||
0x047C, 0x04A4, 0x04CE, 0x04F9,
|
||||
0x0526, 0x0555, 0x0585, 0x05B6,
|
||||
0x05EA, 0x061F, 0x063E, 0x0656,
|
||||
0x0677, 0x068F, 0x06B1, 0x06CA,
|
||||
0x06ED, 0x0707, 0x072B, 0x0746,
|
||||
0x076B, 0x0788, 0x07AE, 0x07CB,
|
||||
0x07F3, 0x0811, 0x083B, 0x0885,
|
||||
0x08D1, 0x08F3, 0x0920, 0x0972,
|
||||
0x09C7, 0x09ED,
|
||||
#if 0
|
||||
670, 693, 719, 0x02E8, 0x0302, 0x031D, 0x0339, 0x0356,
|
||||
0x0375, 0x0393, 0x03B4, 0x03CE, 0x03E8, 0x040B, 0x0430, 0x0455,
|
||||
0x047C, 0x04A4, 0x04CE, 0x04F9, 0x0526, 0x0555, 0x0585, 0x05B6,
|
||||
0x05EA, 0x061F, 0x063E, 0x0656, 0x0677, 0x068F, 0x06B1, 0x06CA,
|
||||
0x06ED, 0x0707, 0x072B, 0x0746, 0x076B, 0x0788, 0x07AE, 0x07CB,
|
||||
0x07F3, 0x0811, 0x083B, 0x0885, 0x08D1, 0x08F3, 0x0920, 0x0972,
|
||||
0x09C7, 0x09ED
|
||||
#else
|
||||
670, 693, 719, 744, 770, 797, 825, 854,
|
||||
885, 915, 948, 974, 1000, 1035, 1072, 1109,
|
||||
1148, 1188, 1230, 1273, 1318, 1365, 1413, 1462,
|
||||
1514, 1567, 1598, 1622, 1655, 1679, 1713, 1738,
|
||||
1773, 1799, 1835, 1862, 1899, 1928, 1966, 1995,
|
||||
2035, 2065, 2107, 2181, 2257, 2291, 2336, 2418,
|
||||
2503, 2541
|
||||
#endif
|
||||
};
|
||||
|
||||
const uint16_t DCS_Options[104] = {
|
||||
0x0013, 0x0015, 0x0016, 0x0019,
|
||||
0x001A, 0x001E, 0x0023, 0x0027,
|
||||
0x0029, 0x002B, 0x002C, 0x0035,
|
||||
0x0039, 0x003A, 0x003B, 0x003C,
|
||||
0x004C, 0x004D, 0x004E, 0x0052,
|
||||
0x0055, 0x0059, 0x005A, 0x005C,
|
||||
0x0063, 0x0065, 0x006A, 0x006D,
|
||||
0x006E, 0x0072, 0x0075, 0x007A,
|
||||
0x007C, 0x0085, 0x008A, 0x0093,
|
||||
0x0095, 0x0096, 0x00A3, 0x00A4,
|
||||
0x00A5, 0x00A6, 0x00A9, 0x00AA,
|
||||
0x00AD, 0x00B1, 0x00B3, 0x00B5,
|
||||
0x00B6, 0x00B9, 0x00BC, 0x00C6,
|
||||
0x00C9, 0x00CD, 0x00D5, 0x00D9,
|
||||
0x00DA, 0x00E3, 0x00E6, 0x00E9,
|
||||
0x00EE, 0x00F4, 0x00F5, 0x00F9,
|
||||
0x0109, 0x010A, 0x010B, 0x0113,
|
||||
0x0119, 0x011A, 0x0125, 0x0126,
|
||||
0x012A, 0x012C, 0x012D, 0x0132,
|
||||
0x0134, 0x0135, 0x0136, 0x0143,
|
||||
0x0146, 0x014E, 0x0153, 0x0156,
|
||||
0x015A, 0x0166, 0x0175, 0x0186,
|
||||
0x018A, 0x0194, 0x0197, 0x0199,
|
||||
0x019A, 0x01AC, 0x01B2, 0x01B4,
|
||||
0x01C3, 0x01CA, 0x01D3, 0x01D9,
|
||||
0x01DA, 0x01DC, 0x01E3, 0x01EC,
|
||||
0x0013, 0x0015, 0x0016, 0x0019, 0x001A, 0x001E, 0x0023, 0x0027,
|
||||
0x0029, 0x002B, 0x002C, 0x0035, 0x0039, 0x003A, 0x003B, 0x003C,
|
||||
0x004C, 0x004D, 0x004E, 0x0052, 0x0055, 0x0059, 0x005A, 0x005C,
|
||||
0x0063, 0x0065, 0x006A, 0x006D, 0x006E, 0x0072, 0x0075, 0x007A,
|
||||
0x007C, 0x0085, 0x008A, 0x0093, 0x0095, 0x0096, 0x00A3, 0x00A4,
|
||||
0x00A5, 0x00A6, 0x00A9, 0x00AA, 0x00AD, 0x00B1, 0x00B3, 0x00B5,
|
||||
0x00B6, 0x00B9, 0x00BC, 0x00C6, 0x00C9, 0x00CD, 0x00D5, 0x00D9,
|
||||
0x00DA, 0x00E3, 0x00E6, 0x00E9, 0x00EE, 0x00F4, 0x00F5, 0x00F9,
|
||||
0x0109, 0x010A, 0x010B, 0x0113, 0x0119, 0x011A, 0x0125, 0x0126,
|
||||
0x012A, 0x012C, 0x012D, 0x0132, 0x0134, 0x0135, 0x0136, 0x0143,
|
||||
0x0146, 0x014E, 0x0153, 0x0156, 0x015A, 0x0166, 0x0175, 0x0186,
|
||||
0x018A, 0x0194, 0x0197, 0x0199, 0x019A, 0x01AC, 0x01B2, 0x01B4,
|
||||
0x01C3, 0x01CA, 0x01D3, 0x01D9, 0x01DA, 0x01DC, 0x01E3, 0x01EC,
|
||||
};
|
||||
|
||||
static uint32_t DCS_CalculateGolay(uint32_t CodeWord)
|
||||
|
@ -276,13 +276,13 @@ void BK4819_SetCDCSSCodeWord(uint32_t CodeWord)
|
||||
// <12:0> = CDCSS baud rate frequency (134.4Hz) control word =
|
||||
// freq(Hz) * 20.64888 for XTAL 13M/26M or
|
||||
// freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M
|
||||
|
||||
//
|
||||
BK4819_WriteRegister(BK4819_REG_07, BK4819_REG_07_MODE_CTC1 | 2775u);
|
||||
|
||||
// REG_08 <15:0> <15> = 1 for CDCSS high 12bit
|
||||
// <15> = 0 for CDCSS low 12bit
|
||||
// <11:0> = CDCSShigh/low 12bit code
|
||||
|
||||
//
|
||||
BK4819_WriteRegister(BK4819_REG_08, (0u << 15) | ((CodeWord >> 0) & 0x0FFF)); // LS 12-bits
|
||||
BK4819_WriteRegister(BK4819_REG_08, (1u << 15) | ((CodeWord >> 12) & 0x0FFF)); // MS 12-bits
|
||||
}
|
||||
@ -329,7 +329,7 @@ void BK4819_SetCTCSSFrequency(uint32_t FreqControlWord)
|
||||
// freq(Hz) * 20.64888 for XTAL 13M/26M or
|
||||
// freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M
|
||||
//
|
||||
// When <13> = 1 for CTC2 (Tail 55Hz Rx detection)
|
||||
// When <13> = 1 for CTC2 (Tail RX detection)
|
||||
// <12:0> = CTC2 (should below 100Hz) frequency control word =
|
||||
// 25391 / freq(Hz) for XTAL 13M/26M or
|
||||
// 25000 / freq(Hz) for XTAL 12.8M/19.2M/25.6M/38.4M
|
||||
@ -338,11 +338,12 @@ void BK4819_SetCTCSSFrequency(uint32_t FreqControlWord)
|
||||
// <12:0> = CDCSS baud rate frequency (134.4Hz) control word =
|
||||
// freq(Hz) * 20.64888 for XTAL 13M/26M or
|
||||
// freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M
|
||||
|
||||
BK4819_WriteRegister(BK4819_REG_07, BK4819_REG_07_MODE_CTC1 | ((FreqControlWord * 2065u) / 1000u));
|
||||
//
|
||||
BK4819_WriteRegister(BK4819_REG_07, BK4819_REG_07_MODE_CTC1 | (((FreqControlWord * 2064888u) + 500000u) / 1000000u)); // with rounding
|
||||
}
|
||||
|
||||
void BK4819_Set55HzTailDetection(void)
|
||||
// freq_10Hz is CTCSS Hz * 10
|
||||
void BK4819_SetTailDetection(const uint32_t freq_10Hz)
|
||||
{
|
||||
// REG_07 <15:0>
|
||||
//
|
||||
@ -351,7 +352,7 @@ void BK4819_Set55HzTailDetection(void)
|
||||
// freq(Hz) * 20.64888 for XTAL 13M/26M or
|
||||
// freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M
|
||||
//
|
||||
// When <13> = 1 for CTC2 (Tail 55Hz Rx detection)
|
||||
// When <13> = 1 for CTC2 (Tail RX detection)
|
||||
// <12:0> = CTC2 (should below 100Hz) frequency control word =
|
||||
// 25391 / freq(Hz) for XTAL 13M/26M or
|
||||
// 25000 / freq(Hz) for XTAL 12.8M/19.2M/25.6M/38.4M
|
||||
@ -360,10 +361,8 @@ void BK4819_Set55HzTailDetection(void)
|
||||
// <12:0> = CDCSS baud rate frequency (134.4Hz) control word =
|
||||
// freq(Hz) * 20.64888 for XTAL 13M/26M or
|
||||
// freq(Hz) * 20.97152 for XTAL 12.8M/19.2M/25.6M/38.4M
|
||||
|
||||
// CTC2 Frequency Control Word = round_nearest(25391 / 55) = 462
|
||||
const unsigned int ctcss_Hz = 55;
|
||||
BK4819_WriteRegister(BK4819_REG_07, BK4819_REG_07_MODE_CTC2 | ((25391 + (ctcss_Hz / 2)) / ctcss_Hz)); // with rounding
|
||||
//
|
||||
BK4819_WriteRegister(BK4819_REG_07, BK4819_REG_07_MODE_CTC2 | ((253910 + (freq_10Hz / 2)) / freq_10Hz)); // with rounding
|
||||
}
|
||||
|
||||
void BK4819_EnableVox(uint16_t VoxEnableThreshold, uint16_t VoxDisableThreshold)
|
||||
@ -879,11 +878,14 @@ void BK4819_EnableCDCSS(void)
|
||||
|
||||
void BK4819_EnableCTCSS(void)
|
||||
{
|
||||
// BK4819_GenTail(1); // 120° phase shift
|
||||
BK4819_GenTail(2); // 180° phase shift
|
||||
// BK4819_GenTail(3); // 240° phase shift
|
||||
// BK4819_GenTail(4); // 55Hz tone freq
|
||||
|
||||
#ifdef ENABLE_TAIL_CTCSS_PHASE_SHIFT
|
||||
//BK4819_GenTail(1); // 120° phase shift
|
||||
BK4819_GenTail(2); // 180° phase shift
|
||||
//BK4819_GenTail(3); // 240° phase shift
|
||||
#else
|
||||
BK4819_GenTail(4); // 55Hz tone freq
|
||||
#endif
|
||||
|
||||
// REG_51 <15> 0
|
||||
// 1 = Enable TxCTCSS/CDCSS
|
||||
// 0 = Disable
|
||||
|
@ -66,7 +66,7 @@ void BK4819_ToggleGpioOut(BK4819_GPIO_PIN_t Pin, bool bSet);
|
||||
|
||||
void BK4819_SetCDCSSCodeWord(uint32_t CodeWord);
|
||||
void BK4819_SetCTCSSFrequency(uint32_t BaudRate);
|
||||
void BK4819_Set55HzTailDetection(void);
|
||||
void BK4819_SetTailDetection(const uint32_t freq_10Hz);
|
||||
void BK4819_EnableVox(uint16_t Vox1Threshold, uint16_t Vox0Threshold);
|
||||
void BK4819_SetFilterBandwidth(BK4819_FilterBandwidth_t Bandwidth);
|
||||
void BK4819_SetupPowerAmplifier(uint16_t Bias, uint32_t Frequency);
|
||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
38
radio.c
38
radio.c
@ -594,11 +594,36 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
||||
default:
|
||||
case CODE_TYPE_OFF:
|
||||
BK4819_SetCTCSSFrequency(670);
|
||||
BK4819_Set55HzTailDetection();
|
||||
|
||||
//#ifndef ENABLE_TAIL_CTCSS_PHASE_SHIFT
|
||||
BK4819_SetTailDetection(550); // QS's 55Hz tone method
|
||||
//#else
|
||||
// BK4819_SetTailDetection(670); // 67Hz
|
||||
//#endif
|
||||
|
||||
InterruptMask = 0
|
||||
| BK4819_REG_3F_CxCSS_TAIL
|
||||
| BK4819_REG_3F_SQUELCH_FOUND
|
||||
| BK4819_REG_3F_SQUELCH_LOST;
|
||||
|
||||
break;
|
||||
|
||||
case CODE_TYPE_CONTINUOUS_TONE:
|
||||
BK4819_SetCTCSSFrequency(CTCSS_Options[Code]);
|
||||
|
||||
//#ifndef ENABLE_TAIL_CTCSS_PHASE_SHIFT
|
||||
BK4819_SetTailDetection(550); // QS's 55Hz tone method
|
||||
//#else
|
||||
// BK4819_SetTailDetection(CTCSS_Options[Code]);
|
||||
//#endif
|
||||
|
||||
InterruptMask = 0
|
||||
| BK4819_REG_3F_CxCSS_TAIL
|
||||
| BK4819_REG_3F_CTCSS_FOUND
|
||||
| BK4819_REG_3F_CTCSS_LOST
|
||||
| BK4819_REG_3F_SQUELCH_FOUND
|
||||
| BK4819_REG_3F_SQUELCH_LOST;
|
||||
|
||||
break;
|
||||
|
||||
case CODE_TYPE_DIGITAL:
|
||||
@ -611,17 +636,6 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
||||
| BK4819_REG_3F_SQUELCH_FOUND
|
||||
| BK4819_REG_3F_SQUELCH_LOST;
|
||||
break;
|
||||
|
||||
case CODE_TYPE_CONTINUOUS_TONE:
|
||||
BK4819_SetCTCSSFrequency(CTCSS_Options[Code]);
|
||||
BK4819_Set55HzTailDetection();
|
||||
InterruptMask = 0
|
||||
| BK4819_REG_3F_CxCSS_TAIL
|
||||
| BK4819_REG_3F_CTCSS_FOUND
|
||||
| BK4819_REG_3F_CTCSS_LOST
|
||||
| BK4819_REG_3F_SQUELCH_FOUND
|
||||
| BK4819_REG_3F_SQUELCH_LOST;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gRxVfo->SCRAMBLING_TYPE == 0 || !gSetting_ScrambleEnable)
|
||||
|
@ -13,7 +13,7 @@ del /S /Q *.o >nul 2>nul
|
||||
del /S /Q *.d >nul 2>nul
|
||||
|
||||
::python -m pip install --upgrade pip crcmod
|
||||
fw-pack.py firmware.bin 230913 firmware.packed.bin
|
||||
fw-pack.py firmware.bin 230914 firmware.packed.bin
|
||||
|
||||
::arm-none-eabi-size firmware
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user