1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-25 17:25:10 +03:00

feat: preliminary HelloRadioSky V14 and V12 radio support (#5494)

This commit is contained in:
richardclli 2024-09-11 15:52:35 +08:00 committed by GitHub
parent 6e706c4b1c
commit b78da3436e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 375 additions and 46 deletions

View file

@ -20,6 +20,8 @@
["FrSky X9 Lite S", "x9lites-"], ["FrSky X9 Lite S", "x9lites-"],
["FrSky X-Lite", "xlite-"], ["FrSky X-Lite", "xlite-"],
["FrSky X-Lite S", "xlites-"], ["FrSky X-Lite S", "xlites-"],
["HelloRadioSky V12", "v12-"],
["HelloRadioSky V14", "v14-"],
["HelloRadioSky V16", "v16-"], ["HelloRadioSky V16", "v16-"],
["iFlight Commando 8", "commando8-"], ["iFlight Commando 8", "commando8-"],
["Jumper T12", "t12-"], ["Jumper T12", "t12-"],

View file

@ -358,6 +358,39 @@ elseif(PCB STREQUAL X7)
set(BLUETOOTH YES) set(BLUETOOTH YES)
set(ROTARY_ENCODER YES) set(ROTARY_ENCODER YES)
add_definitions(-DMANUFACTURER_FRSKY) add_definitions(-DMANUFACTURER_FRSKY)
elseif(PCBREV STREQUAL V12)
set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module")
set(INTERNAL_MODULE_SERIAL YES)
set(MODULE_SIZE_STD YES)
set(FLAVOUR v12)
set(NAVIGATION_TYPE x7)
set(CPU_TYPE_FULL STM32F407xG)
set(ROTARY_ENCODER YES)
set(USB_CHARGER YES)
add_definitions(-DRADIO_V12)
add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS)
set(PXX2 ON)
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
if (NOT BLUETOOTH)
set(AUX_SERIAL ON)
endif()
elseif(PCBREV STREQUAL V14)
set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module")
set(INTERNAL_MODULE_SERIAL YES)
set(MODULE_SIZE_STD YES)
set(FLAVOUR v14)
set(NAVIGATION_TYPE x7)
set(CPU_TYPE_FULL STM32F407xG)
set(ROTARY_ENCODER YES)
set(USB_CHARGER YES)
add_definitions(-DRADIO_V14)
add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS)
set(PXX2 ON)
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
set(FLYSKY_GIMBAL ON)
if (NOT BLUETOOTH)
set(AUX_SERIAL ON)
endif()
else() else()
set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module")
set(FLAVOUR x7) set(FLAVOUR x7)

View file

