feat: support for Jumper T22 (#7420)

This commit is contained in:
3djc
2026-06-16 11:04:53 +10:00
committed by GitHub
parent 1f5ff50e0b
commit e1cc5ed2e0
22 changed files with 2140 additions and 9 deletions
+2
View File
@@ -58,6 +58,7 @@ body:
label: Version
description: What version of EdgeTX software are you running?
options:
- 2.12.2
- 2.12.1
- 2.12.0
- 2.11.5
@@ -119,6 +120,7 @@ body:
- Jumper T18
- Jumper T20/T20S
- Jumper T20 V2
- Jumper T22
- Jumper T-Lite
- Jumper T-Pro
- Jumper T-Pro V2
+2
View File
@@ -47,6 +47,7 @@ jobs:
- st16
- t15pro
- pa01
- t22
container:
image: ghcr.io/edgetx/edgetx-dev:latest
volumes:
@@ -91,6 +92,7 @@ jobs:
- x7access;x9dp2019;x9e;x9e-hall
- nb4p;st16
- tx16smk3;t14;t15pro
- t22
container:
image: ghcr.io/edgetx/edgetx-dev:latest
volumes:
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
- pl18;pl18ev;pl18u
- pa01
- t12max
- t15;t16;t18
- t15;t16;t18;t22
- zorro;pocket;mt12;commando8
- tprov2;tpros;bumblebee
- t20;t20v2;t14
+5
View File
@@ -213,6 +213,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_X10_EXPRESS:
case BOARD_JUMPER_T15:
case BOARD_JUMPER_T15PRO:
case BOARD_JUMPER_T22:
case BOARD_JUMPER_T16:
case BOARD_JUMPER_T18:
case BOARD_RADIOMASTER_TX16S:
@@ -276,6 +277,7 @@ int Boards::getFlashSize(Type board)
case BOARD_X10_EXPRESS:
case BOARD_JUMPER_T15:
case BOARD_JUMPER_T15PRO:
case BOARD_JUMPER_T22:
case BOARD_JUMPER_T16:
case BOARD_JUMPER_T18:
case BOARD_RADIOMASTER_TX16S:
@@ -606,6 +608,8 @@ QString Boards::getBoardName(Board::Type board)
return "Jumper T15";
case BOARD_JUMPER_T15PRO:
return "Jumper T15 Pro";
case BOARD_JUMPER_T22:
return "Jumper T22";
case BOARD_JUMPER_T16:
return "Jumper T16";
case BOARD_JUMPER_T18:
@@ -777,6 +781,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_JUMPER_T14:
case BOARD_JUMPER_T15:
case BOARD_JUMPER_T15PRO:
case BOARD_JUMPER_T22:
case BOARD_JUMPER_T20:
case BOARD_JUMPER_TPROS:
case BOARD_JUMPER_T20V2:
+6
View File
@@ -63,6 +63,7 @@ namespace Board {
BOARD_JUMPER_T14,
BOARD_JUMPER_T15,
BOARD_JUMPER_T15PRO,
BOARD_JUMPER_T22,
BOARD_JUMPER_T16,
BOARD_RADIOMASTER_TX16S,
BOARD_RADIOMASTER_TX16SMK3,
@@ -563,6 +564,11 @@ inline bool IS_JUMPER_T15PRO(Board::Type board)
return board == Board::BOARD_JUMPER_T15PRO;
}
inline bool IS_JUMPER_T22(Board::Type board)
{
return board == Board::BOARD_JUMPER_T22;
}
inline bool IS_JUMPER_T16(Board::Type board)
{
return board == Board::BOARD_JUMPER_T16;
@@ -93,7 +93,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board) ||
IS_IFLIGHT_COMMANDO8(board) || IS_RADIOMASTER_BOXER(board) ||
IS_RADIOMASTER_POCKET(board) || IS_JUMPER_T20(board) ||
IS_RADIOMASTER_MT12(board) || IS_RADIOMASTER_TX15(board) || IS_JUMPER_T15PRO(board);
IS_RADIOMASTER_MT12(board) || IS_RADIOMASTER_TX15(board) || IS_JUMPER_T15PRO(board) || IS_JUMPER_T22(board);
case HasIntModuleFlySky:
return id.contains("afhds2a") || id.contains("afhds3") ||
IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board) || IS_FAMILY_PL18(board);
@@ -606,6 +606,12 @@ void registerOpenTxFirmwares()
addOpenTxRfOptions(firmware, FLEX);
registerOpenTxFirmware(firmware);
/* Jumper T22 board */
firmware = new OpenTxFirmware(FIRMWAREID("t22"), Firmware::tr("Jumper T22"), BOARD_JUMPER_T22);
addOpenTxFrskyOptions(firmware);
addOpenTxRfOptions(firmware, FLEX);
registerOpenTxFirmware(firmware);
/* Jumper T16 board */
firmware = new OpenTxFirmware(FIRMWAREID("t16"), Firmware::tr("Jumper T16 / T16+ / T16 Pro"), BOARD_JUMPER_T16);
addOpenTxFrskyOptions(firmware);
+1
View File
@@ -30,6 +30,7 @@
["Jumper T18", "t18-"],
["Jumper T20", "t20-"],
["Jumper T20 V2", "t20v2-"],
["Jumper T22", "t22-"],
["RadioMaster Boxer", "boxer-"],
["RadioMaster GX12", "gx12-"],
["RadioMaster MT12","mt12-"],
+3 -1
View File
@@ -1,7 +1,7 @@
include(CMakeForceCompiler)
include(Bitmaps)
set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S PL18 T15PRO ST16 PA01 TX15 TX16SMK3)
set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S PL18 T15PRO ST16 PA01 TX15 TX16SMK3 T22)
set(RADIO_LANGUAGES CN CZ DA DE EN ES FI FR HE HU IT JP KO NL PL PT RU SE SK TW UA)
set(TTS_LANGUAGES CN CZ DA DE EN ES FI FR HE HU IT JP KO NL PL PT RU SE SK TW UA)
@@ -101,6 +101,8 @@ elseif(PCB STREQUAL TX15)
include(targets/tx15/CMakeLists.txt)
elseif(PCB STREQUAL TX16SMK3)
include(targets/tx16smk3/CMakeLists.txt)
elseif(PCB STREQUAL T22)
include(targets/t22/CMakeLists.txt)
elseif(PCB STREQUAL STM32H7S78_DK)
include(targets/stm32h7s78-dk/CMakeLists.txt)
elseif(PCB STREQUAL X9E OR PCB STREQUAL X9D+ OR PCB STREQUAL X9D OR PCB STREQUAL X7 OR PCB STREQUAL X9LITE OR PCB STREQUAL X9LITES OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
+489
View File
@@ -0,0 +1,489 @@
{
"adc_inputs": {
"adcs": [
{
"name": "MAIN",
"adc": "ADC1",
"dma": "DMA2",
"dma_channel": "LL_DMAMUX1_REQ_ADC1",
"dma_stream": "LL_DMA_STREAM_4",
"dma_stream_irq": "DMA2_Stream4_IRQn",
"dma_stream_irq_handler": "DMA2_Stream4_IRQHandler",
"sample_time": "LL_ADC_SAMPLINGTIME_8CYCLES_5"
},
{
"name": "EXT",
"adc": "ADC3",
"dma": "DMA2",
"dma_channel": "LL_DMAMUX1_REQ_ADC3",
"dma_stream": "LL_DMA_STREAM_0",
"dma_stream_irq": "DMA2_Stream0_IRQn",
"dma_stream_irq_handler": "DMA2_Stream0_IRQHandler",
"sample_time": "LL_ADC_SAMPLINGTIME_8CYCLES_5"
}
],
"inputs": [
{
"name": "LH",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_0",
"channel": "LL_ADC_CHANNEL_16"
},
{
"name": "LV",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_3",
"channel": "LL_ADC_CHANNEL_15",
"inverted": true
},
{
"name": "RV",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_1",
"channel": "LL_ADC_CHANNEL_17"
},
{
"name": "RH",
"type": "STICK",
"adc": "MAIN",
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_2",
"channel": "LL_ADC_CHANNEL_14",
"inverted": true
},
{
"name": "P1",
"type": "FLEX",
"adc": "EXT",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_0",
"channel": "LL_ADC_CHANNEL_10",
"label": "S1",
"short_label": "1",
"default": "POT_CENTER"
},
{
"name": "P2",
"type": "FLEX",
"adc": "EXT",
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_3",
"channel": "LL_ADC_CHANNEL_14",
"label": "S2",
"short_label": "2",
"default": "POT_CENTER"
},
{
"name": "SL1",
"type": "FLEX",
"adc": "MAIN",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_4",
"channel": "LL_ADC_CHANNEL_4",
"label": "S3",
"short_label": "3",
"default": "SLIDER"
},
{
"name": "SL2",
"type": "FLEX",
"adc": "MAIN",
"gpio": "GPIOB",
"pin": "LL_GPIO_PIN_1",
"channel": "LL_ADC_CHANNEL_5",
"inverted": true,
"label": "S4",
"short_label": "4",
"default": "SLIDER"
},
{
"name": "SL3",
"type": "FLEX",
"adc": "MAIN",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_3",
"channel": "LL_ADC_CHANNEL_13",
"inverted": true,
"label": "SL",
"short_label": "L",
"default": "SLIDER"
},
{
"name": "SL4",
"type": "FLEX",
"adc": "MAIN",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_2",
"channel": "LL_ADC_CHANNEL_12",
"inverted": true,
"label": "SR",
"short_label": "R",
"default": "SLIDER"
},
{
"name": "VBAT",
"type": "VBAT",
"adc": "MAIN",
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_5",
"channel": "LL_ADC_CHANNEL_8"
},
{
"name": "RTC_BAT",
"type": "RTC_BAT",
"adc": "EXT",
"gpio": null,
"pin": null,
"channel": "LL_ADC_CHANNEL_VBAT"
}
]
},
"switches": [
{
"name": "SA",
"type": "2POS",
"flags": 0,
"inverted": true,
"default": "2POS",
"display": null,
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_15",
"is_cfs": false
},
{
"name": "SB",
"type": "2POS",
"flags": 0,
"inverted": true,
"default": "2POS",
"display": null,
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_5",
"is_cfs": false
},
{
"name": "SC",
"type": "3POS",
"flags": 0,
"inverted": false,
"default": "3POS",
"display": null,
"gpio_high": "GPIOH",
"pin_high": "LL_GPIO_PIN_13",
"gpio_low": "GPIOA",
"pin_low": "LL_GPIO_PIN_8",
"is_cfs": false
},
{
"name": "SD",
"type": "3POS",
"flags": 0,
"inverted": false,
"default": "3POS",
"display": null,
"gpio_high": "GPIOG",
"pin_high": "LL_GPIO_PIN_12",
"gpio_low": "GPIOG",
"pin_low": "LL_GPIO_PIN_13",
"is_cfs": false
},
{
"name": "SE",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOG",
"pin": "LL_GPIO_PIN_7",
"is_cfs": false
},
{
"name": "SF",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOG",
"pin": "LL_GPIO_PIN_11",
"is_cfs": false
},
{
"name": "SG",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": null,
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_8",
"is_cfs": false
},
{
"name": "SH",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": null,
"gpio": "GPIOB",
"pin": "LL_GPIO_PIN_14",
"is_cfs": false
},
{
"name": "SI",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": null,
"gpio": "GPIOB",
"pin": "LL_GPIO_PIN_2",
"is_cfs": false
},
{
"name": "SJ",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": null,
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_10",
"is_cfs": false
},
{
"name": "SK",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": null,
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_11",
"is_cfs": false
},
{
"name": "SL",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": null,
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_9",
"is_cfs": false
},
{
"name": "SW1",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOG",
"pin": "LL_GPIO_PIN_9",
"is_cfs": true,
"cfs_idx": 0
},
{
"name": "SW2",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOG",
"pin": "LL_GPIO_PIN_14",
"is_cfs": true,
"cfs_idx": 1
},
{
"name": "SW3",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOJ",
"pin": "LL_GPIO_PIN_8",
"is_cfs": true,
"cfs_idx": 2
},
{
"name": "SW4",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOB",
"pin": "LL_GPIO_PIN_0",
"is_cfs": true,
"cfs_idx": 3
},
{
"name": "SW5",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_1",
"is_cfs": true,
"cfs_idx": 4
},
{
"name": "SW6",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_2",
"is_cfs": true,
"cfs_idx": 5
}
],
"keys": [
{
"gpio": "GPIOI",
"pin": "LL_GPIO_PIN_8",
"active_low": true,
"key": "KEY_EXIT",
"name": "EXIT",
"label": "EXIT"
},
{
"gpio": "GPIOI",
"pin": "LL_GPIO_PIN_2",
"active_low": true,
"key": "KEY_ENTER",
"name": "ENTER",
"label": "Enter"
},
{
"gpio": "GPIOI",
"pin": "LL_GPIO_PIN_4",
"active_low": true,
"key": "KEY_PAGEDN",
"name": "PAGEDN",
"label": "PAGE>"
},
{
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_3",
"active_low": true,
"key": "KEY_MODEL",
"name": "MDL",
"label": "MDL"
},
{
"gpio": "GPIOE",
"pin": "LL_GPIO_PIN_4",
"active_low": true,
"key": "KEY_TELE",
"name": "TELE",
"label": "TELE"
},
{
"gpio": "GPIOI",
"pin": "LL_GPIO_PIN_5",
"active_low": true,
"key": "KEY_SYS",
"name": "SYS",
"label": "SYS"
}
],
"trims": [
{
"name": "T1",
"dec": {
"gpio": "GPIOG",
"pin": "LL_GPIO_PIN_2",
"active_low": true
},
"inc": {
"gpio": "GPIOA",
"pin": "LL_GPIO_PIN_15",
"active_low": true
},
"active_low": true
},
{
"name": "T2",
"dec": {
"gpio": "GPIOG",
"pin": "LL_GPIO_PIN_3",
"active_low": true
},
"inc": {
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_14",
"active_low": true
},
"active_low": true
},
{
"name": "T3",
"dec": {
"gpio": "GPIOI",
"pin": "LL_GPIO_PIN_11",
"active_low": true
},
"inc": {
"gpio": "GPIOC",
"pin": "LL_GPIO_PIN_13",
"active_low": true
},
"active_low": true
},
{
"name": "T4",
"dec": {
"gpio": "GPIOI",
"pin": "LL_GPIO_PIN_10",
"active_low": true
},
"inc": {
"gpio": "GPIOI",
"pin": "LL_GPIO_PIN_9",
"active_low": true
},
"active_low": true
}
],
"display": {
"w": 480,
"h": 320,
"phys_w": 320,
"phys_h": 480,
"depth": 16,
"color": 1,
"oled": 0,
"backlight_color": 0
},
"custom_switches": {
"rgb_led": 1,
"groups": 3
},
"hardware": {
"has_audio_mute": 1,
"has_bling_leds": 1,
"has_ext_module_support": 1,
"has_int_module_support": 1,
"sport_max_baudrate": 400000,
"surface": 0,
"cpu": "STM32H750xB",
"cpu_type": "STM32H7"
}
}
+3 -1
View File
@@ -78,7 +78,7 @@ static inline void check_struct()
#if defined(PCBXLITES)
CHKSIZE(RadioData, 950);
#elif defined(RADIO_ST16) || defined(PCBPA01) || defined(RADIO_TX15) || defined(RADIO_T15PRO) || defined(RADIO_TX16SMK3)
#elif defined(RADIO_ST16) || defined(PCBPA01) || defined(RADIO_TX15) || defined(RADIO_T15PRO) || defined(RADIO_TX16SMK3) || defined(RADIO_T22)
CHKSIZE(RadioData, 1181);
#elif defined(COLORLCD)
CHKSIZE(RadioData, 1061);
@@ -112,6 +112,8 @@ static inline void check_struct()
CHKSIZE(ModelData, 7582);
#elif defined(RADIO_T15)
CHKSIZE(ModelData, 6867);
#elif defined(RADIO_T22)
CHKSIZE(ModelData, 7641);
#elif defined(RADIO_TX16SMK3)
CHKSIZE(ModelData, 7642);
#elif defined(RADIO_H7RS)
+1 -1
View File
@@ -27,7 +27,7 @@
#define ROTENC_MIDSPEED 5
#define ROTENC_HIGHSPEED 50
#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_T15) || defined(RADIO_T15PRO) || defined(RADIO_BUMBLEBEE)
#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_T15) || defined(RADIO_T15PRO) || defined(RADIO_T22) || defined(RADIO_BUMBLEBEE)
#define ROTARY_ENCODER_GRANULARITY 4
#else
#define ROTARY_ENCODER_GRANULARITY 2
+2
View File
@@ -34,6 +34,8 @@ elseif(PCB STREQUAL PL18)
endif()
elseif(PCB STREQUAL T15PRO)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_t15pro.cpp)
elseif(PCB STREQUAL T22)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_t22.cpp)
elseif(PCB STREQUAL ST16)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_st16.cpp)
elseif(PCB STREQUAL PA01)
@@ -42,6 +42,8 @@
#include "yaml_datastructs_t15pro.cpp"
#elif defined(PCBTX16SMK3)
#include "yaml_datastructs_tx16smk3.cpp"
#elif defined(RADIO_T22)
#include "yaml_datastructs_t22.cpp"
#elif defined(PCBPL18)
#if defined(RADIO_NB4P)
#include "yaml_datastructs_nb4p.cpp"
File diff suppressed because it is too large Load Diff
-1
View File
@@ -413,7 +413,6 @@ USART6: EXTMODULE_USART
#define EXTMODULE_USART_IRQn USART6_IRQn
//TIMER
// TODO
#define EXTMODULE_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM3_UP
#define EXTMODULE_TIMER_DMA DMA2
#define EXTMODULE_TIMER_DMA_STREAM LL_DMA_STREAM_3
+182
View File
@@ -0,0 +1,182 @@
option(UNEXPECTED_SHUTDOWN "Enable the Unexpected Shutdown screen" ON)
option(PXX1 "PXX1 protocol support" ON)
option(PXX2 "PXX2 protocol support" OFF)
option(AFHDS3 "AFHDS3 TX Module" ON)
option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" ON)
option(GHOST "Ghost TX Module" ON)
option(MODULE_SIZE_STD "Standard size TX Module" ON)
option(LUA_MIXER "Enable LUA mixer/model scripts support" ON)
option(DISK_CACHE "Enable SD card disk cache" ON)
set(FIRMWARE_QSPI YES)
set(FIRMWARE_FORMAT_UF2 YES)
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
set(CPU_TYPE STM32H7)
set(HSE_VALUE 48000000)
set(SDCARD YES)
set(STORAGE_MODELSLIST YES)
set(HAPTIC YES)
set(GUI_DIR colorlcd)
set(BITMAPS_DIR 480x272)
set(TARGET_DIR t22)
set(RTC_BACKUP_RAM YES)
set(PPM_LIMITS_SYMETRICAL YES)
set(USB_SERIAL ON CACHE BOOL "Enable USB serial (CDC)")
set(HARDWARE_EXTERNAL_MODULE YES)
set(INTERNAL_MODULE_AFHDS3 NO)
set(ROTARY_ENCODER YES)
set(FUNCTION_SWITCHES_WITH_RGB YES)
#option(STICKS_DEAD_ZONE "Enable sticks dead zone" YES)
# IMU support
set(IMU ON)
# for size report script
set(CPU_TYPE_FULL STM32H750xB)
set(TARGET_LINKER_DIR stm32h750_sdram)
set(TARGET_EXTRAM_START 0xD0000000)
set(SIZE_TARGET_MEM_DEFINE "MEM_SIZE_SDRAM1=8192")
set(FIRMWARE_STRIP_BOOTLOADER YES)
add_definitions(-DPCBT22 -DPCBHORUS)
add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS)
add_definitions(-DFIRMWARE_QSPI)
add_definitions(-DFIRMWARE_FORMAT_UF2)
add_definitions(-DUSE_CUSTOM_EXTI_IRQ)
add_definitions(-DUSB_CHARGER)
set(FLAVOUR t22)
add_definitions(-DRADIO_T22)
# defines existing internal modules
set(INTERNAL_MODULES CRSF CACHE STRING "Internal modules")
set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module")
set(BITMAPS_TARGET bm480_bitmaps)
set(FONTS_TARGET x12_fonts)
set(LCD_DRIVER lcd_driver.cpp)
set(HARDWARE_TOUCH YES)
set(RADIO_DEPENDENCIES ${RADIO_DEPENDENCIES} ${BITMAPS_TARGET})
set(FIRMWARE_DEPENDENCIES datacopy)
set(SOFTWARE_KEYBOARD ON)
set(FLYSKY_GIMBAL OFF)
add_definitions(
-DSTM32H750XBTx -DSTM32H750xx
-DSDRAM -DCCMRAM
-DCOLORLCD -DLIBOPENUI
-DHARDWARE_TOUCH -DHARDWARE_KEYS -DSOFTWARE_KEYBOARD
)
set(SDRAM ON)
add_definitions(-DAUDIO -DVOICE)
add_definitions(-DSOFTWARE_VOLUME)
add_definitions(-DRTCLOCK)
add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE})
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
if(STICKS_DEAD_ZONE)
add_definitions(-DSTICK_DEAD_ZONE)
endif()
if(NOT UNEXPECTED_SHUTDOWN)
add_definitions(-DNO_UNEXPECTED_SHUTDOWN)
endif()
if(DISK_CACHE)
set(SRC ${SRC} disk_cache.cpp)
add_definitions(-DDISK_CACHE)
endif()
if(FUNCTION_SWITCHES_WITH_RGB)
set(FUNCTION_SWITCHES YES)
add_definitions(-DFUNCTION_SWITCHES)
add_definitions(-DFUNCTION_SWITCHES_RGB_LEDS)
endif()
# VCP CLI
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
set(CLI ON CACHE BOOL "Enable CLI")
set(BOARD jumper-h750)
set(BOARD_SRC_DIR boards/${BOARD})
include_directories(boards/${BOARD})
set(TARGET_SRC_DIR targets/${TARGET_DIR})
set(BOARD_COMMON_SRC
${BOARD_SRC_DIR}/board.cpp
${BOARD_SRC_DIR}/key_driver.cpp
${BOARD_SRC_DIR}/lcd_driver.cpp
${BOARD_SRC_DIR}/backlight_driver.cpp
${BOARD_SRC_DIR}/haptic_driver.cpp
${BOARD_SRC_DIR}/extflash_driver.cpp
${BOARD_SRC_DIR}/usb_charger_driver.cpp
targets/common/arm/stm32/abnormal_reboot.cpp
targets/common/arm/stm32/delays_driver.cpp
targets/common/arm/stm32/dma2d.cpp
targets/common/arm/stm32/flash_driver.cpp
targets/common/arm/stm32/pwr_driver.cpp
targets/common/arm/stm32/rotary_encoder_driver.cpp
targets/common/arm/stm32/rtc_driver.cpp
targets/common/arm/stm32/watchdog_driver.cpp
drivers/pca95xx.cpp
)
# Bootloader board library
add_library(board_bl OBJECT EXCLUDE_FROM_ALL
${BOARD_COMMON_SRC}
${BOARD_SRC_DIR}/sdram_driver.cpp
${RADIO_SRC_DIR}/gui/colorlcd/boot_menu.cpp
targets/common/arm/stm32/stm32_qspi.cpp
targets/common/arm/stm32/stm32_pulse_driver.cpp
)
add_dependencies(board_bl minimal_board_lib)
set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $<TARGET_OBJECTS:board_bl>)
set(CMSIS_SRC ${BOARD_SRC_DIR}/system_clock.c)
# Firmware board library
add_library(board OBJECT EXCLUDE_FROM_ALL
${BOARD_COMMON_SRC}
${BOARD_SRC_DIR}/touch_driver.cpp
targets/common/arm/stm32/audio_dac_driver.cpp
targets/common/arm/stm32/heartbeat_driver.cpp
targets/common/arm/stm32/mixer_scheduler_driver.cpp
targets/common/arm/stm32/module_timer_driver.cpp
targets/common/arm/stm32/stm32_pulse_driver.cpp
targets/common/arm/stm32/stm32_softserial_driver.cpp
targets/common/arm/stm32/stm32_qspi.cpp
targets/common/arm/stm32/stm32_switch_driver.cpp
targets/common/arm/stm32/stm32_ws2812.cpp
targets/common/arm/stm32/trainer_driver.cpp
)
add_dependencies(board board_lib)
set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:board>)
include_directories(${RADIO_SRC_DIR}/fonts/colorlcd gui/${GUI_DIR} gui/${GUI_DIR}/layouts)
if(BOOTLOADER)
set(FIRMWARE_TARGET_SRC
${FIRMWARE_TARGET_SRC}
../../bootloader/loadboot.cpp
)
endif()
set(SRC
${SRC}
io/frsky_firmware_update.cpp
io/multi_firmware_update.cpp
)
if (MULTIMODULE)
add_definitions(-DMULTI_PROTOLIST)
set(SRC ${SRC}
io/multi_protolist.cpp
)
endif()
# Make malloc() thread-safe
add_definitions(-DTHREADSAFE_MALLOC)
+353
View File
@@ -0,0 +1,353 @@
/*
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/*
STM32H750
DMA1
Stream0: LED_STRIP_TIMER_DMA_STREAM
Stream1: INTMODULE_DMA_STREAM
Stream2: FLYSKY_HALL_DMA_Stream_RX (only if FLYSKY_GIMBAL enabled; OFF on T22)
Stream3: TELEMETRY_DMA_Stream_RX
Stream4: (free)
Stream5: INTMODULE_RX_DMA_STREAM
Stream6:
Stream7: TELEMETRY_DMA_Stream_TX
DMA2
Stream0: ADC_EXT_DMA_STREAM (ADC3, see boards/hw_defs/t22.json)
Stream1: AUDIO_DMA_Stream
Stream2:
Stream3: EXTMODULE_TIMER_DMA_STREAM
Stream4: ADC_DMA_STREAM (ADC1, see boards/hw_defs/t22.json)
Stream5: EXTMODULE_USART_RX_DMA_STREAM
Stream6: EXTMODULE_USART_TX_DMA_STREAM
TIM1: LED_STRIP_TIMER
TIM2: BACKLIGHT_TIMER
TIM3: EXTMODULE_TIMER
TIM4: (no pins)
TIM5: (free)
TIM6: AUDIO_TIMER
TIM7: (no pins)
TIM8: TRAINER_TIMER
TIM12: MIXER_SCHEDULER_TIMER
TIM13:
TIM14: MS_TIMER
TIM15: HAPTIC_GPIO_TIMER
TIM16:
TIM17: ROTARY_ENCODER_TIMER
*/
#ifndef _HAL_H_
#define _HAL_H_
#define CPU_FREQ 480000000
#define PERI1_FREQUENCY 120000000
#define PERI2_FREQUENCY 120000000
#define TIMER_MULT_APB1 2
#define TIMER_MULT_APB2 2
#define ADC_VREF_PREC2 330
// Power
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOI, 3)
#define PWR_ON_GPIO GPIO_PIN(GPIOD, 3)
// S.Port update connector
#define HAS_SPORT_UPDATE_CONNECTOR() (false)
// Telemetry
#define TELEMETRY_SET_INPUT 0
#define TELEMETRY_TX_GPIO GPIO_PIN(GPIOD, 5)
#define TELEMETRY_RX_GPIO GPIO_UNDEF
#define TELEMETRY_USART USART2
#define TELEMETRY_USART_IRQn USART2_IRQn
#define TELEMETRY_DMA DMA1
#define TELEMETRY_DMA_Stream_TX LL_DMA_STREAM_7
#define TELEMETRY_DMA_Channel_TX LL_DMAMUX1_REQ_USART2_TX
#define TELEMETRY_DMA_TX_Stream_IRQ DMA1_Stream7_IRQn
#define TELEMETRY_DMA_TX_IRQHandler DMA1_Stream7_IRQHandler
#define TELEMETRY_DMA_Stream_RX LL_DMA_STREAM_3
#define TELEMETRY_DMA_Channel_RX LL_DMAMUX1_REQ_USART2_RX
#define TELEMETRY_USART_IRQHandler USART2_IRQHandler
// Software IRQ (Prio 5 -> FreeRTOS compatible)
//#define USE_CUSTOM_EXTI_IRQ
#define TELEMETRY_USE_CUSTOM_EXTI
#define CUSTOM_EXTI_IRQ_NAME ETH_WKUP_IRQ
#define ETH_WKUP_IRQ_Priority 5
#define CUSTOM_EXTI_IRQ_LINE 86
//#define USE_EXTI15_10_IRQ
//#define CUSTOM_EXTI_IRQ_Priority 5
#define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE
// USB
#define USB_GPIO GPIOA
#define USB_GPIO_VBUS GPIO_PIN(GPIOA, 9)
#define USB_GPIO_DM GPIO_PIN(GPIOA, 11)
#define USB_GPIO_DP GPIO_PIN(GPIOA, 12)
#define USB_GPIO_AF GPIO_AF10
// LCD SPI1
#define LCD_SPI_CS_GPIO GPIOG
#define LCD_SPI_CS_GPIO_PIN LL_GPIO_PIN_10
#define LCD_SPI_GPIO GPIOB
#define LCD_SPI_SCK_GPIO_PIN LL_GPIO_PIN_3
#define LCD_SPI_MISO_GPIO_PIN LL_GPIO_PIN_4
#define LCD_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_5
#define LTDC_IRQ_PRIO 4
#define DMA_SCREEN_IRQ_PRIO 6
#define LCD_NRST_GPIO GPIOI
#define LCD_NRST_GPIO_PIN LL_GPIO_PIN_15
// Backlight
#define BACKLIGHT_GPIO GPIO_PIN(GPIOA, 5) // TIM2_CH1
#define BACKLIGHT_TIMER TIM2
#define BACKLIGHT_TIMER_CHANNEL LL_TIM_CHANNEL_CH1
#define BACKLIGHT_GPIO_AF GPIO_AF1
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
// QSPI Flash
#define QSPI_CLK_GPIO GPIO_PIN(GPIOF, 10)
#define QSPI_CLK_GPIO_AF GPIO_AF9
#define QSPI_CS_GPIO GPIO_PIN(GPIOG, 6)
#define QSPI_CS_GPIO_AF GPIO_AF10
#define QSPI_MISO_GPIO GPIO_PIN(GPIOF, 9)
#define QSPI_MISO_GPIO_AF GPIO_AF10
#define QSPI_MOSI_GPIO GPIO_PIN(GPIOF, 8)
#define QSPI_MOSI_GPIO_AF GPIO_AF10
#define QSPI_WP_GPIO GPIO_PIN(GPIOF, 7)
#define QSPI_WP_GPIO_AF GPIO_AF9
#define QSPI_HOLD_GPIO GPIO_PIN(GPIOF, 6)
#define QSPI_HOLD_GPIO_AF GPIO_AF9
#define QSPI_FLASH_SIZE 0x1000000
#define SD_SDIO SDMMC1
#define SD_SDIO_CLK_DIV(fq) (HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SDMMC) / (2 * fq))
#define SD_SDIO_TRANSFER_CLK_DIV SD_SDIO_CLK_DIV(24000000)
#define STORAGE_USE_SDIO
// Chargers (USB and wireless)
#define UCHARGER_GPIO GPIO_PIN(GPIOD, 6)
// Audio
#define AUDIO_MUTE_GPIO GPIO_PIN(GPIOH, 4)
#define AUDIO_OUTPUT_GPIO GPIO_PIN(GPIOA, 4)
#define AUDIO_DAC DAC1
#define AUDIO_DMA_Stream LL_DMA_STREAM_1
#define AUDIO_DMA_Channel LL_DMAMUX1_REQ_DAC1_CH1
#define AUDIO_TIM_IRQn TIM6_DAC_IRQn
#define AUDIO_TIM_IRQHandler TIM6_DAC_IRQHandler
#define AUDIO_DMA_Stream_IRQn DMA2_Stream1_IRQn
#define AUDIO_DMA_Stream_IRQHandler DMA2_Stream1_IRQHandler
#define AUDIO_TIMER TIM6
#define AUDIO_DMA DMA2
// I2C Bus
#define I2C_B1 I2C1
#define I2C_B1_SDA_GPIO GPIO_PIN(GPIOB, 9)
#define I2C_B1_SCL_GPIO GPIO_PIN(GPIOB, 8)
#define I2C_B1_GPIO_AF LL_GPIO_AF_4
#define I2C_B1_CLK_RATE 400000
#define I2C_B2 I2C4
#define I2C_B2_SDA_GPIO GPIO_PIN(GPIOD, 13)
#define I2C_B2_SCL_GPIO GPIO_PIN(GPIOD, 12)
#define I2C_B2_GPIO_AF LL_GPIO_AF_4
#define I2C_B2_CLK_RATE 400000
// Haptic
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOE, 6) // TIM15_CH2
#define HAPTIC_GPIO_TIMER TIM15
#define HAPTIC_GPIO_AF GPIO_AF4
#define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC2E | TIM_CCER_CC2NE;
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR2
// Flysky Hall Stick
#define FLYSKY_HALL_SERIAL_USART USART3
#define FLYSKY_HALL_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 10)
#define FLYSKY_HALL_SERIAL_RX_GPIO GPIO_PIN(GPIOB, 11)
#define FLYSKY_HALL_SERIAL_USART_IRQn USART3_IRQn
#define FLYSKY_HALL_SERIAL_DMA DMA1
#define FLYSKY_HALL_DMA_Stream_RX LL_DMA_STREAM_2
#define FLYSKY_HALL_DMA_Channel LL_DMAMUX1_REQ_USART3_RX
// LED Strip
#define LED_STRIP_LENGTH 7 // 6POS + 1 common (many leds in //)
#define BLING_LED_STRIP_START 6
#define BLING_LED_STRIP_LENGTH 1
#define CFS_LED_STRIP_START 0
#define CFS_LED_STRIP_LENGTH 6
#define CFS_LEDS_PER_SWITCH 1
#define LED_STRIP_GPIO GPIO_PIN(GPIOA, 10) // PA.00 / TIM1_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_1 // TIM1_CH3
#define LED_STRIP_TIMER TIM1
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM1_UP
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
#define LED_RED_GPIO GPIO_PIN(GPIOB, 15)
#define LED_GREEN_GPIO GPIO_PIN(GPIOB, 13)
#define LED_BLUE_GPIO GPIO_PIN(GPIOB, 12)
// Internal Module
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOI, 1)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOD, 7)
#define INTMODULE_BOOTCMD_DEFAULT 0
#define INTMODULE_TX_GPIO GPIO_PIN(GPIOB, 6)
#define INTMODULE_RX_GPIO GPIO_PIN(GPIOB, 7)
#define INTMODULE_USART USART1
#define INTMODULE_GPIO_AF LL_GPIO_AF_7
#define INTMODULE_USART_IRQn USART1_IRQn
#define INTMODULE_USART_IRQHandler USART1_IRQHandler
#define INTMODULE_DMA DMA1
#define INTMODULE_DMA_STREAM LL_DMA_STREAM_1
#define INTMODULE_DMA_STREAM_IRQ DMA1_Stream1_IRQn
#define INTMODULE_DMA_FLAG_TC DMA_FLAG_TCIF1
#define INTMODULE_DMA_CHANNEL LL_DMAMUX1_REQ_USART1_TX
#define INTMODULE_RX_DMA DMA1
#define INTMODULE_RX_DMA_STREAM LL_DMA_STREAM_5
#define INTMODULE_RX_DMA_CHANNEL LL_DMAMUX1_REQ_USART1_RX
#define INTMODULE_RX_DMA_Stream_IRQn DMA1_Stream5_IRQn
#define INTMODULE_RX_DMA_Stream_IRQHandler DMA1_Stream5_IRQHandler
// External Module
#define EXTMODULE
#define EXTMODULE_PULSES
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOI, 0)
#define EXTMODULE_TX_GPIO GPIO_PIN(GPIOC, 6) // TIM3_CH1
#define EXTMODULE_RX_GPIO GPIO_PIN(GPIOC, 7)
#define EXTMODULE_TIMER TIM3
#define EXTMODULE_TIMER_Channel LL_TIM_CHANNEL_CH1
#define EXTMODULE_TIMER_IRQn TIM3_IRQn
#define EXTMODULE_TIMER_IRQHandler TIM3_IRQHandler
#define EXTMODULE_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define EXTMODULE_TIMER_TX_GPIO_AF LL_GPIO_AF_2
//USART
#define EXTMODULE_USART USART6
#define EXTMODULE_USART_TX_DMA DMA2
#define EXTMODULE_USART_TX_DMA_CHANNEL LL_DMAMUX1_REQ_USART6_TX
#define EXTMODULE_USART_TX_DMA_STREAM LL_DMA_STREAM_6
#define EXTMODULE_USART_RX_DMA_CHANNEL LL_DMAMUX1_REQ_USART6_RX
#define EXTMODULE_USART_RX_DMA_STREAM LL_DMA_STREAM_5
#define EXTMODULE_USART_IRQHandler USART6_IRQHandler
#define EXTMODULE_USART_IRQn USART6_IRQn
//TIMER
#define EXTMODULE_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM3_UP
#define EXTMODULE_TIMER_DMA DMA2
#define EXTMODULE_TIMER_DMA_STREAM LL_DMA_STREAM_3
#define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream3_IRQn
#define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream3_IRQHandler
// Trainer Port
#define TRAINER_IN_GPIO GPIO_PIN(GPIOI, 6) // TIM8_CH2
#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2
#define TRAINER_OUT_GPIO GPIO_PIN(GPIOI, 7) // TIM8_CH3
#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH3
#define TRAINER_TIMER TIM8
#define TRAINER_TIMER_IRQn TIM8_CC_IRQn
#define TRAINER_TIMER_IRQHandler TIM8_CC_IRQHandler
#define TRAINER_GPIO_AF LL_GPIO_AF_3
#define TRAINER_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
// Touch
#define TOUCH_I2C_BUS I2C_Bus_2
#define TOUCH_RST_GPIO GPIO_PIN(GPIOJ, 1) // PJ.01
#define TOUCH_INT_GPIO GPIO_PIN(GPIOD, 11) // PD.11
#define TOUCH_INT_EXTI_Line LL_EXTI_LINE_11
#define TOUCH_INT_EXTI_Port LL_SYSCFG_EXTI_PORTD
#define TOUCH_INT_EXTI_SysCfgLine LL_SYSCFG_EXTI_LINE11
// TOUCH_INT_EXTI IRQ
#if !defined(USE_EXTI15_10_IRQ)
#define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 9
#endif
//ROTARY emulation for trims as buttons
#define ROTARY_ENCODER_NAVIGATION
// Rotary Encoder
#define ROTARY_ENCODER_GPIO_A GPIOA
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_6
#define ROTARY_ENCODER_GPIO_B GPIOA
#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_7
#define ROTARY_ENCODER_POSITION() (((ROTARY_ENCODER_GPIO_A->IDR >> 6) & 0x01)|((ROTARY_ENCODER_GPIO_B->IDR >> 6) & 0x02))
#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_6
#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_7
#if !defined(USE_EXTI9_5_IRQ)
#define USE_EXTI9_5_IRQ
#define EXTI9_5_IRQ_Priority 9
#endif
#define ROTARY_ENCODER_EXTI_PORT_A LL_SYSCFG_EXTI_PORTA
#define ROTARY_ENCODER_EXTI_PORT_B LL_SYSCFG_EXTI_PORTA
#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE6
#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE7
#define ROTARY_ENCODER_TIMER TIM17
#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn
#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler
// Millisecond timer
#define MS_TIMER TIM14
#define MS_TIMER_IRQn TIM8_TRG_COM_TIM14_IRQn
#define MS_TIMER_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
// Mixer scheduler timer
#define MIXER_SCHEDULER_TIMER TIM12
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_BRK_TIM12_IRQn
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler
#define LANDSCAPE_LCD true
#define PORTRAIT_LCD false
#define LANDSCAPE_LCD_SML false
#define LANDSCAPE_LCD_STD true
#define LANDSCAPE_LCD_LRG false
#define LCD_W 480
#define LCD_H 320
#define LCD_PHYS_W LCD_W
#define LCD_PHYS_H LCD_H
#define LCD_DEPTH 16
#define LSE_DRIVE_STRENGTH RCC_LSEDRIVE_HIGH
#endif // _HAL_H_
+26
View File
@@ -0,0 +1,26 @@
/*
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#pragma once
#define USB_NAME "T22"
#define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'T', '2', '2', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
+1 -1
View File
@@ -822,7 +822,7 @@ LEGACY_NAMES = [
}
},
{
"targets": {"t20","t20v2"},
"targets": {"t20","t20v2", "t22"},
"inputs": {
"LH": {
"yaml": "Rud",
+3
View File
@@ -116,6 +116,9 @@ get_target_build_options() {
t15pro)
BUILD_OPTIONS+="-DPCB=T15PRO"
;;
t22)
BUILD_OPTIONS+="-DPCB=T22"
;;
tx15)
BUILD_OPTIONS+="-DPCB=TX15"
;;
+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;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;v12;tx15"}
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}
# wipe build directory clean
+1 -1
View File
@@ -11,7 +11,7 @@ if [[ -n ${GCC_ARM} ]] ; then
export PATH=${GCC_ARM}:$PATH
fi
: ${FLAVOR:="t15;tx16s;pl18;nv14;pl18u;nb4p;x9d;x9dp2019;x9e;xlite;xlites;x7;tpro;t20;f16;gx12;st16;pa01;tx15;t15pro;tx16smk3"}
: ${FLAVOR:="t15;tx16s;pl18;nv14;pl18u;nb4p;x9d;x9dp2019;x9e;xlite;xlites;x7;tpro;t20;f16;gx12;st16;pa01;tx15;t15pro;tx16smk3;t22"}
: ${SRCDIR:=$(dirname "$(pwd)/$0")/..}
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DDISABLE_COMPANION=YES -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}