feat: add HRS V14 LCD variant (#7480)

Co-authored-by: Peter Feerick <5500713+pfeerick@users.noreply.github.com>
This commit is contained in:
helloradiosky
2026-07-15 13:37:05 +10:00
committed by GitHub
co-authored by Peter Feerick
parent d2609a4fe8
commit c966bee5f2
19 changed files with 468 additions and 26 deletions
+2
View File
@@ -61,6 +61,7 @@ body:
- 2.12.2
- 2.12.1
- 2.12.0
- 2.11.6
- 2.11.5
- 2.11.4
- 2.11.3
@@ -111,6 +112,7 @@ body:
- FrSky X-Lite / S / Pro
- HelloRadioSky V12
- HelloRadioSky V14
- HelloRadioSky V14LCD
- HelloRadioSky V16
- Jumper T12
- Jumper T14
+1 -1
View File
@@ -87,7 +87,7 @@ jobs:
- t12max;tx12mk2;boxer
- tx15;tx16s
- x12s;f16
- v12;v14;v16
- v14;v14lcd;v16
- x10;x10express
- x7access;x9dp2019;x9e;x9e-hall
- nb4p;st16
+1 -1
View File
@@ -53,7 +53,7 @@ jobs:
- id: color-3
target: [tx15, tx16s, x12s, f16]
- id: mixed-1
target: [v12, v14, v16, x10, x10express]
target: [v14, v14lcd, v16, x10, x10express]
- id: bw-3
target: [x7access, x9dp2019, x9e, x9e-hall]
- id: color-4
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
- tx16s
- tx16smk3
- f16
- v16
- v14;v14lcd;v16
- x10;x10express
- x12s
- x7access
+8
View File
@@ -163,6 +163,8 @@ uint32_t Boards::getFourCC(Type board)
return 0x4C78746F;
case BOARD_HELLORADIOSKY_V14:
return 0x4D78746F;
case BOARD_HELLORADIOSKY_V14LCD:
return 0x4F78746F;
case BOARD_HELLORADIOSKY_V16:
return 0x4E78746F;
default:
@@ -205,6 +207,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_RADIOMASTER_MT12:
case BOARD_RADIOMASTER_GX12:
case BOARD_HELLORADIOSKY_V14:
case BOARD_HELLORADIOSKY_V14LCD:
return EESIZE_TARANIS;
case BOARD_UNKNOWN:
return EESIZE_MAX;
@@ -263,6 +266,7 @@ int Boards::getFlashSize(Type board)
case BOARD_RADIOMASTER_POCKET:
return FSIZE_512KB;
case BOARD_HELLORADIOSKY_V14:
case BOARD_HELLORADIOSKY_V14LCD:
case BOARD_JUMPER_BUMBLEBEE:
case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14:
@@ -666,6 +670,8 @@ QString Boards::getBoardName(Board::Type board)
return "HelloRadioSky V16";
case BOARD_HELLORADIOSKY_V14:
return "HelloRadioSky V14";
case BOARD_HELLORADIOSKY_V14LCD:
return "HelloRadioSky V14LCD";
default:
return CPN_STR_UNKNOWN_ITEM;
}
@@ -772,6 +778,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_BETAFPV_LR3PRO:
case BOARD_FATFISH_F16:
case BOARD_HELLORADIOSKY_V14:
case BOARD_HELLORADIOSKY_V14LCD:
case BOARD_HELLORADIOSKY_V16:
case BOARD_RADIOMASTER_TX15:
case BOARD_RADIOMASTER_TX16SMK3:
@@ -813,6 +820,7 @@ void Boards::getBattRange(Board::Type board, int& vmin, int& vmax, unsigned int&
{
switch (board) {
case BOARD_HELLORADIOSKY_V14:
case BOARD_HELLORADIOSKY_V14LCD:
case BOARD_JUMPER_T12:
case BOARD_JUMPER_T14:
case BOARD_JUMPER_TPRO:
+7
View File
@@ -98,6 +98,7 @@ namespace Board {
BOARD_HELLORADIOSKY_V16,
BOARD_RADIOMASTER_MT12,
BOARD_HELLORADIOSKY_V14,
BOARD_HELLORADIOSKY_V14LCD,
BOARD_TYPE_COUNT,
BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1
};
@@ -659,6 +660,11 @@ inline bool IS_HELLORADIOSKY_V14(Board::Type board)
return board == Board::BOARD_HELLORADIOSKY_V14;
}
inline bool IS_HELLORADIOSKY_V14LCD(Board::Type board)
{
return board == Board::BOARD_HELLORADIOSKY_V14LCD;
}
inline bool IS_HELLORADIOSKY_V16(Board::Type board)
{
return board == Board::BOARD_HELLORADIOSKY_V16;
@@ -681,6 +687,7 @@ inline bool IS_FAMILY_T12(Board::Type board)
{
return board == Board::BOARD_BETAFPV_LR3PRO ||
board == Board::BOARD_HELLORADIOSKY_V14 ||
board == Board::BOARD_HELLORADIOSKY_V14LCD ||
board == Board::BOARD_IFLIGHT_COMMANDO8 ||
board == Board::BOARD_JUMPER_BUMBLEBEE ||
board == Board::BOARD_JUMPER_T12 ||
@@ -502,6 +502,13 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
/* HelloRadioSky V14LCD board */
firmware = new OpenTxFirmware(FIRMWAREID("v14lcd"), Firmware::tr("HelloRadioSky V14LCD"), BOARD_HELLORADIOSKY_V14LCD);
addOpenTxCommonOptions(firmware);
addOpenTxFontOptions(firmware);
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
/* HelloRadioSky V16 board */
firmware = new OpenTxFirmware(FIRMWAREID("v16"), Firmware::tr("HelloRadioSky V16"), BOARD_HELLORADIOSKY_V16);
addOpenTxFrskyOptions(firmware);
+1
View File
@@ -17,6 +17,7 @@
["FrSky X9E", "x9e-"],
["FrSky X9E Hall", "x9e-hall-"],
["HelloRadioSky V14", "v14-"],
["HelloRadioSky V14LCD", "v14lcd-"],
["HelloRadioSky V16", "v16-"],
["iFlight Commando 8", "commando8-"],
["Jumper Bumblebee", "bumblebee-"],
+397
View File
@@ -0,0 +1,397 @@
{
"adc_inputs": {
"adcs": [
{
"name": "MAIN",
"adc": "ADC1",
"dma": "DMA2",
"dma_channel": "LL_DMA_CHANNEL_0",
"dma_stream": "LL_DMA_STREAM_4",
"dma_stream_irq": "DMA2_Stream4_IRQn",
"dma_stream_irq_handler": "DMA2_Stream4_IRQHandler",
"sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES"
},
{
"name": "EXT",
"adc": "ADC3",
"dma": "DMA2",
"dma_channel": "LL_DMA_CHANNEL_2",
"dma_stream": "LL_DMA_STREAM_0",
"dma_stream_irq": "DMA2_Stream0_IRQn",
"dma_stream_irq_handler": "DMA2_Stream0_IRQHandler",
"sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES"
}
],
"inputs": [
{
"name": "LH",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_2",
"channel": "LL_ADC_CHANNEL_2"
},
{
"name": "LV",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_3",
"channel": "LL_ADC_CHANNEL_3",
"inverted": true
},
{
"name": "RV",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_0",
"channel": "LL_ADC_CHANNEL_0"
},
{
"name": "RH",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_1",
"channel": "LL_ADC_CHANNEL_1",
"inverted": true
},
{
"name": "P1",
"type": "FLEX",
"adc": "MAIN",
"gpio": "GPIOB",
"pin": "LL_GPIO_PIN_0",
"channel": "LL_ADC_CHANNEL_8",
"inverted": true,
"label": "S1",
"short_label": "1",
"default": "POT_CENTER"
},
{
"name": "P2",
"type": "FLEX",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_6",
"channel": "LL_ADC_CHANNEL_6",
"inverted": true,
"label": "S2",
"short_label": "2",
"default": "POT_CENTER"
},
{
"name": "P3",
"type": "FLEX",
"adc": "EXT",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_2",
"channel": "LL_ADC_CHANNEL_12",
"label": "S3",
"short_label": "3",
"default": "MULTIPOS"
},
{
"name": "RTC_BAT",
"type": "RTC_BAT",
"adc": "MAIN",
"gpio": null,
"pin": null,
"channel": "LL_ADC_CHANNEL_VBAT"
},
{
"name": "SWB",
"type": "SWITCH",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_5",
"channel": "LL_ADC_CHANNEL_5"
},
{
"name": "SWC",
"type": "SWITCH",
"adc": "MAIN",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_0",
"channel": "LL_ADC_CHANNEL_10"
},
{
"name": "SWE",
"type": "SWITCH",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_7",
"channel": "LL_ADC_CHANNEL_7"
},
{
"name": "SWF",
"type": "SWITCH",
"adc": "MAIN",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_5",
"channel": "LL_ADC_CHANNEL_15"
}
]
},
"switches": [
{
"name": "SA",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": [
0,
0
],
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_13",
"is_cfs": false
},
{
"name": "SB",
"type": "ADC",
"flags": 0,
"inverted": false,
"default": "3POS",
"display": [
0,
1
],
"adc_input": "SWB",
"is_cfs": false
},
{
"name": "SC",
"type": "ADC",
"flags": 0,
"inverted": false,
"default": "3POS",
"display": [
1,
0
],
"adc_input": "SWC",
"is_cfs": false
},
{
"name": "SD",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": [
1,
1
],
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_8",
"is_cfs": false
},
{
"name": "SE",
"type": "ADC",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": [
0,
2
],
"adc_input": "SWE",
"is_cfs": false
},
{
"name": "SF",
"type": "ADC",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": [
1,
2
],
"adc_input": "SWF",
"is_cfs": false
}
],
"keys": [
{
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_1",
"active_low": true,
"key": "KEY_EXIT",
"name": "EXIT",
"label": "EXIT"
},
{
"gpio": "GPIOD",
"pin": "LL_GPIO_PIN_11",
"active_low": true,
"key": "KEY_ENTER",
"name": "ENTER",
"label": "Enter"
},
{
"gpio": "GPIOD",
"pin": "LL_GPIO_PIN_3",
"active_low": true,
"key": "KEY_PAGEUP",
"name": "PAGEUP",
"label": "PAGE<"
},
{
"gpio": "GPIOD",
"pin": "LL_GPIO_PIN_7",
"active_low": true,
"key": "KEY_PAGEDN",
"name": "PAGEDN",
"label": "PAGE>"
},
{
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_11",
"active_low": true,
"key": "KEY_MODEL",
"name": "MDL",
"label": "MDL"
},
{
"gpio": "GPIOD",
"pin": "LL_GPIO_PIN_2",
"active_low": true,
"key": "KEY_TELE",
"name": "TELE",
"label": "TELE"
},
{
"gpio": "GPIOB",
"pin": "LL_GPIO_PIN_4",
"active_low": true,
"key": "KEY_SYS",
"name": "SYS",
"label": "SYS"
}
],
"trims": [
{
"name": "T1",
"dec": {
"gpio": "GPIOD",
"pin": "LL_GPIO_PIN_15",
"active_low": true
},
"inc": {
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_1",
"active_low": true
},
"active_low": true
},
{
"name": "T2",
"dec": {
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_6",
"active_low": true
},
"inc": {
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_5",
"active_low": true
},
"active_low": true
},
{
"name": "T3",
"dec": {
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_3",
"active_low": true
},
"inc": {
"gpio": "GPIOD",
"pin": "LL_GPIO_PIN_0",
"active_low": true
},
"active_low": true
},
{
"name": "T4",
"dec": {
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_3",
"active_low": true
},
"inc": {
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_4",
"active_low": true
},
"active_low": true
}
],
"display": {
"lcd_w": 128,
"lcd_h": 64,
"lcd_phys_w": 128,
"lcd_phys_h": 64,
"lcd_depth": 1,
"lcd_horizontal_invert": true
},
"backlight": {
"backlight_bdtr": "TIM_BDTR_MOE"
},
"leds": {
"led_strip_length": 38,
"bling_led_strip_start": 6,
"bling_led_strip_length": 32,
"led_strip_gpio": "GPIO_PIN(GPIOA, 10)",
"led_strip_gpio_af": "LL_GPIO_AF_1",
"led_strip_timer": "TIM1",
"led_strip_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)",
"led_strip_timer_channel": "LL_TIM_CHANNEL_CH3",
"led_strip_timer_dma": "DMA2",
"led_strip_timer_dma_channel": "LL_DMA_CHANNEL_6",
"led_strip_timer_dma_stream": "LL_DMA_STREAM_5",
"led_strip_timer_dma_irqn": "DMA2_Stream5_IRQn",
"led_strip_timer_dma_irqhandler": "DMA2_Stream5_IRQHandler",
"led_strip_refresh_period": 50,
"status_leds": true,
"led_red_gpio": "GPIO_PIN(GPIOE, 13)",
"led_green_gpio": "GPIO_PIN(GPIOE, 14)",
"led_blue_gpio": "GPIO_PIN(GPIOE, 2)"
},
"hardware": {
"has_ext_module_support": true,
"has_int_module_support": true,
"sport_max_baudrate": 400000,
"cpu": "STM32F407xG",
"cpu_type": "STM32F4"
},
"timers": {
"cpu_freq": 168000000,
"peri1_frequency": 42000000,
"peri2_frequency": 84000000,
"timer_mult_apb1": 2,
"timer_mult_apb2": 2,
"ms_timer": "TIM14",
"ms_timer_irqn": "TIM8_TRG_COM_TIM14_IRQn",
"ms_timer_irqhandler": "TIM8_TRG_COM_TIM14_IRQHandler",
"mixer_scheduler_timer": "TIM12",
"mixer_scheduler_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)",
"mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn",
"mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler"
},
"haptic": {
"haptic_pwm": true,
"haptic_gpio": "GPIO_PIN(GPIOB, 3)",
"haptic_gpio_af": "GPIO_AF1",
"haptic_timer": "TIM2",
"haptic_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)",
"haptic_counter_register": "HAPTIC_TIMER->CCR2",
"haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2",
"haptic_ccer": "TIM_CCER_CC2E"
}
}
+6 -2
View File
@@ -373,11 +373,15 @@ elseif(PCB STREQUAL X7)
if (NOT BLUETOOTH)
set(AUX_SERIAL ON)
endif()
elseif(PCBREV STREQUAL V14)
elseif(PCBREV STREQUAL V14 OR PCBREV STREQUAL V14LCD)
set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module")
set(INTERNAL_MODULE_SERIAL YES)
set(MODULE_SIZE_STD YES)
set(FLAVOUR v14)
if(PCBREV STREQUAL V14LCD)
set(FLAVOUR v14lcd)
else()
set(FLAVOUR v14)
endif()
set(CPU_TYPE_FULL STM32F407xG)
set(ROTARY_ENCODER YES)
set(USB_CHARGER YES)
+15 -15
View File
@@ -104,7 +104,7 @@
#define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 5
#endif
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_GX12)
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12) || defined(RADIO_GX12)
#define ROTARY_ENCODER_NAVIGATION
#define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.9
@@ -125,7 +125,7 @@
#define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 5
#endif
#if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12)
#if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12)
#define ROTARY_ENCODER_INVERTED
#endif
#endif
@@ -137,7 +137,7 @@
#endif
// 6POS SW
#if defined(RADIO_V14) || defined(RADIO_V12)
#if defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12)
#define SIXPOS_SWITCH_INDEX 6
#define SIXPOS_LED_RED 200
#define SIXPOS_LED_GREEN 0
@@ -192,7 +192,7 @@
#define ADC_VREF_PREC2 330
#elif defined(RADIO_GX12)
#define ADC_VREF_PREC2 330
#elif defined(RADIO_V12) || defined(RADIO_V14)
#elif defined(RADIO_V12) || defined(RADIO_V14) || defined(RADIO_V14LCD)
#define ADC_VREF_PREC2 330
#elif defined(PCBX7)
#define ADC_VREF_PREC2 330
@@ -220,7 +220,7 @@
#elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE)
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOG, 5) // PG.05
#define PWR_ON_GPIO GPIO_PIN(GPIOG, 6) // PG.06
#elif defined(RADIO_V14) || defined(RADIO_V12)
#elif defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12)
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOD, 1) // PD.01
#define PWR_ON_GPIO GPIO_PIN(GPIOB, 2) // PB.02
#else
@@ -263,7 +263,7 @@
#endif
// Switches with LEDs
#if defined(RADIO_V14)
#if defined(RADIO_V14) || defined(RADIO_V14LCD)
#define SALED_PWR_GPIO GPIO_PIN(GPIOC, 13) // PD.14
#define SALED_PWR_ON() gpio_set(SALED_PWR_GPIO)
#define SDLED_PWR_GPIO GPIO_PIN(GPIOE, 8) // PD.14
@@ -316,7 +316,7 @@
#define INTMODULE_DMA_STREAM_IRQ DMA2_Stream7_IRQn
#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler
#define INTMODULE_DMA_CHANNEL LL_DMA_CHANNEL_4
#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_GX12) || defined(RADIO_BUMBLEBEE)
#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12) || defined(RADIO_GX12) || defined(RADIO_BUMBLEBEE)
#if defined(RADIO_T20V2) || defined(RADIO_BUMBLEBEE)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 6) // PC.06
@@ -328,7 +328,7 @@
#endif
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 4) // PC.04
#endif
#if defined(RADIO_V14) || defined(RADIO_V12)
#if defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12)
#define INTMODULE_BOOTCMD_DEFAULT 1 // RESET
#else
#define INTMODULE_BOOTCMD_DEFAULT 0 // RESET
@@ -413,8 +413,8 @@
#endif
// External Module
#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019) || defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_T12MAX) || defined(RADIO_GX12)
#if defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS) || defined(RADIO_ZORRO)|| defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12)|| defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V12)
#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019) || defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12) || defined(RADIO_T12MAX) || defined(RADIO_GX12)
#if defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS) || defined(RADIO_ZORRO)|| defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12)|| defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12)
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOD, 8) // PD.08
#elif defined(PCBX9LITE)
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOA, 8) // PA.08
@@ -447,7 +447,7 @@
#define EXTMODULE_USART_TX_DMA_STREAM LL_DMA_STREAM_6
#define EXTMODULE_USART_RX_DMA_CHANNEL LL_DMA_CHANNEL_5
#define EXTMODULE_USART_RX_DMA_STREAM LL_DMA_STREAM_1
#if defined(RADIO_V14) || defined(RADIO_V12)
#if defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12)
#define EXTMODULE_TX_INVERT_GPIO GPIO_PIN(GPIOE, 7) // PE.07
#define EXTMODULE_RX_INVERT_GPIO GPIO_PIN(GPIOE, 15) // PE.15
#endif
@@ -563,7 +563,7 @@
#else
#define TELEMETRY_SET_INPUT 0
#endif
#if defined(RADIO_V14) || defined(RADIO_V12)
#if defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12)
#define TELEMETRY_RX_REV_GPIO GPIO_PIN(GPIOE, 0) // PE.00
#define TELEMETRY_TX_REV_GPIO GPIO_PIN(GPIOE, 0) // PE.00
#endif
@@ -688,7 +688,7 @@
#if defined(PCBX9LITE) || defined(PCBXLITE) || defined(RADIO_X9DP2019) || \
defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || \
defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) ||\
defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12) \
defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_V12) \
|| defined(RADIO_GX12)
#define TRAINER_MODULE_CPPM_TIMER TIM3
#define TRAINER_MODULE_CPPM_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
@@ -852,7 +852,7 @@
#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(PCBX7ACCESS) || \
defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_X9DP2019) || \
defined(RADIO_GX12) || defined(RADIO_V12) || defined(RADIO_V14)
defined(RADIO_GX12) || defined(RADIO_V12) || defined(RADIO_V14) || defined(RADIO_V14LCD)
#define I2C_B1_SCL_GPIO GPIO_PIN(GPIOB, 8) // PB.08
#define I2C_B1_SDA_GPIO GPIO_PIN(GPIOB, 9) // PB.09
#else
@@ -975,7 +975,7 @@
#endif
#endif
#if defined(RADIO_BOXER) || defined(RADIO_FAMILY_T20) || defined(RADIO_X9DP2019) || defined (RADIO_V14) || defined(RADIO_GX12)
#if defined(RADIO_BOXER) || defined(RADIO_FAMILY_T20) || defined(RADIO_X9DP2019) || defined (RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_GX12)
// Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART UART4
#define FLYSKY_HALL_SERIAL_GPIO GPIOA
+3 -3
View File
@@ -37,7 +37,7 @@
#if OLED_SCREEN
#define LCD_CONTRAST_OFFSET 0
#elif defined(RADIO_FAMILY_JUMPER_T12) || defined(MANUFACTURER_RADIOMASTER) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_T12MAX) || defined(RADIO_V12) || defined(RADIO_V14)
#elif defined(RADIO_FAMILY_JUMPER_T12) || defined(MANUFACTURER_RADIOMASTER) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_T12MAX) || defined(RADIO_V12) || defined(RADIO_V14) || defined(RADIO_V14LCD)
#define LCD_CONTRAST_OFFSET -10
#else
#define LCD_CONTRAST_OFFSET 160
@@ -191,7 +191,7 @@ void lcdStart()
lcdWriteCommand(0xa6); // Set display mode
#endif
#else
#if defined(RADIO_V14)
#if defined(RADIO_V14) || defined(RADIO_V14LCD)
lcdWriteCommand(0xe2); // (14) Soft reset
lcdWriteCommand(0xa1); // Set seg
lcdWriteCommand(0xc0); // Set com
@@ -453,7 +453,7 @@ void lcdSetRefVolt(uint8_t val)
WAIT_FOR_DMA_END();
#endif
#if defined(RADIO_V12) || defined(RADIO_V14)
#if defined(RADIO_V12) || defined(RADIO_V14) || defined(RADIO_V14LCD)
lcdWriteCommand(0x81); // Set Vop
lcdWriteCommand(val+LCD_CONTRAST_OFFSET+20);// 0-255
#else
@@ -101,6 +101,10 @@
#define USB_NAME "HelloRadioSky V14"
#define USB_MANUFACTURER 'H', 'R', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'V', '1', '4', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
#elif defined(RADIO_V14LCD)
#define USB_NAME "HelloRadioSky V14LCD"
#define USB_MANUFACTURER 'H', 'R', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'V', '1', '4', 'L', 'C', 'D', ' ', ' ' /* 8 Bytes */
#else
#define USB_NAME "FrSky Taranis"
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
+5
View File
@@ -209,6 +209,11 @@ def main():
cmake_options["PCBREV"] = "V14"
firmware_options = options_helloradiosky_v14
maxsize = 65536 * 8 * 2
elif board_name == "v14lcd":
cmake_options["PCB"] = "X7"
cmake_options["PCBREV"] = "V14LCD"
firmware_options = options_helloradiosky_v14
maxsize = 65536 * 8 * 2
elif board_name == "v16":
cmake_options["PCB"] = "X10"
cmake_options["PCBREV"] = "V16"
+1 -1
View File
@@ -776,7 +776,7 @@ LEGACY_NAMES = [
}
},
{
"targets": {"v12", "v14"},
"targets": {"v12", "v14", "v14lcd"},
"inputs": {
"LH": {
"yaml": "Rud",
+4
View File
@@ -76,6 +76,10 @@ boards = {
"PCB": "X7",
"PCBREV": "V14",
},
"V14LCD": {
"PCB": "X7",
"PCBREV": "V14LCD",
},
"V16": {
"PCB": "X10",
"PCBREV": "V16",
+3
View File
@@ -137,6 +137,9 @@ get_target_build_options() {
v14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=V14"
;;
v14lcd)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=V14LCD"
;;
v16)
BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=V16"
;;
+1 -1
View File
@@ -223,7 +223,7 @@ else
boxer bumblebee commando8
gx12 mt12 pocket t12max
t14 t20 t20v2 tpros tprov2
tx12mk2 zorro v12 v14
tx12mk2 zorro v12 v14 v14lcd
x7access x9dp2019 x9e
# colour
el18 nb4p nv14 st16 pa01
+1 -1
View File
@@ -9,7 +9,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
: "${SRCDIR:=$(dirname "$(pwd)/$0")/..}"
: ${FLAVOR:="nv14;el18;pl18;pl18ev;pl18u;nb4p;st16;pa01;t12;t12max;t15;t15pro;t22;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;tx16smk3;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v16;v14;v12;tx15"}
: ${FLAVOR:="nv14;el18;pl18;pl18ev;pl18u;nb4p;st16;pa01;t12;t12max;t15;t15pro;t22;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;tx16smk3;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v16;v14;v14lcd;v12;tx15"}
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}
# wipe build directory clean