@ -61,12 +61,54 @@
HardwareOptions hardwareOptions; HardwareOptions hardwareOptions;
#if defined(LED_STRIP_GPIO)
extern const stm32_pulse_timer_t _led_timer;
#endif
#if !defined(BOOT) #if !defined(BOOT)
#if defined(FUNCTION_SWITCHES) #if defined(FUNCTION_SWITCHES)
#include "storage/storage.h" #include "storage/storage.h"
#endif #endif
#if defined(SIXPOS_SWITCH_INDEX)
uint8_t lastADCState = 0;
uint8_t sixPosState = 0;
bool dirty = true;
uint16_t getSixPosAnalogValue(uint16_t adcValue)
{
uint8_t currentADCState = 0;
if (adcValue > 3800)
currentADCState = 6;
else if (adcValue > 3100)
currentADCState = 5;
else if (adcValue > 2300)
currentADCState = 4;
else if (adcValue > 1500)
currentADCState = 3;
else if (adcValue > 1000)
currentADCState = 2;
else if (adcValue > 400)
currentADCState = 1;
if (lastADCState != currentADCState) {
lastADCState = currentADCState;
} else if (lastADCState != 0 && lastADCState - 1 != sixPosState) {
sixPosState = lastADCState - 1;
dirty = true;
}
if (dirty) {
for (uint8_t i = 0; i < 6; i++) {
if (i == sixPosState)
ws2812_set_color(i, SIXPOS_LED_RED, SIXPOS_LED_GREEN, SIXPOS_LED_BLUE);
else
ws2812_set_color(i, 0, 0, 0);
}
ws2812_update(&_led_timer);
}
return (4096/5)*(sixPosState);
}
#endif
void boardInit() void boardInit()
{ {
LL_APB1_GRP1_EnableClock(AUDIO_RCC_APB1Periph); LL_APB1_GRP1_EnableClock(AUDIO_RCC_APB1Periph);
@ -182,8 +224,6 @@ void boardInit()
usbInit(); usbInit();
#if defined(LED_STRIP_GPIO) #if defined(LED_STRIP_GPIO)
extern const stm32_pulse_timer_t _led_timer;
ws2812_init(&_led_timer, LED_STRIP_LENGTH, WS2812_GRB); ws2812_init(&_led_timer, LED_STRIP_LENGTH, WS2812_GRB);
for (uint8_t i = 0; i < LED_STRIP_LENGTH; i++) { for (uint8_t i = 0; i < LED_STRIP_LENGTH; i++) {
ws2812_set_color(i, 0, 0, 50); ws2812_set_color(i, 0, 0, 50);

View file

@ -304,6 +304,10 @@ void usbChargerInit();
bool usbChargerLed(); bool usbChargerLed();
#endif #endif
#if defined(RADIO_V14) || defined(RADIO_V12)
uint16_t getSixPosAnalogValue(uint16_t adcValue);
#endif
// LED driver // LED driver
void ledInit(); void ledInit();
void ledOff(); void ledOff();

View file

@ -93,9 +93,9 @@
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET)
#if defined(RADIO_MT12) #if defined(RADIO_MT12)
#define KEYS_GPIO_REG_PAGEUP GPIOD #define KEYS_GPIO_REG_PAGEUP GPIOD
#define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PD.03 #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PD.07
#define KEYS_GPIO_REG_PAGEDN GPIOD #define KEYS_GPIO_REG_PAGEDN GPIOD
#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.07 #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03
#else #else
#define KEYS_GPIO_REG_PAGEUP GPIOD #define KEYS_GPIO_REG_PAGEUP GPIOD
#define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_3 // PD.03 #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_3 // PD.03
@ -178,6 +178,21 @@
#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02
#define KEYS_GPIO_REG_ENTER GPIOA #define KEYS_GPIO_REG_ENTER GPIOA
#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PA.13 #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PA.13
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define KEYS_GPIO_REG_PAGEUP GPIOD
#define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_3 // PD.03
#define KEYS_GPIO_REG_PAGEDN GPIOD
#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_7 // PD.07
#define KEYS_GPIO_REG_EXIT GPIOE
#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_1 // PE.01
#define KEYS_GPIO_REG_ENTER GPIOD
#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_11 // PD.11
#define KEYS_GPIO_REG_SYS GPIOB
#define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_4 // PB.04
#define KEYS_GPIO_REG_MDL GPIOE
#define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_11 // PE.11
#define KEYS_GPIO_REG_TELE GPIOD
#define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_2 // PD.02
#elif defined(PCBX7) #elif defined(PCBX7)
#define KEYS_GPIO_REG_PAGEDN GPIOD #define KEYS_GPIO_REG_PAGEDN GPIOD
#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03
@ -290,7 +305,7 @@
#define USE_EXTI15_10_IRQ #define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 5 #define EXTI15_10_IRQ_Priority 5
#endif #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) #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)
#define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_NAVIGATION
#define ROTARY_ENCODER_GPIO GPIOE #define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.9 #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.9
@ -311,7 +326,7 @@
#define USE_EXTI15_10_IRQ #define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 5 #define EXTI15_10_IRQ_Priority 5
#endif #endif
#if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_TPROS) #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)
#define ROTARY_ENCODER_INVERTED #define ROTARY_ENCODER_INVERTED
#endif #endif
#endif #endif
@ -461,6 +476,23 @@
#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_5 // PE.05 #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_5 // PE.05
#define TRIMS_GPIO_REG_RHR GPIOC #define TRIMS_GPIO_REG_RHR GPIOC
#define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PC.01 #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PC.01
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define TRIMS_GPIO_REG_LHL GPIOD
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15
#define TRIMS_GPIO_REG_LHR GPIOC
#define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_1 // PC.01
#define TRIMS_GPIO_REG_LVD GPIOE
#define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06
#define TRIMS_GPIO_REG_LVU GPIOE
#define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_5 // PE.05
#define TRIMS_GPIO_REG_RVD GPIOC
#define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03
#define TRIMS_GPIO_REG_RHL GPIOE
#define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_3 // PE.03
#define TRIMS_GPIO_REG_RVU GPIOD
#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_0 // PD.00
#define TRIMS_GPIO_REG_RHR GPIOE
#define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PE.04
#elif defined(PCBX7) && !defined(RADIO_COMMANDO8) #elif defined(PCBX7) && !defined(RADIO_COMMANDO8)
#define TRIMS_GPIO_REG_LHL GPIOD #define TRIMS_GPIO_REG_LHL GPIOD
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15 #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15
@ -604,6 +636,8 @@
#define SWITCHES_A_INVERTED #define SWITCHES_A_INVERTED
#define SWITCHES_GPIO_REG_A GPIOD #define SWITCHES_GPIO_REG_A GPIOD
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_0 // PD.00 #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_0 // PD.00
#elif defined(RADIO_V14) || defined(RADIO_V12)
// ADC based switch
#elif defined(PCBX7) #elif defined(PCBX7)
#define STORAGE_SWITCH_A #define STORAGE_SWITCH_A
#define HARDWARE_SWITCH_A #define HARDWARE_SWITCH_A
@ -692,6 +726,8 @@
#define HARDWARE_SWITCH_B #define HARDWARE_SWITCH_B
#define SWITCHES_GPIO_REG_B GPIOD #define SWITCHES_GPIO_REG_B GPIOD
#define SWITCHES_GPIO_PIN_B LL_GPIO_PIN_11 // PD.11 #define SWITCHES_GPIO_PIN_B LL_GPIO_PIN_11 // PD.11
#elif defined(RADIO_V14) || defined(RADIO_V12)
// ADC based switch
#elif defined(PCBX7) #elif defined(PCBX7)
#define STORAGE_SWITCH_B #define STORAGE_SWITCH_B
#define HARDWARE_SWITCH_B #define HARDWARE_SWITCH_B
@ -729,7 +765,7 @@
#define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PE.02 #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PE.02
#define SWITCHES_GPIO_REG_C_H GPIOE #define SWITCHES_GPIO_REG_C_H GPIOE
#define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_3 // PE.03 #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_3 // PE.03
#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) #elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER)
#define STORAGE_SWITCH_C #define STORAGE_SWITCH_C
#define HARDWARE_SWITCH_C #define HARDWARE_SWITCH_C
#define SWITCHES_GPIO_REG_C_L GPIOE #define SWITCHES_GPIO_REG_C_L GPIOE
@ -793,6 +829,8 @@
#define HARDWARE_SWITCH_C #define HARDWARE_SWITCH_C
#define SWITCHES_GPIO_REG_C GPIOC #define SWITCHES_GPIO_REG_C GPIOC
#define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_13 // PC.13 #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_13 // PC.13
#elif defined(RADIO_V14) || defined(RADIO_V12)
// ADC based switch
#elif defined(PCBX7) #elif defined(PCBX7)
#define STORAGE_SWITCH_C #define STORAGE_SWITCH_C
#define HARDWARE_SWITCH_C #define HARDWARE_SWITCH_C
@ -879,6 +917,8 @@
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D GPIOC #define SWITCHES_GPIO_REG_D GPIOC
#define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_3 // PC.03 #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_3 // PC.03
#elif defined(RADIO_V14) || defined(RADIO_V12)
// ADC based switch
#elif defined(PCBX7) && !defined(RADIO_COMMANDO8) #elif defined(PCBX7) && !defined(RADIO_COMMANDO8)
#define STORAGE_SWITCH_D #define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
@ -978,6 +1018,11 @@
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PD.03 #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PD.03
#elif defined(RADIO_MT12) #elif defined(RADIO_MT12)
// ADC based switch/pot // ADC based switch/pot
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define STORAGE_SWITCH_E
#define HARDWARE_SWITCH_E
#define SWITCHES_GPIO_REG_E GPIOC
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_13 // PC.13
#elif defined(PCBX7) #elif defined(PCBX7)
// no SWE // no SWE
#else #else
@ -1060,6 +1105,11 @@
#define STORAGE_SWITCH_F #define STORAGE_SWITCH_F
#elif defined(RADIO_T12) #elif defined(RADIO_T12)
// no SWF // no SWF
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define STORAGE_SWITCH_F
#define HARDWARE_SWITCH_F
#define SWITCHES_GPIO_REG_F GPIOE
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_8 // PE.08
#elif defined(PCBX7) #elif defined(PCBX7)
#define STORAGE_SWITCH_F #define STORAGE_SWITCH_F
#define HARDWARE_SWITCH_F #define HARDWARE_SWITCH_F
@ -1089,7 +1139,7 @@
#define HARDWARE_SWITCH_G #define HARDWARE_SWITCH_G
#define SWITCHES_GPIO_REG_G GPIOE #define SWITCHES_GPIO_REG_G GPIOE
#define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_14 // PE.14 #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_14 // PE.14
#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) #elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_V14) || defined(RADIO_V12)
#define STORAGE_SWITCH_G #define STORAGE_SWITCH_G
#elif defined(RADIO_TPROV2) #elif defined(RADIO_TPROV2)
#define STORAGE_SWITCH_G #define STORAGE_SWITCH_G
@ -1136,7 +1186,7 @@
#define STORAGE_SWITCH_H #define STORAGE_SWITCH_H
// no SWH // no SWH
#elif defined(RADIO_TX12) || defined(RADIO_MT12) #elif defined(RADIO_TX12) || defined(RADIO_MT12)
#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_T14) || defined(RADIO_T12MAX) #elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12)
#define STORAGE_SWITCH_H #define STORAGE_SWITCH_H
#elif defined(RADIO_TPROV2) #elif defined(RADIO_TPROV2)
#define STORAGE_SWITCH_H #define STORAGE_SWITCH_H
@ -1200,7 +1250,7 @@
#define HARDWARE_SWITCH_J #define HARDWARE_SWITCH_J
#define SWITCHES_GPIO_REG_J GPIOD #define SWITCHES_GPIO_REG_J GPIOD
#define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_14 // PD.14 #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_14 // PD.14
#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_V14) || defined(RADIO_V12)
// no headers // no headers
#elif defined(RADIO_TLITE) || defined(RADIO_LR3PRO) #elif defined(RADIO_TLITE) || defined(RADIO_LR3PRO)
// no SWI // no SWI
@ -1395,6 +1445,14 @@
#define SWITCHES_GPIO_PIN_R_L LL_GPIO_PIN_0 // PE.00 #define SWITCHES_GPIO_PIN_R_L LL_GPIO_PIN_0 // PE.00
#endif #endif
// 6POS SW
#if defined(RADIO_V14) || defined(RADIO_V12)
#define SIXPOS_SWITCH_INDEX 6
#define SIXPOS_LED_RED 255
#define SIXPOS_LED_GREEN 255
#define SIXPOS_LED_BLUE 255
#endif
// ADC // ADC
#if !defined(RADIO_FAMILY_T20) #if !defined(RADIO_FAMILY_T20)
#define ADC_MAIN ADC1 #define ADC_MAIN ADC1
@ -1715,6 +1773,33 @@
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_TH | ADC_GPIO_PIN_STICK_ST | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_POT4) #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_TH | ADC_GPIO_PIN_STICK_ST | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_POT4)
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_BATT) #define ADC_GPIOC_PINS (ADC_GPIO_PIN_BATT)
#define ADC_VREF_PREC2 330 #define ADC_VREF_PREC2 330
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00
#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01
#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02
#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03
#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC123_IN0 -> ADC1_IN0
#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC123_IN1 -> ADC1_IN1
#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2
#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC1_IN3
#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00
#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_6 // PA.06
#define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_2 // PC.02
#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 // ADC12_IN8 -> ADC1_IN8
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6
#define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_12 // ADC123_IN12 -> ADC1_IN12
#define ADC_GPIO_PIN_SWA LL_GPIO_PIN_7 // PA.07
#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_5 // PA.05
#define ADC_GPIO_PIN_SWC LL_GPIO_PIN_0 // PC.00
#define ADC_GPIO_PIN_SWD LL_GPIO_PIN_5 // PC.05
#define ADC_CHANNEL_SWA LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7
#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5
#define ADC_CHANNEL_SWC LL_ADC_CHANNEL_10 // ADC123_IN10 -> ADC1_IN10
#define ADC_CHANNEL_SWD LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SWA | ADC_GPIO_PIN_SWB)
#define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT1)
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SWC | ADC_GPIO_PIN_SWD)
#define ADC_VREF_PREC2 330
#elif defined(PCBX7) #elif defined(PCBX7)
#define HARDWARE_POT1 #define HARDWARE_POT1
#define HARDWARE_POT2 #define HARDWARE_POT2
@ -1731,7 +1816,7 @@
#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_6 // PA.06 #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_6 // PA.06
#endif #endif
#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00
#if defined(RADIO_BOXER) #if defined(RADIO_BOXER) || defined(RADIO_V14) || defined(RADIO_V12)
#define HARDWARE_POT3 // 6 POS #define HARDWARE_POT3 // 6 POS
#define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_5 // PA.05 #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_5 // PA.05
#define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_5 #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_5
@ -1821,6 +1906,10 @@
#define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1} #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1}
#elif defined(RADIO_MT12) #elif defined(RADIO_MT12)
#define ADC_DIRECTION {1,-1, -1,-1, 0, 0, 0, 0} #define ADC_DIRECTION {1,-1, -1,-1, 0, 0, 0, 0}
#elif defined(RADIO_V14)
#define ADC_DIRECTION {1,-1,1,-1, -1,-1,1, 0, 1,1,1,1 }
#elif defined(RADIO_V12)
#define ADC_DIRECTION {1,-1,1,-1, -1,-1,1, 0, 1,1,1,1 }
#elif defined(PCBX7) #elif defined(PCBX7)
#define ADC_DIRECTION {-1,1,-1,1, 1,1, 1, 1} #define ADC_DIRECTION {-1,1,-1,1, 1,1, 1, 1}
#elif defined(PCBX9LITE) #elif defined(PCBX9LITE)
@ -1843,6 +1932,9 @@
#elif defined(RADIO_FAMILY_T20) #elif defined(RADIO_FAMILY_T20)
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOG, 5) // PG.05 #define PWR_SWITCH_GPIO GPIO_PIN(GPIOG, 5) // PG.05
#define PWR_ON_GPIO GPIO_PIN(GPIOG, 6) // PG.06 #define PWR_ON_GPIO GPIO_PIN(GPIOG, 6) // PG.06
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOD, 1) // PD.01
#define PWR_ON_GPIO GPIO_PIN(GPIOB, 2) // PB.02
#else #else
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOD, 1) // PD.01 #define PWR_SWITCH_GPIO GPIO_PIN(GPIOD, 1) // PD.01
#define PWR_ON_GPIO GPIO_PIN(GPIOD, 0) // PD.00 #define PWR_ON_GPIO GPIO_PIN(GPIOD, 0) // PD.00
@ -1921,6 +2013,13 @@
#define LED_GREEN_GPIO GPIO_PIN(GPIOA, 7) // PA.07 #define LED_GREEN_GPIO GPIO_PIN(GPIOA, 7) // PA.07
#define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13 #define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 2) // PE.02 #define LED_BLUE_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 14) // PE.14
#define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#elif defined(PCBX7) #elif defined(PCBX7)
#define STATUS_LEDS #define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set #define GPIO_LED_GPIO_ON gpio_set
@ -1943,6 +2042,7 @@
#define LED_BLUE_GPIO GPIO_PIN(GPIOE, 6) // PE.06 #define LED_BLUE_GPIO GPIO_PIN(GPIOE, 6) // PE.06
#endif #endif
// LED Strip
#if defined(RADIO_MT12) #if defined(RADIO_MT12)
#define LED_STRIP_LENGTH 7 #define LED_STRIP_LENGTH 7
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 8) // PA.08 / TIM1_CH1 #define LED_STRIP_GPIO GPIO_PIN(GPIOA, 8) // PA.08 / TIM1_CH1
@ -1956,8 +2056,14 @@
#define LED_STRIP_TIMER_DMA_IRQn DMA2_Stream5_IRQn #define LED_STRIP_TIMER_DMA_IRQn DMA2_Stream5_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler #define LED_STRIP_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms #define LED_STRIP_REFRESH_PERIOD 50 //ms
#elif defined(RADIO_T14) #elif defined(RADIO_T14) || defined(RADIO_V14) || defined(RADIO_V12)
#if defined(RADIO_V14)
#define LED_STRIP_LENGTH 38
#elif defined(RADIO_V12)
#define LED_STRIP_LENGTH 6
#else
#define LED_STRIP_LENGTH 1 #define LED_STRIP_LENGTH 1
#endif
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 10) // PA.10 / TIM1_CH3 #define LED_STRIP_GPIO GPIO_PIN(GPIOA, 10) // PA.10 / TIM1_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 #define LED_STRIP_GPIO_AF LL_GPIO_AF_1
#define LED_STRIP_TIMER TIM1 #define LED_STRIP_TIMER TIM1
@ -2041,7 +2147,8 @@
#define INTMODULE_DMA_STREAM_IRQ DMA2_Stream7_IRQn #define INTMODULE_DMA_STREAM_IRQ DMA2_Stream7_IRQn
#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler #define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler
#define INTMODULE_DMA_CHANNEL LL_DMA_CHANNEL_4 #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) #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)
#if defined(RADIO_T20V2) #if defined(RADIO_T20V2)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04 #define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 6) // PC.06 #define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 6) // PC.06
@ -2053,7 +2160,11 @@
#endif #endif
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 4) // PC.04 #define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 4) // PC.04
#endif #endif
#define INTMODULE_BOOTCMD_DEFAULT 0 // RESET #if defined(RADIO_V14) || defined(RADIO_V12)
#define INTMODULE_BOOTCMD_DEFAULT 1 // RESET
#else
#define INTMODULE_BOOTCMD_DEFAULT 0 // RESET
#endif
#define INTMODULE_TX_GPIO GPIO_PIN(GPIOB, 6) // PB.06 #define INTMODULE_TX_GPIO GPIO_PIN(GPIOB, 6) // PB.06
#define INTMODULE_RX_GPIO GPIO_PIN(GPIOB, 7) // PB.07 #define INTMODULE_RX_GPIO GPIO_PIN(GPIOB, 7) // PB.07
#define INTMODULE_USART USART1 #define INTMODULE_USART USART1
@ -2134,8 +2245,8 @@
#endif #endif
// External Module // 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) #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)
#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) #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)
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOD, 8) // PD.08 #define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOD, 8) // PD.08
#elif defined(PCBX9LITE) #elif defined(PCBX9LITE)
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOA, 8) // PA.08 #define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOA, 8) // PA.08
@ -2166,6 +2277,10 @@
#define EXTMODULE_USART_TX_DMA_STREAM LL_DMA_STREAM_6 #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_CHANNEL LL_DMA_CHANNEL_5
#define EXTMODULE_USART_RX_DMA_STREAM LL_DMA_STREAM_1 #define EXTMODULE_USART_RX_DMA_STREAM LL_DMA_STREAM_1
#if defined(RADIO_V14) || 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
#else #else
#if defined(RADIO_COMMANDO8) #if defined(RADIO_COMMANDO8)
#define EXTMODULE_RF_SWITCH_GPIO GPIO_PIN(GPIOE, 7) // Antenna switching: PE.07 #define EXTMODULE_RF_SWITCH_GPIO GPIO_PIN(GPIOE, 7) // Antenna switching: PE.07
@ -2268,6 +2383,10 @@
#else #else
#define TELEMETRY_SET_INPUT 0 #define TELEMETRY_SET_INPUT 0
#endif #endif
#if defined(RADIO_V14) || 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
#define TELEMETRY_TX_GPIO GPIO_PIN(GPIOD, 5) // PD.05 #define TELEMETRY_TX_GPIO GPIO_PIN(GPIOD, 5) // PD.05
#define TELEMETRY_RX_GPIO GPIO_PIN(GPIOD, 6) // PD.06 #define TELEMETRY_RX_GPIO GPIO_PIN(GPIOD, 6) // PD.06
#define TELEMETRY_USART USART2 #define TELEMETRY_USART USART2
@ -2389,7 +2508,7 @@
#if defined(PCBX9LITE) || defined(PCBXLITE) || defined(RADIO_X9DP2019) || \ #if defined(PCBX9LITE) || defined(PCBXLITE) || defined(RADIO_X9DP2019) || \
defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || \ defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || \
defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) ||\ defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) ||\
defined(RADIO_T14) || defined(RADIO_T12MAX) defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12)
#define TRAINER_MODULE_CPPM_TIMER TIM3 #define TRAINER_MODULE_CPPM_TIMER TIM3
#define TRAINER_MODULE_CPPM_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) #define TRAINER_MODULE_CPPM_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define TRAINER_MODULE_CPPM_GPIO EXTMODULE_RX_GPIO #define TRAINER_MODULE_CPPM_GPIO EXTMODULE_RX_GPIO
@ -2479,7 +2598,7 @@
#endif #endif
// LCD driver // LCD driver
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) || defined(RADIO_T12MAX) #if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12)
#define LCD_VERTICAL_INVERT #define LCD_VERTICAL_INVERT
#endif #endif
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) #if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14)
@ -2667,7 +2786,7 @@
#endif #endif
// Haptic // Haptic
#if defined(PCBXLITE) || defined(PCBX9LITE) || 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) #if defined(PCBXLITE) || defined(PCBX9LITE) || 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)
#define HAPTIC_PWM #define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOB, 3) // PB.03 #define HAPTIC_GPIO GPIO_PIN(GPIOB, 3) // PB.03
#define HAPTIC_GPIO_AF GPIO_AF1 #define HAPTIC_GPIO_AF GPIO_AF1
@ -2699,7 +2818,7 @@
#define HAPTIC_GPIO GPIO_PIN(GPIOC, 12) // PC.12 #define HAPTIC_GPIO GPIO_PIN(GPIOC, 12) // PC.12
#endif #endif
#if defined(RADIO_BOXER) || defined(RADIO_FAMILY_T20) || defined(RADIO_X9DP2019) #if defined(RADIO_BOXER) || defined(RADIO_FAMILY_T20) || defined(RADIO_X9DP2019) || defined (RADIO_V14)
// Flysky Hall Stick // Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART UART4 #define FLYSKY_HALL_SERIAL_USART UART4
#define FLYSKY_HALL_SERIAL_GPIO GPIOA #define FLYSKY_HALL_SERIAL_GPIO GPIOA

