mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 06:11:24 +03:00
Overlay stuff
This commit is contained in:
parent
540906cc3f
commit
1e3b26768e
8
Makefile
8
Makefile
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
# compile options
|
# compile options
|
||||||
# you can enable ('1') or disable ('0') any/all of these you like
|
# you can enable ('1') or disable ('0') any/all of these you like
|
||||||
|
ENABLE_SWD := 0
|
||||||
ENABLE_AIRCOPY := 0
|
ENABLE_AIRCOPY := 0
|
||||||
ENABLE_FMRADIO := 0
|
ENABLE_FMRADIO := 0
|
||||||
ENABLE_OVERLAY := 1
|
ENABLE_OVERLAY := 1
|
||||||
@ -132,10 +133,13 @@ ifeq ($(ENABLE_OVERLAY),1)
|
|||||||
ASFLAGS += -DENABLE_OVERLAY
|
ASFLAGS += -DENABLE_OVERLAY
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#CFLAGS = -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD
|
CFLAGS = -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD
|
||||||
CFLAGS = -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD -fdata-sections -ffunction-sections
|
#CFLAGS = -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD -fdata-sections -ffunction-sections
|
||||||
CFLAGS += -DPRINTF_INCLUDE_CONFIG_H
|
CFLAGS += -DPRINTF_INCLUDE_CONFIG_H
|
||||||
CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\"
|
CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\"
|
||||||
|
ifeq ($(ENABLE_SWD),1)
|
||||||
|
CFLAGS += -DENABLE_SWD
|
||||||
|
endif
|
||||||
ifeq ($(ENABLE_AIRCOPY),1)
|
ifeq ($(ENABLE_AIRCOPY),1)
|
||||||
CFLAGS += -DENABLE_AIRCOPY
|
CFLAGS += -DENABLE_AIRCOPY
|
||||||
endif
|
endif
|
||||||
|
@ -52,7 +52,9 @@
|
|||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "sram-overlay.h"
|
#if defined(ENABLE_OVERLAY)
|
||||||
|
#include "sram-overlay.h"
|
||||||
|
#endif
|
||||||
#include "ui/battery.h"
|
#include "ui/battery.h"
|
||||||
#include "ui/inputbox.h"
|
#include "ui/inputbox.h"
|
||||||
#include "ui/menu.h"
|
#include "ui/menu.h"
|
||||||
@ -727,7 +729,8 @@ void APP_CheckRadioInterrupts(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void APP_EndTransmission(void)
|
void APP_EndTransmission(void)
|
||||||
{
|
{ // back to RX mode
|
||||||
|
|
||||||
RADIO_SendEndOfTransmission();
|
RADIO_SendEndOfTransmission();
|
||||||
|
|
||||||
if (gCurrentVfo->pTX->CodeType != CODE_TYPE_OFF)
|
if (gCurrentVfo->pTX->CodeType != CODE_TYPE_OFF)
|
||||||
@ -1710,6 +1713,7 @@ void APP_TimeSlice500ms(void)
|
|||||||
SYSTEM_DelayMs(5);
|
SYSTEM_DelayMs(5);
|
||||||
|
|
||||||
RADIO_SetupRegisters(true);
|
RADIO_SetupRegisters(true);
|
||||||
|
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
12
app/menu.c
12
app/menu.c
@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#if !defined(ENABLE_OVERLAY)
|
||||||
|
#include "ARMCM0.h"
|
||||||
|
#endif
|
||||||
#include "app/dtmf.h"
|
#include "app/dtmf.h"
|
||||||
#include "app/generic.h"
|
#include "app/generic.h"
|
||||||
#include "app/menu.h"
|
#include "app/menu.h"
|
||||||
@ -31,7 +34,9 @@
|
|||||||
#include "frequencies.h"
|
#include "frequencies.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "sram-overlay.h"
|
#if defined(ENABLE_OVERLAY)
|
||||||
|
#include "sram-overlay.h"
|
||||||
|
#endif
|
||||||
#include "ui/inputbox.h"
|
#include "ui/inputbox.h"
|
||||||
#include "ui/menu.h"
|
#include "ui/menu.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
@ -1234,7 +1239,12 @@ static void MENU_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
|||||||
AUDIO_PlaySingleVoice(true);
|
AUDIO_PlaySingleVoice(true);
|
||||||
#endif
|
#endif
|
||||||
MENU_AcceptSetting();
|
MENU_AcceptSetting();
|
||||||
|
|
||||||
|
#if defined(ENABLE_OVERLAY)
|
||||||
overlay_FLASH_RebootToBootloader();
|
overlay_FLASH_RebootToBootloader();
|
||||||
|
#else
|
||||||
|
NVIC_SystemReset();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
gFlagAcceptSetting = true;
|
gFlagAcceptSetting = true;
|
||||||
|
11
app/uart.c
11
app/uart.c
@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#if !defined(ENABLE_OVERLAY)
|
||||||
|
#include "ARMCM0.h"
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
#include "app/fm.h"
|
#include "app/fm.h"
|
||||||
#endif
|
#endif
|
||||||
@ -32,7 +35,9 @@
|
|||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "sram-overlay.h"
|
#if defined(ENABLE_OVERLAY)
|
||||||
|
#include "sram-overlay.h"
|
||||||
|
#endif
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#define DMA_INDEX(x, y) (((x) + (y)) % sizeof(UART_DMA_Buffer))
|
#define DMA_INDEX(x, y) (((x) + (y)) % sizeof(UART_DMA_Buffer))
|
||||||
@ -524,7 +529,11 @@ void UART_HandleCommand(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x05DD:
|
case 0x05DD:
|
||||||
|
#if defined(ENABLE_OVERLAY)
|
||||||
overlay_FLASH_RebootToBootloader();
|
overlay_FLASH_RebootToBootloader();
|
||||||
|
#else
|
||||||
|
NVIC_SystemReset();
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
48
bitmaps.c
48
bitmaps.c
@ -21,7 +21,6 @@ const uint8_t BITMAP_BatteryLevel1[] =
|
|||||||
0b00000000,
|
0b00000000,
|
||||||
0b00111110,
|
0b00111110,
|
||||||
0b00100010,
|
0b00100010,
|
||||||
0b01111111,
|
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
@ -35,7 +34,8 @@ const uint8_t BITMAP_BatteryLevel1[] =
|
|||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01100011
|
0b01000001,
|
||||||
|
0b01111111
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_BatteryLevel2[] =
|
const uint8_t BITMAP_BatteryLevel2[] =
|
||||||
@ -43,10 +43,7 @@ const uint8_t BITMAP_BatteryLevel2[] =
|
|||||||
0b00000000,
|
0b00000000,
|
||||||
0b00111110,
|
0b00111110,
|
||||||
0b00100010,
|
0b00100010,
|
||||||
0b01111111,
|
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01011101,
|
|
||||||
0b01011101,
|
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
@ -57,7 +54,10 @@ const uint8_t BITMAP_BatteryLevel2[] =
|
|||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01100011
|
0b01011101,
|
||||||
|
0b01011101,
|
||||||
|
0b01000001,
|
||||||
|
0b01111111
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_BatteryLevel3[] =
|
const uint8_t BITMAP_BatteryLevel3[] =
|
||||||
@ -65,7 +65,13 @@ const uint8_t BITMAP_BatteryLevel3[] =
|
|||||||
0b00000000,
|
0b00000000,
|
||||||
0b00111110,
|
0b00111110,
|
||||||
0b00100010,
|
0b00100010,
|
||||||
0b01111111,
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
@ -73,13 +79,7 @@ const uint8_t BITMAP_BatteryLevel3[] =
|
|||||||
0b01011101,
|
0b01011101,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01111111
|
||||||
0b01000001,
|
|
||||||
0b01000001,
|
|
||||||
0b01000001,
|
|
||||||
0b01000001,
|
|
||||||
0b01000001,
|
|
||||||
0b01100011
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_BatteryLevel4[] =
|
const uint8_t BITMAP_BatteryLevel4[] =
|
||||||
@ -87,7 +87,10 @@ const uint8_t BITMAP_BatteryLevel4[] =
|
|||||||
0b00000000,
|
0b00000000,
|
||||||
0b00111110,
|
0b00111110,
|
||||||
0b00100010,
|
0b00100010,
|
||||||
0b01111111,
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
|
0b01000001,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
@ -98,10 +101,7 @@ const uint8_t BITMAP_BatteryLevel4[] =
|
|||||||
0b01011101,
|
0b01011101,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01000001,
|
0b01111111
|
||||||
0b01000001,
|
|
||||||
0b01000001,
|
|
||||||
0b01100011
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_BatteryLevel5[] =
|
const uint8_t BITMAP_BatteryLevel5[] =
|
||||||
@ -109,7 +109,10 @@ const uint8_t BITMAP_BatteryLevel5[] =
|
|||||||
0b00000000,
|
0b00000000,
|
||||||
0b00111110,
|
0b00111110,
|
||||||
0b00100010,
|
0b00100010,
|
||||||
0b01111111,
|
0b01000001,
|
||||||
|
0b01011101,
|
||||||
|
0b01011101,
|
||||||
|
0b01011101,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
@ -120,10 +123,7 @@ const uint8_t BITMAP_BatteryLevel5[] =
|
|||||||
0b01011101,
|
0b01011101,
|
||||||
0b01011101,
|
0b01011101,
|
||||||
0b01000001,
|
0b01000001,
|
||||||
0b01011101,
|
0b01111111
|
||||||
0b01011101,
|
|
||||||
0b01000001,
|
|
||||||
0b01100011
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_USB_C[] =
|
const uint8_t BITMAP_USB_C[] =
|
||||||
|
350
board.c
350
board.c
@ -41,7 +41,9 @@
|
|||||||
#include "helper/battery.h"
|
#include "helper/battery.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "sram-overlay.h"
|
#if defined(ENABLE_OVERLAY)
|
||||||
|
#include "sram-overlay.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef ARRAY_SIZE
|
#ifndef ARRAY_SIZE
|
||||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
||||||
@ -56,16 +58,9 @@ static const uint32_t gDefaultFrequencyTable[] =
|
|||||||
43350000 //
|
43350000 //
|
||||||
};
|
};
|
||||||
|
|
||||||
// BAND1_50MHz
|
#if defined(ENABLE_OVERLAY)
|
||||||
// BAND2_108MHz
|
void BOARD_FLASH_Init(void)
|
||||||
// BAND3_136MHz
|
{
|
||||||
// BAND4_174MHz
|
|
||||||
// BAND5_350MHz
|
|
||||||
// BAND6_400MHz
|
|
||||||
// BAND7_470MHz
|
|
||||||
|
|
||||||
void BOARD_FLASH_Init(void)
|
|
||||||
{
|
|
||||||
FLASH_Init(FLASH_READ_MODE_1_CYCLE);
|
FLASH_Init(FLASH_READ_MODE_1_CYCLE);
|
||||||
FLASH_ConfigureTrimValues();
|
FLASH_ConfigureTrimValues();
|
||||||
SYSTEM_ConfigureClocks();
|
SYSTEM_ConfigureClocks();
|
||||||
@ -74,218 +69,409 @@ void BOARD_FLASH_Init(void)
|
|||||||
overlay_FLASH_ClockMultiplier = 48;
|
overlay_FLASH_ClockMultiplier = 48;
|
||||||
|
|
||||||
FLASH_Init(FLASH_READ_MODE_2_CYCLE);
|
FLASH_Init(FLASH_READ_MODE_2_CYCLE);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void BOARD_GPIO_Init(void)
|
void BOARD_GPIO_Init(void)
|
||||||
{
|
{
|
||||||
GPIOA->DIR |= 0
|
GPIOA->DIR |= 0
|
||||||
|
// A7 = UART1 TX default as OUTPUT from bootloader!
|
||||||
|
// A8 = UART1 RX default as INPUT from bootloader!
|
||||||
|
// Key pad + I2C
|
||||||
| GPIO_DIR_10_BITS_OUTPUT
|
| GPIO_DIR_10_BITS_OUTPUT
|
||||||
|
// Key pad + I2C
|
||||||
| GPIO_DIR_11_BITS_OUTPUT
|
| GPIO_DIR_11_BITS_OUTPUT
|
||||||
|
// Key pad + Voice chip
|
||||||
| GPIO_DIR_12_BITS_OUTPUT
|
| GPIO_DIR_12_BITS_OUTPUT
|
||||||
| GPIO_DIR_13_BITS_OUTPUT;
|
// Key pad + Voice chip
|
||||||
|
| GPIO_DIR_13_BITS_OUTPUT
|
||||||
|
;
|
||||||
GPIOA->DIR &= ~(0
|
GPIOA->DIR &= ~(0
|
||||||
| GPIO_DIR_3_MASK
|
// Key pad
|
||||||
| GPIO_DIR_4_MASK
|
| GPIO_DIR_3_MASK // INPUT
|
||||||
| GPIO_DIR_5_MASK
|
// Key pad
|
||||||
| GPIO_DIR_6_MASK);
|
| GPIO_DIR_4_MASK // INPUT
|
||||||
|
// Key pad
|
||||||
|
| GPIO_DIR_5_MASK // INPUT
|
||||||
|
// Key pad
|
||||||
|
| GPIO_DIR_6_MASK // INPUT
|
||||||
|
);
|
||||||
GPIOB->DIR |= 0
|
GPIOB->DIR |= 0
|
||||||
|
// Back light
|
||||||
| GPIO_DIR_6_BITS_OUTPUT
|
| GPIO_DIR_6_BITS_OUTPUT
|
||||||
|
// ST7565
|
||||||
| GPIO_DIR_9_BITS_OUTPUT
|
| GPIO_DIR_9_BITS_OUTPUT
|
||||||
|
// ST7565 + SWD IO
|
||||||
| GPIO_DIR_11_BITS_OUTPUT
|
| GPIO_DIR_11_BITS_OUTPUT
|
||||||
| GPIO_DIR_15_BITS_OUTPUT;
|
// B14 = SWD_CLK assumed INPUT by default
|
||||||
|
// BK1080
|
||||||
|
| GPIO_DIR_15_BITS_OUTPUT
|
||||||
|
;
|
||||||
GPIOC->DIR |= 0
|
GPIOC->DIR |= 0
|
||||||
|
// BK4819 SCN
|
||||||
| GPIO_DIR_0_BITS_OUTPUT
|
| GPIO_DIR_0_BITS_OUTPUT
|
||||||
|
// BK4819 SCL
|
||||||
| GPIO_DIR_1_BITS_OUTPUT
|
| GPIO_DIR_1_BITS_OUTPUT
|
||||||
|
// BK4819 SDA
|
||||||
| GPIO_DIR_2_BITS_OUTPUT
|
| GPIO_DIR_2_BITS_OUTPUT
|
||||||
|
// Flash light
|
||||||
| GPIO_DIR_3_BITS_OUTPUT
|
| GPIO_DIR_3_BITS_OUTPUT
|
||||||
| GPIO_DIR_4_BITS_OUTPUT;
|
// Speaker
|
||||||
GPIOC->DIR &= ~(GPIO_DIR_5_MASK);
|
| GPIO_DIR_4_BITS_OUTPUT
|
||||||
|
;
|
||||||
|
GPIOC->DIR &= ~(0
|
||||||
|
// PTT button
|
||||||
|
| GPIO_DIR_5_MASK // INPUT
|
||||||
|
);
|
||||||
|
|
||||||
|
#if defined(ENABLE_FMRADIO)
|
||||||
GPIO_SetBit(&GPIOB->DATA, GPIOB_PIN_BK1080);
|
GPIO_SetBit(&GPIOB->DATA, GPIOB_PIN_BK1080);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BOARD_PORTCON_Init(void)
|
void BOARD_PORTCON_Init(void)
|
||||||
{
|
{
|
||||||
// TODO: Need to redo these macros to make more sense.
|
|
||||||
|
|
||||||
// PORT A pin selection
|
// PORT A pin selection
|
||||||
|
|
||||||
PORTCON_PORTA_SEL0 &= 0
|
PORTCON_PORTA_SEL0 &= ~(0
|
||||||
| PORTCON_PORTA_SEL0_A0_MASK
|
// Key pad
|
||||||
| PORTCON_PORTA_SEL0_A1_MASK
|
| PORTCON_PORTA_SEL0_A3_MASK
|
||||||
| PORTCON_PORTA_SEL0_A2_MASK
|
// Key pad
|
||||||
| PORTCON_PORTA_SEL0_A7_MASK;
|
| PORTCON_PORTA_SEL0_A4_MASK
|
||||||
|
// Key pad
|
||||||
|
| PORTCON_PORTA_SEL0_A5_MASK
|
||||||
|
// Key pad
|
||||||
|
| PORTCON_PORTA_SEL0_A6_MASK
|
||||||
|
);
|
||||||
PORTCON_PORTA_SEL0 |= 0
|
PORTCON_PORTA_SEL0 |= 0
|
||||||
| PORTCON_PORTA_SEL0_A0_BITS_GPIOA0
|
// Key pad
|
||||||
| PORTCON_PORTA_SEL0_A1_BITS_GPIOA1
|
| PORTCON_PORTA_SEL0_A3_BITS_GPIOA3
|
||||||
| PORTCON_PORTA_SEL0_A2_BITS_GPIOA2
|
// Key pad
|
||||||
| PORTCON_PORTA_SEL0_A7_BITS_UART1_TX;
|
| PORTCON_PORTA_SEL0_A4_BITS_GPIOA4
|
||||||
|
// Key pad
|
||||||
|
| PORTCON_PORTA_SEL0_A5_BITS_GPIOA5
|
||||||
|
// Key pad
|
||||||
|
| PORTCON_PORTA_SEL0_A6_BITS_GPIOA6
|
||||||
|
// UART1 TX, wasn't cleared in previous step / relying on default value!
|
||||||
|
| PORTCON_PORTA_SEL0_A7_BITS_UART1_TX
|
||||||
|
;
|
||||||
|
|
||||||
PORTCON_PORTA_SEL1 &= 0
|
PORTCON_PORTA_SEL1 &= ~(0
|
||||||
| PORTCON_PORTA_SEL1_A8_MASK
|
// Key pad + I2C
|
||||||
| PORTCON_PORTA_SEL1_A9_MASK
|
| PORTCON_PORTA_SEL1_A10_MASK
|
||||||
| PORTCON_PORTA_SEL1_A14_MASK
|
// Key pad + I2C
|
||||||
| PORTCON_PORTA_SEL1_A15_MASK;
|
| PORTCON_PORTA_SEL1_A11_MASK
|
||||||
|
// Key pad + Voice chip
|
||||||
|
| PORTCON_PORTA_SEL1_A12_MASK
|
||||||
|
// Key pad + Voice chip
|
||||||
|
| PORTCON_PORTA_SEL1_A13_MASK
|
||||||
|
);
|
||||||
PORTCON_PORTA_SEL1 |= 0
|
PORTCON_PORTA_SEL1 |= 0
|
||||||
|
// UART1 RX, wasn't cleared in previous step / relying on default value!
|
||||||
| PORTCON_PORTA_SEL1_A8_BITS_UART1_RX
|
| PORTCON_PORTA_SEL1_A8_BITS_UART1_RX
|
||||||
|
// Battery voltage, wasn't cleared in previous step / relying on default value!
|
||||||
| PORTCON_PORTA_SEL1_A9_BITS_SARADC_CH4
|
| PORTCON_PORTA_SEL1_A9_BITS_SARADC_CH4
|
||||||
|
// Key pad + I2C
|
||||||
|
| PORTCON_PORTA_SEL1_A10_BITS_GPIOA10
|
||||||
|
// Key pad + I2C
|
||||||
|
| PORTCON_PORTA_SEL1_A11_BITS_GPIOA11
|
||||||
|
// Key pad + Voice chip
|
||||||
|
| PORTCON_PORTA_SEL1_A12_BITS_GPIOA12
|
||||||
|
// Key pad + Voice chip
|
||||||
|
| PORTCON_PORTA_SEL1_A13_BITS_GPIOA13
|
||||||
|
// Battery Current, wasn't cleared in previous step / relying on default value!
|
||||||
| PORTCON_PORTA_SEL1_A14_BITS_SARADC_CH9
|
| PORTCON_PORTA_SEL1_A14_BITS_SARADC_CH9
|
||||||
| PORTCON_PORTA_SEL1_A15_BITS_GPIOA15;
|
;
|
||||||
|
|
||||||
// PORT B pin selection
|
// PORT B pin selection
|
||||||
|
|
||||||
PORTCON_PORTB_SEL0 &= 0
|
PORTCON_PORTB_SEL0 &= ~(0
|
||||||
| PORTCON_PORTB_SEL0_B0_MASK
|
// Back light
|
||||||
| PORTCON_PORTB_SEL0_B1_MASK
|
| PORTCON_PORTB_SEL0_B6_MASK
|
||||||
| PORTCON_PORTB_SEL0_B2_MASK
|
// SPI0 SSN
|
||||||
| PORTCON_PORTB_SEL0_B3_MASK
|
| PORTCON_PORTB_SEL0_B7_MASK
|
||||||
| PORTCON_PORTB_SEL0_B4_MASK
|
);
|
||||||
| PORTCON_PORTB_SEL0_B5_MASK;
|
|
||||||
PORTCON_PORTB_SEL0 |= 0
|
PORTCON_PORTB_SEL0 |= 0
|
||||||
| PORTCON_PORTB_SEL0_B0_BITS_GPIOB0
|
// Back light
|
||||||
| PORTCON_PORTB_SEL0_B1_BITS_GPIOB1
|
| PORTCON_PORTB_SEL0_B6_BITS_GPIOB6
|
||||||
| PORTCON_PORTB_SEL0_B2_BITS_GPIOB2
|
// SPI0 SSN
|
||||||
| PORTCON_PORTB_SEL0_B3_BITS_GPIOB3
|
| PORTCON_PORTB_SEL0_B7_BITS_SPI0_SSN
|
||||||
| PORTCON_PORTB_SEL0_B4_BITS_GPIOB4
|
;
|
||||||
| PORTCON_PORTB_SEL0_B5_BITS_GPIOB5
|
|
||||||
| PORTCON_PORTB_SEL0_B7_BITS_SPI0_SSN;
|
|
||||||
|
|
||||||
PORTCON_PORTB_SEL1 &= 0
|
PORTCON_PORTB_SEL1 &= ~(0
|
||||||
| PORTCON_PORTB_SEL1_B8_MASK
|
// ST7565
|
||||||
| PORTCON_PORTB_SEL1_B10_MASK
|
| PORTCON_PORTB_SEL1_B9_MASK
|
||||||
| PORTCON_PORTB_SEL1_B12_MASK
|
// ST7565 + SWD IO
|
||||||
| PORTCON_PORTB_SEL1_B13_MASK;
|
| PORTCON_PORTB_SEL1_B11_MASK
|
||||||
|
// SWD CLK
|
||||||
|
| PORTCON_PORTB_SEL1_B14_MASK
|
||||||
|
// BK1080
|
||||||
|
| PORTCON_PORTB_SEL1_B15_MASK
|
||||||
|
);
|
||||||
PORTCON_PORTB_SEL1 |= 0
|
PORTCON_PORTB_SEL1 |= 0
|
||||||
|
// SPI0 CLK, wasn't cleared in previous step / relying on default value!
|
||||||
| PORTCON_PORTB_SEL1_B8_BITS_SPI0_CLK
|
| PORTCON_PORTB_SEL1_B8_BITS_SPI0_CLK
|
||||||
|
// ST7565
|
||||||
|
| PORTCON_PORTB_SEL1_B9_BITS_GPIOB9
|
||||||
|
// SPI0 MOSI, wasn't cleared in previous step / relying on default value!
|
||||||
| PORTCON_PORTB_SEL1_B10_BITS_SPI0_MOSI
|
| PORTCON_PORTB_SEL1_B10_BITS_SPI0_MOSI
|
||||||
|
#if defined(ENABLE_SWD)
|
||||||
|
// SWD IO
|
||||||
| PORTCON_PORTB_SEL1_B11_BITS_SWDIO
|
| PORTCON_PORTB_SEL1_B11_BITS_SWDIO
|
||||||
| PORTCON_PORTB_SEL1_B12_BITS_GPIOB12
|
// SWD CLK
|
||||||
| PORTCON_PORTB_SEL1_B13_BITS_GPIOB13
|
| PORTCON_PORTB_SEL1_B14_BITS_SWCLK
|
||||||
| PORTCON_PORTB_SEL1_B14_BITS_SWCLK;
|
#else
|
||||||
|
// ST7565
|
||||||
|
| PORTCON_PORTB_SEL1_B11_BITS_GPIOB11
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
// PORT C pin selection
|
// PORT C pin selection
|
||||||
|
|
||||||
PORTCON_PORTC_SEL0 &= 0
|
PORTCON_PORTC_SEL0 &= ~(0
|
||||||
| PORTCON_PORTC_SEL0_C6_MASK
|
// BK4819 SCN
|
||||||
| PORTCON_PORTC_SEL0_C7_MASK;
|
| PORTCON_PORTC_SEL0_C0_MASK
|
||||||
|
// BK4819 SCL
|
||||||
|
| PORTCON_PORTC_SEL0_C1_MASK
|
||||||
|
// BK4819 SDA
|
||||||
|
| PORTCON_PORTC_SEL0_C2_MASK
|
||||||
|
// Flash light
|
||||||
|
| PORTCON_PORTC_SEL0_C3_MASK
|
||||||
|
// Speaker
|
||||||
|
| PORTCON_PORTC_SEL0_C4_MASK
|
||||||
|
// PTT button
|
||||||
|
| PORTCON_PORTC_SEL0_C5_MASK
|
||||||
|
);
|
||||||
|
|
||||||
// PORT A pin configuration
|
// PORT A pin configuration
|
||||||
|
|
||||||
PORTCON_PORTA_IE |= 0
|
PORTCON_PORTA_IE |= 0
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_IE_A3_BITS_ENABLE
|
| PORTCON_PORTA_IE_A3_BITS_ENABLE
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_IE_A4_BITS_ENABLE
|
| PORTCON_PORTA_IE_A4_BITS_ENABLE
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_IE_A5_BITS_ENABLE
|
| PORTCON_PORTA_IE_A5_BITS_ENABLE
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_IE_A6_BITS_ENABLE
|
| PORTCON_PORTA_IE_A6_BITS_ENABLE
|
||||||
| PORTCON_PORTA_IE_A8_BITS_ENABLE;
|
// A7 = UART1 TX disabled by default
|
||||||
|
// UART1 RX
|
||||||
|
| PORTCON_PORTA_IE_A8_BITS_ENABLE
|
||||||
|
;
|
||||||
PORTCON_PORTA_IE &= ~(0
|
PORTCON_PORTA_IE &= ~(0
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_IE_A10_MASK
|
| PORTCON_PORTA_IE_A10_MASK
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_IE_A11_MASK
|
| PORTCON_PORTA_IE_A11_MASK
|
||||||
|
// Keypad + Voice chip
|
||||||
| PORTCON_PORTA_IE_A12_MASK
|
| PORTCON_PORTA_IE_A12_MASK
|
||||||
| PORTCON_PORTA_IE_A13_MASK);
|
// Keypad + Voice chip
|
||||||
|
| PORTCON_PORTA_IE_A13_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTA_PU |= 0
|
PORTCON_PORTA_PU |= 0
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_PU_A3_BITS_ENABLE
|
| PORTCON_PORTA_PU_A3_BITS_ENABLE
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_PU_A4_BITS_ENABLE
|
| PORTCON_PORTA_PU_A4_BITS_ENABLE
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_PU_A5_BITS_ENABLE
|
| PORTCON_PORTA_PU_A5_BITS_ENABLE
|
||||||
| PORTCON_PORTA_PU_A6_BITS_ENABLE;
|
// Keypad
|
||||||
|
| PORTCON_PORTA_PU_A6_BITS_ENABLE
|
||||||
|
;
|
||||||
PORTCON_PORTA_PU &= ~(0
|
PORTCON_PORTA_PU &= ~(0
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_PU_A10_MASK
|
| PORTCON_PORTA_PU_A10_MASK
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_PU_A11_MASK
|
| PORTCON_PORTA_PU_A11_MASK
|
||||||
|
// Keypad + Voice chip
|
||||||
| PORTCON_PORTA_PU_A12_MASK
|
| PORTCON_PORTA_PU_A12_MASK
|
||||||
| PORTCON_PORTA_PU_A13_MASK);
|
// Keypad + Voice chip
|
||||||
|
| PORTCON_PORTA_PU_A13_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTA_PD &= ~(0
|
PORTCON_PORTA_PD &= ~(0
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_PD_A3_MASK
|
| PORTCON_PORTA_PD_A3_MASK
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_PD_A4_MASK
|
| PORTCON_PORTA_PD_A4_MASK
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_PD_A5_MASK
|
| PORTCON_PORTA_PD_A5_MASK
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_PD_A6_MASK
|
| PORTCON_PORTA_PD_A6_MASK
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_PD_A10_MASK
|
| PORTCON_PORTA_PD_A10_MASK
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_PD_A11_MASK
|
| PORTCON_PORTA_PD_A11_MASK
|
||||||
|
// Keypad + Voice chip
|
||||||
| PORTCON_PORTA_PD_A12_MASK
|
| PORTCON_PORTA_PD_A12_MASK
|
||||||
| PORTCON_PORTA_PD_A13_MASK);
|
// Keypad + Voice chip
|
||||||
|
| PORTCON_PORTA_PD_A13_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTA_OD |= 0
|
PORTCON_PORTA_OD |= 0
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_OD_A3_BITS_ENABLE
|
| PORTCON_PORTA_OD_A3_BITS_ENABLE
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_OD_A4_BITS_ENABLE
|
| PORTCON_PORTA_OD_A4_BITS_ENABLE
|
||||||
|
// Keypad
|
||||||
| PORTCON_PORTA_OD_A5_BITS_ENABLE
|
| PORTCON_PORTA_OD_A5_BITS_ENABLE
|
||||||
| PORTCON_PORTA_OD_A6_BITS_ENABLE;
|
// Keypad
|
||||||
|
| PORTCON_PORTA_OD_A6_BITS_ENABLE
|
||||||
|
;
|
||||||
PORTCON_PORTA_OD &= ~(0
|
PORTCON_PORTA_OD &= ~(0
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_OD_A10_MASK
|
| PORTCON_PORTA_OD_A10_MASK
|
||||||
|
// Keypad + I2C
|
||||||
| PORTCON_PORTA_OD_A11_MASK
|
| PORTCON_PORTA_OD_A11_MASK
|
||||||
|
// Keypad + Voice chip
|
||||||
| PORTCON_PORTA_OD_A12_MASK
|
| PORTCON_PORTA_OD_A12_MASK
|
||||||
| PORTCON_PORTA_OD_A13_MASK);
|
// Keypad + Voice chip
|
||||||
|
| PORTCON_PORTA_OD_A13_MASK
|
||||||
|
);
|
||||||
|
|
||||||
// PORT B pin configuration
|
// PORT B pin configuration
|
||||||
|
|
||||||
PORTCON_PORTB_IE |= 0
|
PORTCON_PORTB_IE |= 0
|
||||||
| PORTCON_PORTB_IE_B14_BITS_ENABLE;
|
| PORTCON_PORTB_IE_B14_BITS_ENABLE
|
||||||
|
;
|
||||||
PORTCON_PORTB_IE &= ~(0
|
PORTCON_PORTB_IE &= ~(0
|
||||||
|
// Back light
|
||||||
| PORTCON_PORTB_IE_B6_MASK
|
| PORTCON_PORTB_IE_B6_MASK
|
||||||
|
// UART1
|
||||||
| PORTCON_PORTB_IE_B7_MASK
|
| PORTCON_PORTB_IE_B7_MASK
|
||||||
| PORTCON_PORTB_IE_B8_MASK
|
| PORTCON_PORTB_IE_B8_MASK
|
||||||
|
// ST7565
|
||||||
| PORTCON_PORTB_IE_B9_MASK
|
| PORTCON_PORTB_IE_B9_MASK
|
||||||
|
// SPI0 MOSI
|
||||||
| PORTCON_PORTB_IE_B10_MASK
|
| PORTCON_PORTB_IE_B10_MASK
|
||||||
| PORTCON_PORTB_IE_B15_MASK);
|
#if !defined(ENABLE_SWD)
|
||||||
|
// ST7565
|
||||||
|
| PORTCON_PORTB_IE_B11_MASK
|
||||||
|
#endif
|
||||||
|
// BK1080
|
||||||
|
| PORTCON_PORTB_IE_B15_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTB_PU &= ~(0
|
PORTCON_PORTB_PU &= ~(0
|
||||||
|
// Back light
|
||||||
| PORTCON_PORTB_PU_B6_MASK
|
| PORTCON_PORTB_PU_B6_MASK
|
||||||
|
// ST7565
|
||||||
| PORTCON_PORTB_PU_B9_MASK
|
| PORTCON_PORTB_PU_B9_MASK
|
||||||
|
// ST7565 + SWD IO
|
||||||
| PORTCON_PORTB_PU_B11_MASK
|
| PORTCON_PORTB_PU_B11_MASK
|
||||||
|
// SWD CLK
|
||||||
| PORTCON_PORTB_PU_B14_MASK
|
| PORTCON_PORTB_PU_B14_MASK
|
||||||
| PORTCON_PORTB_PU_B15_MASK);
|
// BK1080
|
||||||
|
| PORTCON_PORTB_PU_B15_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTB_PD &= ~(0
|
PORTCON_PORTB_PD &= ~(0
|
||||||
|
// Back light
|
||||||
| PORTCON_PORTB_PD_B6_MASK
|
| PORTCON_PORTB_PD_B6_MASK
|
||||||
|
// ST7565
|
||||||
| PORTCON_PORTB_PD_B9_MASK
|
| PORTCON_PORTB_PD_B9_MASK
|
||||||
|
// ST7565 + SWD IO
|
||||||
| PORTCON_PORTB_PD_B11_MASK
|
| PORTCON_PORTB_PD_B11_MASK
|
||||||
|
// SWD CLK
|
||||||
| PORTCON_PORTB_PD_B14_MASK
|
| PORTCON_PORTB_PD_B14_MASK
|
||||||
| PORTCON_PORTB_PD_B15_MASK);
|
// BK1080
|
||||||
|
| PORTCON_PORTB_PD_B15_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTB_OD &= ~(0
|
PORTCON_PORTB_OD &= ~(0
|
||||||
|
// Back light
|
||||||
| PORTCON_PORTB_OD_B6_MASK
|
| PORTCON_PORTB_OD_B6_MASK
|
||||||
|
// ST7565
|
||||||
| PORTCON_PORTB_OD_B9_MASK
|
| PORTCON_PORTB_OD_B9_MASK
|
||||||
|
// ST7565 + SWD IO
|
||||||
| PORTCON_PORTB_OD_B11_MASK
|
| PORTCON_PORTB_OD_B11_MASK
|
||||||
| PORTCON_PORTB_OD_B15_MASK);
|
// BK1080
|
||||||
|
| PORTCON_PORTB_OD_B15_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTB_OD |= 0
|
PORTCON_PORTB_OD |= 0
|
||||||
| PORTCON_PORTB_OD_B14_BITS_ENABLE;
|
// SWD CLK
|
||||||
|
| PORTCON_PORTB_OD_B14_BITS_ENABLE
|
||||||
|
;
|
||||||
|
|
||||||
// PORT C pin configuration
|
// PORT C pin configuration
|
||||||
|
|
||||||
PORTCON_PORTC_IE |= 0
|
PORTCON_PORTC_IE |= 0
|
||||||
| PORTCON_PORTC_IE_C5_BITS_ENABLE;
|
// PTT button
|
||||||
|
| PORTCON_PORTC_IE_C5_BITS_ENABLE
|
||||||
|
;
|
||||||
PORTCON_PORTC_IE &= ~(0
|
PORTCON_PORTC_IE &= ~(0
|
||||||
|
// BK4819 SCN
|
||||||
| PORTCON_PORTC_IE_C0_MASK
|
| PORTCON_PORTC_IE_C0_MASK
|
||||||
|
// BK4819 SCL
|
||||||
| PORTCON_PORTC_IE_C1_MASK
|
| PORTCON_PORTC_IE_C1_MASK
|
||||||
|
// BK4819 SDA
|
||||||
| PORTCON_PORTC_IE_C2_MASK
|
| PORTCON_PORTC_IE_C2_MASK
|
||||||
|
// Flash Light
|
||||||
| PORTCON_PORTC_IE_C3_MASK
|
| PORTCON_PORTC_IE_C3_MASK
|
||||||
| PORTCON_PORTC_IE_C4_MASK);
|
// Speaker
|
||||||
|
| PORTCON_PORTC_IE_C4_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTC_PU |= 0
|
PORTCON_PORTC_PU |= 0
|
||||||
| PORTCON_PORTC_PU_C5_BITS_ENABLE;
|
// PTT button
|
||||||
|
| PORTCON_PORTC_PU_C5_BITS_ENABLE
|
||||||
|
;
|
||||||
PORTCON_PORTC_PU &= ~(0
|
PORTCON_PORTC_PU &= ~(0
|
||||||
|
// BK4819 SCN
|
||||||
| PORTCON_PORTC_PU_C0_MASK
|
| PORTCON_PORTC_PU_C0_MASK
|
||||||
|
// BK4819 SCL
|
||||||
| PORTCON_PORTC_PU_C1_MASK
|
| PORTCON_PORTC_PU_C1_MASK
|
||||||
|
// BK4819 SDA
|
||||||
| PORTCON_PORTC_PU_C2_MASK
|
| PORTCON_PORTC_PU_C2_MASK
|
||||||
|
// Flash Light
|
||||||
| PORTCON_PORTC_PU_C3_MASK
|
| PORTCON_PORTC_PU_C3_MASK
|
||||||
| PORTCON_PORTC_PU_C4_MASK);
|
// Speaker
|
||||||
|
| PORTCON_PORTC_PU_C4_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTC_PD &= ~(0
|
PORTCON_PORTC_PD &= ~(0
|
||||||
|
// BK4819 SCN
|
||||||
| PORTCON_PORTC_PD_C0_MASK
|
| PORTCON_PORTC_PD_C0_MASK
|
||||||
|
// BK4819 SCL
|
||||||
| PORTCON_PORTC_PD_C1_MASK
|
| PORTCON_PORTC_PD_C1_MASK
|
||||||
|
// BK4819 SDA
|
||||||
| PORTCON_PORTC_PD_C2_MASK
|
| PORTCON_PORTC_PD_C2_MASK
|
||||||
|
// Flash Light
|
||||||
| PORTCON_PORTC_PD_C3_MASK
|
| PORTCON_PORTC_PD_C3_MASK
|
||||||
|
// Speaker
|
||||||
| PORTCON_PORTC_PD_C4_MASK
|
| PORTCON_PORTC_PD_C4_MASK
|
||||||
| PORTCON_PORTC_PD_C5_MASK);
|
// PTT Button
|
||||||
|
| PORTCON_PORTC_PD_C5_MASK
|
||||||
|
);
|
||||||
|
|
||||||
PORTCON_PORTC_OD &= ~(0
|
PORTCON_PORTC_OD &= ~(0
|
||||||
|
// BK4819 SCN
|
||||||
| PORTCON_PORTC_OD_C0_MASK
|
| PORTCON_PORTC_OD_C0_MASK
|
||||||
|
// BK4819 SCL
|
||||||
| PORTCON_PORTC_OD_C1_MASK
|
| PORTCON_PORTC_OD_C1_MASK
|
||||||
|
// BK4819 SDA
|
||||||
| PORTCON_PORTC_OD_C2_MASK
|
| PORTCON_PORTC_OD_C2_MASK
|
||||||
|
// Flash Light
|
||||||
| PORTCON_PORTC_OD_C3_MASK
|
| PORTCON_PORTC_OD_C3_MASK
|
||||||
| PORTCON_PORTC_OD_C4_MASK);
|
// Speaker
|
||||||
|
| PORTCON_PORTC_OD_C4_MASK
|
||||||
|
);
|
||||||
PORTCON_PORTC_OD |= 0
|
PORTCON_PORTC_OD |= 0
|
||||||
| PORTCON_PORTC_OD_C5_BITS_ENABLE;
|
// BK4819 SCN
|
||||||
|
| PORTCON_PORTC_OD_C0_BITS_DISABLE
|
||||||
|
// BK4819 SCL
|
||||||
|
| PORTCON_PORTC_OD_C1_BITS_DISABLE
|
||||||
|
// BK4819 SDA
|
||||||
|
| PORTCON_PORTC_OD_C2_BITS_DISABLE
|
||||||
|
// Flash Light
|
||||||
|
| PORTCON_PORTC_OD_C3_BITS_DISABLE
|
||||||
|
// Speaker
|
||||||
|
| PORTCON_PORTC_OD_C4_BITS_DISABLE
|
||||||
|
// PTT button
|
||||||
|
| PORTCON_PORTC_OD_C5_BITS_ENABLE
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BOARD_ADC_Init(void)
|
void BOARD_ADC_Init(void)
|
||||||
|
120
driver/bk4819.c
120
driver/bk4819.c
@ -29,9 +29,8 @@ bool gRxIdleMode;
|
|||||||
|
|
||||||
__inline uint16_t scale_freq(const uint16_t freq)
|
__inline uint16_t scale_freq(const uint16_t freq)
|
||||||
{
|
{
|
||||||
// return (uint16_t)(freq * 10.32444); // argh - floating point
|
// return (((uint32_t)freq * 1032444u) + 50000u) / 100000u; // with rounding
|
||||||
// return ((uint32_t)freq * 1032444u) / 100000u;
|
return (((uint32_t)freq * 1353245u) + (1u << 16)) >> 17; // with rounding
|
||||||
return ((uint32_t)freq * 1353245u) >> 17;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BK4819_Init(void)
|
void BK4819_Init(void)
|
||||||
@ -754,72 +753,33 @@ void BK4819_EnableTXLink(void)
|
|||||||
|
|
||||||
void BK4819_PlayDTMF(char Code)
|
void BK4819_PlayDTMF(char Code)
|
||||||
{
|
{
|
||||||
|
uint16_t tone1 = 0;
|
||||||
|
uint16_t tone2 = 0;
|
||||||
|
|
||||||
switch (Code)
|
switch (Code)
|
||||||
{
|
{
|
||||||
case '0':
|
case '0': tone1 = 9715; tone2 = 13793; break; // 941Hz 1336Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x25F3);
|
case '1': tone1 = 7196; tone2 = 12482; break; // 679Hz 1209Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x35E1);
|
case '2': tone1 = 7196; tone2 = 13793; break; // 697Hz 1336Hz
|
||||||
break;
|
case '3': tone1 = 7196; tone2 = 15249; break; // 679Hz 1477Hz
|
||||||
case '1':
|
case '4': tone1 = 7950; tone2 = 12482; break; // 770Hz 1209Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1C1C);
|
case '5': tone1 = 7950; tone2 = 13793; break; // 770Hz 1336Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x30C2);
|
case '6': tone1 = 7950; tone2 = 15249; break; // 770Hz 1477Hz
|
||||||
break;
|
case '7': tone1 = 8796; tone2 = 12482; break; // 852Hz 1209Hz
|
||||||
case '2':
|
case '8': tone1 = 8796; tone2 = 13793; break; // 852Hz 1336Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1C1C);
|
case '9': tone1 = 8796; tone2 = 15249; break; // 852Hz 1477Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x35E1);
|
case 'A': tone1 = 7196; tone2 = 16860; break; // 679Hz 1633Hz
|
||||||
break;
|
case 'B': tone1 = 7950; tone2 = 16860; break; // 770Hz 1633Hz
|
||||||
case '3':
|
case 'C': tone1 = 8796; tone2 = 16860; break; // 852Hz 1633Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1C1C);
|
case 'D': tone1 = 9715; tone2 = 16860; break; // 941Hz 1633Hz
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x3B91);
|
case '*': tone1 = 9715; tone2 = 12482; break; // 941Hz 1209Hz
|
||||||
break;
|
case '#': tone1 = 9715; tone2 = 15249; break; // 941Hz 1477Hz
|
||||||
case '4':
|
}
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1F0E);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x30C2);
|
if (tone1 > 0 && tone2 > 0)
|
||||||
break;
|
{
|
||||||
case '5':
|
BK4819_WriteRegister(BK4819_REG_71, tone1);
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1F0E);
|
BK4819_WriteRegister(BK4819_REG_72, tone2);
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x35E1);
|
|
||||||
break;
|
|
||||||
case '6':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1F0E);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x3B91);
|
|
||||||
break;
|
|
||||||
case '7':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x225C);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x30C2);
|
|
||||||
break;
|
|
||||||
case '8':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x225c);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x35E1);
|
|
||||||
break;
|
|
||||||
case '9':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x225C);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x3B91);
|
|
||||||
break;
|
|
||||||
case 'A':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1C1C);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x41DC);
|
|
||||||
break;
|
|
||||||
case 'B':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1F0E);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x41DC);
|
|
||||||
break;
|
|
||||||
case 'C':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x225C);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x41DC);
|
|
||||||
break;
|
|
||||||
case 'D':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x25F3);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x41DC);
|
|
||||||
break;
|
|
||||||
case '*':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x25F3);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x30C2);
|
|
||||||
break;
|
|
||||||
case '#':
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x25F3);
|
|
||||||
BK4819_WriteRegister(BK4819_REG_72, 0x3B91);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1117,30 +1077,36 @@ void BK4819_PrepareFSKReceive(void)
|
|||||||
|
|
||||||
void BK4819_PlayRoger(void)
|
void BK4819_PlayRoger(void)
|
||||||
{
|
{
|
||||||
BK4819_EnterTxMute();
|
#if 0
|
||||||
|
const uint32_t tone1_Hz = 500;
|
||||||
|
const uint32_t tone2_Hz = 700;
|
||||||
|
#else
|
||||||
|
// motorola type
|
||||||
|
const uint32_t tone1_Hz = 1540;
|
||||||
|
const uint32_t tone2_Hz = 1310;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
BK4819_EnterTxMute();
|
||||||
BK4819_SetAF(BK4819_AF_MUTE);
|
BK4819_SetAF(BK4819_AF_MUTE);
|
||||||
BK4819_WriteRegister(BK4819_REG_70, 0xE000);
|
BK4819_WriteRegister(BK4819_REG_70, 0xE000); // 1110 0000 0000 0000
|
||||||
|
|
||||||
BK4819_EnableTXLink();
|
BK4819_EnableTXLink();
|
||||||
|
|
||||||
SYSTEM_DelayMs(50);
|
SYSTEM_DelayMs(50);
|
||||||
|
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x142A);
|
BK4819_WriteRegister(BK4819_REG_71, scale_freq(tone1_Hz));
|
||||||
|
|
||||||
BK4819_ExitTxMute();
|
BK4819_ExitTxMute();
|
||||||
|
|
||||||
SYSTEM_DelayMs(80);
|
SYSTEM_DelayMs(80);
|
||||||
|
|
||||||
BK4819_EnterTxMute();
|
BK4819_EnterTxMute();
|
||||||
BK4819_WriteRegister(BK4819_REG_71, 0x1C3B);
|
|
||||||
|
BK4819_WriteRegister(BK4819_REG_71, scale_freq(tone2_Hz));
|
||||||
|
|
||||||
BK4819_ExitTxMute();
|
BK4819_ExitTxMute();
|
||||||
|
|
||||||
SYSTEM_DelayMs(80);
|
SYSTEM_DelayMs(80);
|
||||||
|
|
||||||
BK4819_EnterTxMute();
|
BK4819_EnterTxMute();
|
||||||
|
|
||||||
BK4819_WriteRegister(BK4819_REG_70, 0x0000);
|
BK4819_WriteRegister(BK4819_REG_70, 0x0000);
|
||||||
BK4819_WriteRegister(BK4819_REG_30, 0xC1FE);
|
BK4819_WriteRegister(BK4819_REG_30, 0xC1FE); // 1 1 0000 0 1 1111 1 1 1 0
|
||||||
}
|
}
|
||||||
|
|
||||||
void BK4819_PlayRogerMDC(void)
|
void BK4819_PlayRogerMDC(void)
|
||||||
|
@ -151,7 +151,10 @@ void ST7565_Init(void)
|
|||||||
ST7565_WriteByte(0xA2); // bias 9
|
ST7565_WriteByte(0xA2); // bias 9
|
||||||
ST7565_WriteByte(0xC0); // com normal
|
ST7565_WriteByte(0xC0); // com normal
|
||||||
ST7565_WriteByte(0xA1); // reverse ?
|
ST7565_WriteByte(0xA1); // reverse ?
|
||||||
ST7565_WriteByte(0xA6); // normal ?
|
|
||||||
|
ST7565_WriteByte(0xA6); // normal screen ?
|
||||||
|
// ST7565_WriteByte(0xA7); // inverse screen ?
|
||||||
|
|
||||||
ST7565_WriteByte(0xA4); // all points normal
|
ST7565_WriteByte(0xA4); // all points normal
|
||||||
ST7565_WriteByte(0x24); //
|
ST7565_WriteByte(0x24); //
|
||||||
ST7565_WriteByte(0x81); // volume first ?
|
ST7565_WriteByte(0x81); // volume first ?
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
19
radio.c
19
radio.c
@ -569,21 +569,18 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
|||||||
BK4819_SetFrequency(Frequency);
|
BK4819_SetFrequency(Frequency);
|
||||||
|
|
||||||
BK4819_SetupSquelch(
|
BK4819_SetupSquelch(
|
||||||
gRxVfo->SquelchOpenRSSIThresh,
|
gRxVfo->SquelchOpenRSSIThresh, gRxVfo->SquelchCloseRSSIThresh,
|
||||||
gRxVfo->SquelchCloseRSSIThresh,
|
gRxVfo->SquelchOpenNoiseThresh, gRxVfo->SquelchCloseNoiseThresh,
|
||||||
gRxVfo->SquelchOpenNoiseThresh,
|
gRxVfo->SquelchCloseGlitchThresh, gRxVfo->SquelchOpenGlitchThresh);
|
||||||
gRxVfo->SquelchCloseNoiseThresh,
|
|
||||||
gRxVfo->SquelchCloseGlitchThresh,
|
|
||||||
gRxVfo->SquelchOpenGlitchThresh);
|
|
||||||
|
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(Frequency);
|
BK4819_PickRXFilterPathBasedOnFrequency(Frequency);
|
||||||
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, true);
|
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, true);
|
||||||
|
|
||||||
// AF Rx Gain and DAC
|
// AF Rx Gain and DAC
|
||||||
BK4819_WriteRegister(BK4819_REG_48, 0xB3A8);
|
BK4819_WriteRegister(BK4819_REG_48, 0xB3A8); // 1011 00 111010 1000
|
||||||
|
|
||||||
InterruptMask = 0 | BK4819_REG_3F_SQUELCH_FOUND | BK4819_REG_3F_SQUELCH_LOST;
|
InterruptMask = BK4819_REG_3F_SQUELCH_FOUND | BK4819_REG_3F_SQUELCH_LOST;
|
||||||
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
if (IS_NOT_NOAA_CHANNEL(gRxVfo->CHANNEL_SAVE))
|
if (IS_NOT_NOAA_CHANNEL(gRxVfo->CHANNEL_SAVE))
|
||||||
@ -681,13 +678,13 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
BK4819_EnableVox(gEeprom.VOX1_THRESHOLD, gEeprom.VOX0_THRESHOLD);
|
BK4819_EnableVox(gEeprom.VOX1_THRESHOLD, gEeprom.VOX0_THRESHOLD);
|
||||||
InterruptMask |= 0 | BK4819_REG_3F_VOX_FOUND | BK4819_REG_3F_VOX_LOST;
|
InterruptMask |= BK4819_REG_3F_VOX_FOUND | BK4819_REG_3F_VOX_LOST;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
BK4819_DisableVox();
|
BK4819_DisableVox();
|
||||||
|
|
||||||
#ifdef ENABLE_COMPANDER
|
#ifdef ENABLE_COMPANDER
|
||||||
if (gRxVfo->Compander)
|
if (gRxVfo->Compander && !gRxVfo->IsAM)
|
||||||
BK4819_EnableCompander();
|
BK4819_EnableCompander();
|
||||||
else
|
else
|
||||||
BK4819_DisableCompander();
|
BK4819_DisableCompander();
|
||||||
@ -775,7 +772,7 @@ void RADIO_SetTxParameters(void)
|
|||||||
BK4819_SetFrequency(gCurrentVfo->pTX->Frequency);
|
BK4819_SetFrequency(gCurrentVfo->pTX->Frequency);
|
||||||
|
|
||||||
#ifdef ENABLE_COMPANDER
|
#ifdef ENABLE_COMPANDER
|
||||||
if (gCurrentVfo->Compander)
|
if (gCurrentVfo->Compander && !gCurrentVfo->IsAM)
|
||||||
BK4819_EnableCompander();
|
BK4819_EnableCompander();
|
||||||
else
|
else
|
||||||
BK4819_DisableCompander();
|
BK4819_DisableCompander();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user