feat: support for Jumper T22 (#7420)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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-"],
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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_
|
||||
@@ -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 */
|
||||
@@ -822,7 +822,7 @@ LEGACY_NAMES = [
|
||||
}
|
||||
},
|
||||
{
|
||||
"targets": {"t20","t20v2"},
|
||||
"targets": {"t20","t20v2", "t22"},
|
||||
"inputs": {
|
||||
"LH": {
|
||||
"yaml": "Rud",
|
||||
|
||||
@@ -116,6 +116,9 @@ get_target_build_options() {
|
||||
t15pro)
|
||||
BUILD_OPTIONS+="-DPCB=T15PRO"
|
||||
;;
|
||||
t22)
|
||||
BUILD_OPTIONS+="-DPCB=T22"
|
||||
;;
|
||||
tx15)
|
||||
BUILD_OPTIONS+="-DPCB=TX15"
|
||||
;;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"}
|
||||
|
||||
Reference in New Issue
Block a user