View file

@ -37,7 +37,7 @@
#if defined(OLED_SCREEN) #if defined(OLED_SCREEN)
#define LCD_CONTRAST_OFFSET 0 #define LCD_CONTRAST_OFFSET 0
#elif defined(RADIO_FAMILY_JUMPER_T12) || defined(MANUFACTURER_RADIOMASTER) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_T12MAX) #elif defined(RADIO_FAMILY_JUMPER_T12) || defined(MANUFACTURER_RADIOMASTER) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_T12MAX) || defined(RADIO_V12) || defined(RADIO_V14)
#define LCD_CONTRAST_OFFSET -10 #define LCD_CONTRAST_OFFSET -10
#else #else
#define LCD_CONTRAST_OFFSET 160 #define LCD_CONTRAST_OFFSET 160
@ -148,34 +148,62 @@ void lcdStart()
#else #else
#if defined(LCD_VERTICAL_INVERT) #if defined(LCD_VERTICAL_INVERT)
// T12 and TX12 have the screen inverted. // T12 and TX12 have the screen inverted.
lcdWriteCommand(0xe2); // (14) Soft reset #if defined(RADIO_V12)
lcdWriteCommand(0xe2); // (14) Soft reset
lcdWriteCommand(0xa0); // Set seg
lcdWriteCommand(0xc8); // Set com
lcdWriteCommand(0xf8); // Set booster
lcdWriteCommand(0x00); // 5x
lcdWriteCommand(0xa2); // Set bias=1/6
lcdWriteCommand(0x26); // Set internal rb/ra=5.0
lcdWriteCommand(0x2f); // All built-in power circuits on
lcdWriteCommand(0x81); // Set contrast
lcdWriteCommand(0x1F); // Set Vop
lcdWriteCommand(0xa6); // Set display mode
#else
lcdWriteCommand(0xe2); // (14) Soft reset
#if defined(LCD_HORIZONTAL_INVERT) #if defined(LCD_HORIZONTAL_INVERT)
lcdWriteCommand(0xa1); // Set seg lcdWriteCommand(0xa1); // Set seg
#else #else
lcdWriteCommand(0xa0); // Set seg lcdWriteCommand(0xa0); // Set seg
#endif #endif
lcdWriteCommand(0xc8); // Set com lcdWriteCommand(0xc8); // Set com
lcdWriteCommand(0xf8); // Set booster lcdWriteCommand(0xf8); // Set booster
lcdWriteCommand(0x00); // 5x lcdWriteCommand(0x00); // 5x
lcdWriteCommand(0xa3); // Set bias=1/6 lcdWriteCommand(0xa3); // Set bias=1/6
lcdWriteCommand(0x22); // Set internal rb/ra=5.0 lcdWriteCommand(0x22); // Set internal rb/ra=5.0
lcdWriteCommand(0x2f); // All built-in power circuits on lcdWriteCommand(0x2f); // All built-in power circuits on
lcdWriteCommand(0x24); // Power control set lcdWriteCommand(0x24); // Power control set
lcdWriteCommand(0x81); // Set contrast lcdWriteCommand(0x81); // Set contrast
lcdWriteCommand(0x0A); // Set Vop lcdWriteCommand(0x0A); // Set Vop
lcdWriteCommand(0xa6); // Set display mode lcdWriteCommand(0xa6); // Set display mode
#endif
#else #else
lcdWriteCommand(0xe2); // (14) Soft reset #if defined(RADIO_V14)
lcdWriteCommand(0xa1); // Set seg lcdWriteCommand(0xe2); // (14) Soft reset
lcdWriteCommand(0xc0); // Set com lcdWriteCommand(0xa1); // Set seg
lcdWriteCommand(0xf8); // Set booster lcdWriteCommand(0xc0); // Set com
lcdWriteCommand(0x00); // 5x lcdWriteCommand(0xf8); // Set booster
lcdWriteCommand(0xa3); // Set bias=1/6 lcdWriteCommand(0x00); // 5x
lcdWriteCommand(0x22); // Set internal rb/ra=5.0 lcdWriteCommand(0xa2); // Set bias=1/6
lcdWriteCommand(0x2f); // All built-in power circuits on lcdWriteCommand(0x26); // Set internal rb/ra=5.0
lcdWriteCommand(0x81); // Set contrast lcdWriteCommand(0x2f); // All built-in power circuits on
lcdWriteCommand(0x36); // Set Vop lcdWriteCommand(0x81); // Set contrast
lcdWriteCommand(0xa6); // Set display mode lcdWriteCommand(0x1F); // Set Vop
lcdWriteCommand(0xa6); // Set display mode
#else
lcdWriteCommand(0xe2); // (14) Soft reset
lcdWriteCommand(0xa1); // Set seg
lcdWriteCommand(0xc0); // Set com
lcdWriteCommand(0xf8); // Set booster
lcdWriteCommand(0x00); // 5x
lcdWriteCommand(0xa3); // Set bias=1/6
lcdWriteCommand(0x22); // Set internal rb/ra=5.0
lcdWriteCommand(0x2f); // All built-in power circuits on
lcdWriteCommand(0x81); // Set contrast
lcdWriteCommand(0x36); // Set Vop
lcdWriteCommand(0xa6); // Set display mode
#endif
#endif #endif
#if defined(BOOT) #if defined(BOOT)
lcdSetRefVolt(LCD_CONTRAST_DEFAULT); lcdSetRefVolt(LCD_CONTRAST_DEFAULT);
@ -408,8 +436,13 @@ void lcdSetRefVolt(uint8_t val)
WAIT_FOR_DMA_END(); WAIT_FOR_DMA_END();
#endif #endif
#if defined(RADIO_V12) || defined(RADIO_V14)
lcdWriteCommand(0x81); // Set Vop
lcdWriteCommand(val+LCD_CONTRAST_OFFSET+20);// 0-255
#else
lcdWriteCommand(0x81); // Set Vop lcdWriteCommand(0x81); // Set Vop
lcdWriteCommand(val+LCD_CONTRAST_OFFSET); // 0-255 lcdWriteCommand(val+LCD_CONTRAST_OFFSET); // 0-255
#endif
} }
#if LCD_W == 128 #if LCD_W == 128

View file

@ -85,6 +85,14 @@
#define USB_NAME "iFlight Commando 8" #define USB_NAME "iFlight Commando 8"
#define USB_MANUFACTURER 'i', 'F', 'l', 'i', 'g', 'h', 't', '-' /* 8 bytes */ #define USB_MANUFACTURER 'i', 'F', 'l', 'i', 'g', 'h', 't', '-' /* 8 bytes */
#define USB_PRODUCT 'C', 'o', 'm', 'm', 'a', 'n', 'd', 'o' /* 8 Bytes */ #define USB_PRODUCT 'C', 'o', 'm', 'm', 'a', 'n', 'd', 'o' /* 8 Bytes */
#elif defined(RADIO_V12)
#define USB_NAME "HelloRadioSky V12"
#define USB_MANUFACTURER 'H', 'R', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'V', '1', '2', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
#elif defined(RADIO_V14)
#define USB_NAME "HelloRadioSky V14"
#define USB_MANUFACTURER 'H', 'R', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'V', '1', '4', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
#else #else
#define USB_NAME "FrSky Taranis" #define USB_NAME "FrSky Taranis"
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */ #define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */

View file

@ -626,6 +626,52 @@ LEGACY_NAMES = [
} }
} }
}, },
{
"targets": {"v12", "v14"},
"inputs": {
"LH": {
"yaml": "Rud",
"lua": "rud",
"description": "Rudder"
},
"LV": {
"yaml": "Ele",
"lua": "ele",
"description": "Elevator"
},
"RV": {
"yaml": "Thr",
"lua": "thr",
"description": "Throttle"
},
"RH": {
"yaml": "Ail",
"lua": "ail",
"description": "Aileron"
},
"P1": {
"yaml": "POT1",
"lua": "s1",
"label": "S1",
"short_label": "1",
"description": "Potentiometer 1"
},
"P2": {
"yaml": "POT2",
"lua": "s2",
"label": "S2",
"short_label": "2",
"description": "Potentiometer 2"
},
"P3": {
"yaml": "POT3",
"lua": "s3",
"label": "S3",
"short_label": "3",
"description": "6 pos"
}
}
},
{ {
"targets": {"t20","t20v2"}, "targets": {"t20","t20v2"},
"inputs": { "inputs": {

View file

@ -32,6 +32,16 @@ POT_CONFIG = {
"EXT3": {"default": "MULTIPOS"}, "EXT3": {"default": "MULTIPOS"},
"EXT4": {"default": "MULTIPOS"} "EXT4": {"default": "MULTIPOS"}
}, },
"v12": {
"P1": {"default": "POT_CENTER"},
"P2": {"default": "POT_CENTER"},
"P3": {"default": "MULTIPOS"},
},
"v14": {
"P1": {"default": "POT_CENTER"},
"P2": {"default": "POT_CENTER"},
"P3": {"default": "MULTIPOS"},
},
"v16": { "v16": {
"P1": {"default": "POT_CENTER"}, "P1": {"default": "POT_CENTER"},
"P2": {"default": "MULTIPOS"}, "P2": {"default": "MULTIPOS"},

View file

@ -69,6 +69,26 @@ SWITCH_CONFIG = {
"SG": {"default": "3POS"}, "SG": {"default": "3POS"},
"SH": {"default": "TOGGLE"} "SH": {"default": "TOGGLE"}
}, },
"v12": {
# left side
"SA": {"default": "3POS", "display": [0, 0]},
"SB": {"default": "3POS", "display": [0, 1]},
"SE": {"default": "2POS", "display": [0, 2]},
# right side
"SC": {"default": "3POS", "display": [1, 0]},
"SD": {"default": "3POS", "display": [1, 1]},
"SF": {"default": "TOGGLE", "display": [1, 2]},
},
"v14": {
# left side
"SA": {"default": "3POS", "display": [0, 0]},
"SB": {"default": "3POS", "display": [0, 1]},
"SE": {"default": "2POS", "display": [0, 2]},
# right side
"SC": {"default": "3POS", "display": [1, 0]},
"SD": {"default": "3POS", "display": [1, 1]},
"SF": {"default": "TOGGLE", "display": [1, 2]},
},
"v16": { "v16": {
"SA": {"default": "3POS"}, "SA": {"default": "3POS"},
"SB": {"default": "3POS"}, "SB": {"default": "3POS"},

View file

@ -68,6 +68,14 @@ boards = {
"PCBREV": "F16", "PCBREV": "F16",
"INTERNAL_MODULE_MULTI": "YES" "INTERNAL_MODULE_MULTI": "YES"
}, },
"V12": {
"PCB": "X7",
"PCBREV": "V12",
},
"V14": {
"PCB": "X7",
"PCBREV": "V14",
},
"V16": { "V16": {
"PCB": "X10", "PCB": "X10",
"PCBREV": "V16", "PCBREV": "V16",

View file

@ -116,6 +116,12 @@ get_target_build_options() {
f16) f16)
BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=F16" BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=F16"
;; ;;
v12)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=V12"
;;
v14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=V14"
;;
v16) v16)
BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=V16" BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=V16"
;; ;;

View file

@ -9,7 +9,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
: "${SRCDIR:=$(dirname "$(pwd)/$0")/..}" : "${SRCDIR:=$(dirname "$(pwd)/$0")/..}"
: ${FLAVOR:="nv14;el18;t12;t12max;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;t20;t20v2;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16"} : ${FLAVOR:="nv14;el18;t12;t12max;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;t20;t20v2;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v14;v12"}
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}
# wipe build directory clean # wipe build directory clean