From 263e2584ed58c3a6e0b55d99c7800e8abd908039 Mon Sep 17 00:00:00 2001 From: philmoz Date: Thu, 6 Aug 2026 11:22:09 +1000 Subject: [PATCH 01/10] Move ROTARY_ENCODER_GRANULARITY to JSON. Use JSON for rotary encoder settings for all radios. Move touch panel settings. Move USB settings. Move trainer settings. Add 'hardware' section to hal_settings.h. Remove SPORT_MAX_BAUDRATE from hal.h files. --- radio/src/boards/hw_defs/boxer.json | 44 +++++ radio/src/boards/hw_defs/bumblebee.json | 44 +++++ radio/src/boards/hw_defs/c14.json | 40 +++++ radio/src/boards/hw_defs/commando8.json | 19 +++ radio/src/boards/hw_defs/el18.json | 32 ++++ radio/src/boards/hw_defs/f16.json | 53 ++++++ radio/src/boards/hw_defs/gx12.json | 43 +++++ radio/src/boards/hw_defs/gx15.json | 29 ++++ radio/src/boards/hw_defs/h17.json | 67 +++++--- radio/src/boards/hw_defs/lr3pro.json | 19 +++ radio/src/boards/hw_defs/mt12.json | 44 +++++ radio/src/boards/hw_defs/nb4p.json | 30 ++++ radio/src/boards/hw_defs/nv14.json | 32 ++++ radio/src/boards/hw_defs/pa01.json | 20 +++ radio/src/boards/hw_defs/pl18.json | 30 ++++ radio/src/boards/hw_defs/pl18ev.json | 30 ++++ radio/src/boards/hw_defs/pl18u.json | 31 ++++ radio/src/boards/hw_defs/pocket.json | 44 +++++ radio/src/boards/hw_defs/st16.json | 34 ++++ radio/src/boards/hw_defs/t12.json | 19 +++ radio/src/boards/hw_defs/t12max.json | 44 +++++ radio/src/boards/hw_defs/t14.json | 45 +++++ radio/src/boards/hw_defs/t15.json | 55 ++++++ radio/src/boards/hw_defs/t15h7.json | 3 +- radio/src/boards/hw_defs/t15pro.json | 34 +++- radio/src/boards/hw_defs/t16.json | 53 ++++++ radio/src/boards/hw_defs/t18.json | 66 ++++++++ radio/src/boards/hw_defs/t20.json | 44 +++++ radio/src/boards/hw_defs/t20v2.json | 44 +++++ radio/src/boards/hw_defs/t22.json | 34 +++- radio/src/boards/hw_defs/t8.json | 19 +++ radio/src/boards/hw_defs/tlite.json | 19 +++ radio/src/boards/hw_defs/tpro.json | 43 +++++ radio/src/boards/hw_defs/tpros.json | 44 +++++ radio/src/boards/hw_defs/tprov2.json | 43 +++++ radio/src/boards/hw_defs/tx12.json | 43 +++++ radio/src/boards/hw_defs/tx12mk2.json | 44 +++++ radio/src/boards/hw_defs/tx15.json | 29 ++++ radio/src/boards/hw_defs/tx16s.json | 53 ++++++ radio/src/boards/hw_defs/tx16smk3.json | 29 ++++ radio/src/boards/hw_defs/v12.json | 20 ++- radio/src/boards/hw_defs/v14.json | 44 +++++ radio/src/boards/hw_defs/v14lcd.json | 44 +++++ radio/src/boards/hw_defs/v16.json | 50 ++++++ radio/src/boards/hw_defs/x10.json | 52 ++++++ radio/src/boards/hw_defs/x10express.json | 52 ++++++ radio/src/boards/hw_defs/x12s.json | 54 ++++++ radio/src/boards/hw_defs/x7.json | 43 +++++ radio/src/boards/hw_defs/x7access.json | 42 +++++ radio/src/boards/hw_defs/x9d+.json | 19 +++ radio/src/boards/hw_defs/x9d+2019.json | 38 +++++ radio/src/boards/hw_defs/x9d.json | 19 +++ radio/src/boards/hw_defs/x9e.json | 39 +++++ radio/src/boards/hw_defs/x9lite.json | 38 +++++ radio/src/boards/hw_defs/x9lites.json | 38 +++++ radio/src/boards/hw_defs/xlite.json | 11 ++ radio/src/boards/hw_defs/xlites.json | 17 ++ radio/src/boards/hw_defs/zorro.json | 44 +++++ radio/src/hal/rotary_encoder.h | 5 +- radio/src/targets/c14/hal.h | 45 ----- .../targets/common/arm/stm32/CMakeLists.txt | 17 +- radio/src/targets/gx15/hal.h | 35 ---- radio/src/targets/h17/hal.h | 43 ----- radio/src/targets/horus/board.h | 3 - radio/src/targets/horus/hal.h | 76 --------- radio/src/targets/pa01/hal.h | 28 ---- radio/src/targets/pl18/hal.h | 48 ------ radio/src/targets/st16/hal.h | 44 ----- radio/src/targets/t15pro/hal.h | 39 ----- radio/src/targets/t22/CMakeLists.txt | 1 - radio/src/targets/t22/hal.h | 39 ----- radio/src/targets/taranis/hal.h | 157 ------------------ radio/src/targets/tx15/hal.h | 38 ----- radio/src/targets/tx16smk3/hal.h | 38 ----- radio/src/targets/v12/CMakeLists.txt | 1 - radio/src/targets/v12/hal.h | 23 --- radio/util/hw_defs/generator.py | 4 + radio/util/hw_defs/hal_settings.jinja | 73 ++++++++ radio/util/hw_defs/models.py | 48 ++++++ tools/hwdef_schema.json | 58 ++++++- 80 files changed, 2322 insertions(+), 697 deletions(-) diff --git a/radio/src/boards/hw_defs/boxer.json b/radio/src/boards/hw_defs/boxer.json index 45238dee6a6..4622c14282f 100644 --- a/radio/src/boards/hw_defs/boxer.json +++ b/radio/src/boards/hw_defs/boxer.json @@ -351,6 +351,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -361,6 +386,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/bumblebee.json b/radio/src/boards/hw_defs/bumblebee.json index 8935ffd9dd5..ff3bda79b68 100644 --- a/radio/src/boards/hw_defs/bumblebee.json +++ b/radio/src/boards/hw_defs/bumblebee.json @@ -422,6 +422,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler", + "rotary_encoder_granularity": 4 + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -432,6 +457,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOE, 3)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/c14.json b/radio/src/boards/hw_defs/c14.json index f94fe44bb20..abe097abe0d 100644 --- a/radio/src/boards/hw_defs/c14.json +++ b/radio/src/boards/hw_defs/c14.json @@ -314,6 +314,21 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOI, 3)", + "touch_rst_gpio": "GPIO_PIN(GPIOI, 11)", + "touch_int_exti_line": "LL_EXTI_LINE_3", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTI", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE3", + "gt911_rotation_mode": 180, + "exti": [ + { + "irq": "EXTI3_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOG, 10)", @@ -351,6 +366,14 @@ { "irq": "EXTI4_IRQ", "priority": 6 } ] }, + "rotenc": { + "rotary_encoder_gpio": "GPIOG", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_2", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_3", + "rotary_encoder_timer": "TIM17", + "rotary_encoder_timer_irqn": "TIM17_IRQn", + "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 5)", @@ -381,6 +404,23 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOC, 0)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOE, 5)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOE, 6)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM15", + "trainer_timer_irqn": "TIM15_IRQn", + "trainer_timer_irqhandler": "TIM15_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_4", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/commando8.json b/radio/src/boards/hw_defs/commando8.json index 496677c325c..e74a68d564c 100644 --- a/radio/src/boards/hw_defs/commando8.json +++ b/radio/src/boards/hw_defs/commando8.json @@ -307,6 +307,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/el18.json b/radio/src/boards/hw_defs/el18.json index 84cc73d7476..92fedcc0aa8 100644 --- a/radio/src/boards/hw_defs/el18.json +++ b/radio/src/boards/hw_defs/el18.json @@ -335,6 +335,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOB, 9)", + "touch_rst_gpio": "GPIO_PIN(GPIOB, 12)", + "touch_int_exti_line": "LL_EXTI_LINE_9", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTB", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE9", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 15)", "backlight_timer": "TIM2", @@ -371,5 +385,23 @@ "haptic_timer_output_enable": "TIM_CCER_CC1E | TIM_CCER_CC1NE", "haptic_timer_mode": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR1" + }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10", + "usb_sw_gpio": "GPIO_PIN(GPIOI, 10)" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/f16.json b/radio/src/boards/hw_defs/f16.json index 586e211e142..89ae1fbeabe 100644 --- a/radio/src/boards/hw_defs/f16.json +++ b/radio/src/boards/hw_defs/f16.json @@ -430,6 +430,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOE, 2)", @@ -458,6 +472,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOE, 6)", @@ -467,6 +501,25 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/gx12.json b/radio/src/boards/hw_defs/gx12.json index 9d97e469713..95fa232f666 100644 --- a/radio/src/boards/hw_defs/gx12.json +++ b/radio/src/boards/hw_defs/gx12.json @@ -479,6 +479,30 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -489,6 +513,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/gx15.json b/radio/src/boards/hw_defs/gx15.json index 6b16dcbfa72..9500564bf20 100644 --- a/radio/src/boards/hw_defs/gx15.json +++ b/radio/src/boards/hw_defs/gx15.json @@ -442,6 +442,17 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_2", + "touch_int_gpio": "GPIO_PIN(GPIOE, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOJ, 13)", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 10)", "backlight_timer": "TIM1", @@ -540,6 +551,24 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOH, 11)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOI, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOI, 5)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM8", + "trainer_timer_irqn": "TIM8_CC_IRQn", + "trainer_timer_irqhandler": "TIM8_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_3", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)", + "trainer_detect_gpio": "GPIO_PIN(GPIOH, 4)" + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/h17.json b/radio/src/boards/hw_defs/h17.json index 02deecc375e..50613321ba5 100644 --- a/radio/src/boards/hw_defs/h17.json +++ b/radio/src/boards/hw_defs/h17.json @@ -408,6 +408,17 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOE, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOJ, 13)", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 10)", "backlight_timer": "TIM1", @@ -415,15 +426,6 @@ "backlight_gpio_af": "GPIO_AF1", "backlight_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)" }, - "haptic": { - "haptic_pwm": true, - "haptic_gpio": "GPIO_PIN(GPIOC, 7)", - "haptic_gpio_timer": "TIM3", - "haptic_gpio_af": "GPIO_AF2", - "haptic_timer_output_enable": "TIM_CCER_CC2E | TIM_CCER_CC2NE", - "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", - "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" - }, "leds": { "status_leds": true, "gpio_led_gpio_on": "gpio_set", @@ -432,6 +434,15 @@ "led_green_gpio": "GPIO_PIN(GPIOI, 11)", "led_blue_gpio": "GPIO_PIN(GPIOI, 10)" }, + "hardware": { + "has_audio_mute": true, + "has_ext_module_support": true, + "has_int_module_support": true, + "sport_max_baudrate": 400000, + "surface": false, + "cpu": "STM32H750xB", + "cpu_type": "STM32H7" + }, "timers": { "cpu_freq": 480000000, "peri1_frequency": 120000000, @@ -466,17 +477,35 @@ "rotary_encoder_timer_irqn": "TIM17_IRQn", "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler" }, + "haptic": { + "haptic_pwm": true, + "haptic_gpio": "GPIO_PIN(GPIOC, 7)", + "haptic_gpio_timer": "TIM3", + "haptic_gpio_af": "GPIO_AF2", + "haptic_timer_output_enable": "TIM_CCER_CC2E | TIM_CCER_CC2NE", + "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", + "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" + }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOH, 5)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOI, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOI, 5)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM8", + "trainer_timer_irqn": "TIM8_CC_IRQn", + "trainer_timer_irqhandler": "TIM8_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_3", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)", + "trainer_detect_gpio": "GPIO_PIN(GPIOH, 4)" + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" - ], - "hardware": { - "has_audio_mute": true, - "has_ext_module_support": true, - "has_int_module_support": true, - "sport_max_baudrate": 400000, - "surface": false, - "cpu": "STM32H750xB", - "cpu_type": "STM32H7" - } + ] } diff --git a/radio/src/boards/hw_defs/lr3pro.json b/radio/src/boards/hw_defs/lr3pro.json index 69fe92b7a02..42dd9e0ae53 100644 --- a/radio/src/boards/hw_defs/lr3pro.json +++ b/radio/src/boards/hw_defs/lr3pro.json @@ -289,6 +289,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_ENTER", "KEY_RIGHT" diff --git a/radio/src/boards/hw_defs/mt12.json b/radio/src/boards/hw_defs/mt12.json index caa465a5dd4..628480a2789 100644 --- a/radio/src/boards/hw_defs/mt12.json +++ b/radio/src/boards/hw_defs/mt12.json @@ -344,6 +344,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -354,6 +379,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOD, 14)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/nb4p.json b/radio/src/boards/hw_defs/nb4p.json index fa0c03783ee..01f309628ab 100644 --- a/radio/src/boards/hw_defs/nb4p.json +++ b/radio/src/boards/hw_defs/nb4p.json @@ -162,6 +162,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOB, 9)", + "touch_rst_gpio": "GPIO_PIN(GPIOB, 12)", + "touch_int_exti_line": "LL_EXTI_LINE_9", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTB", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE9", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 15)", "backlight_timer": "TIM2", @@ -235,5 +249,21 @@ "haptic_timer_output_enable": "TIM_CCER_CC2NE", "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" + }, + "usb": { + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/nv14.json b/radio/src/boards/hw_defs/nv14.json index d8d7df6a738..0d73b466aa8 100644 --- a/radio/src/boards/hw_defs/nv14.json +++ b/radio/src/boards/hw_defs/nv14.json @@ -335,6 +335,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOB, 9)", + "touch_rst_gpio": "GPIO_PIN(GPIOB, 12)", + "touch_int_exti_line": "LL_EXTI_LINE_9", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTB", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE9", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 15)", "backlight_timer": "TIM2", @@ -371,5 +385,23 @@ "haptic_timer_output_enable": "TIM_CCER_CC1E | TIM_CCER_CC1NE", "haptic_timer_mode": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR1" + }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10", + "usb_sw_gpio": "GPIO_PIN(GPIOI, 10)" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/pa01.json b/radio/src/boards/hw_defs/pa01.json index a33ec4981b6..7465f3b5811 100644 --- a/radio/src/boards/hw_defs/pa01.json +++ b/radio/src/boards/hw_defs/pa01.json @@ -296,6 +296,9 @@ "lcd_phys_h": 240, "lcd_depth": 16 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1" + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOB, 3)", "backlight_timer": "TIM2", @@ -372,5 +375,22 @@ "haptic_gpio": "GPIO_PIN(GPIOA, 15)", "haptic_gpio_timer": "TIM2", "haptic_gpio_af": "GPIO_AF1" + }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOB, 0)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOA, 10)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOA, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM1", + "trainer_timer_irqn": "TIM1_CC_IRQn", + "trainer_timer_irqhandler": "TIM1_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_1", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/pl18.json b/radio/src/boards/hw_defs/pl18.json index 792d905d48d..a3caf4c3740 100644 --- a/radio/src/boards/hw_defs/pl18.json +++ b/radio/src/boards/hw_defs/pl18.json @@ -306,6 +306,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOB, 9)", + "touch_rst_gpio": "GPIO_PIN(GPIOB, 12)", + "touch_int_exti_line": "LL_EXTI_LINE_9", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTB", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE9", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 15)", "backlight_timer": "TIM2", @@ -358,5 +372,21 @@ "haptic_timer_output_enable": "TIM_CCER_CC1E | TIM_CCER_CC1NE", "haptic_timer_mode": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR1" + }, + "usb": { + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/pl18ev.json b/radio/src/boards/hw_defs/pl18ev.json index a1aded9a57c..d0fdeb0c9cb 100644 --- a/radio/src/boards/hw_defs/pl18ev.json +++ b/radio/src/boards/hw_defs/pl18ev.json @@ -350,6 +350,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOB, 9)", + "touch_rst_gpio": "GPIO_PIN(GPIOB, 12)", + "touch_int_exti_line": "LL_EXTI_LINE_9", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTB", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE9", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 15)", "backlight_timer": "TIM2", @@ -402,5 +416,21 @@ "haptic_timer_output_enable": "TIM_CCER_CC1E | TIM_CCER_CC1NE", "haptic_timer_mode": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR1" + }, + "usb": { + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/pl18u.json b/radio/src/boards/hw_defs/pl18u.json index 363798b524f..13d1d253b59 100644 --- a/radio/src/boards/hw_defs/pl18u.json +++ b/radio/src/boards/hw_defs/pl18u.json @@ -321,6 +321,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOB, 9)", + "touch_rst_gpio": "GPIO_PIN(GPIOB, 12)", + "touch_int_exti_line": "LL_EXTI_LINE_9", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTB", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE9", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 15)", "backlight_timer": "TIM2", @@ -374,5 +388,22 @@ "haptic_timer_output_enable": "TIM_CCER_CC1E | TIM_CCER_CC1NE", "haptic_timer_mode": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR1" + }, + "usb": { + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10", + "usb_sw_gpio": "GPIO_PIN(GPIOI, 5)" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/pocket.json b/radio/src/boards/hw_defs/pocket.json index b2915f8ffe1..e7f138f3571 100644 --- a/radio/src/boards/hw_defs/pocket.json +++ b/radio/src/boards/hw_defs/pocket.json @@ -314,6 +314,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -324,6 +349,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/st16.json b/radio/src/boards/hw_defs/st16.json index 77a2785233c..32fbe9390bc 100644 --- a/radio/src/boards/hw_defs/st16.json +++ b/radio/src/boards/hw_defs/st16.json @@ -398,6 +398,23 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_i2c_clk_rate": 100000, + "touch_int_gpio": "GPIOI", + "touch_int_gpio_pin": "LL_GPIO_PIN_11", + "touch_rst_gpio": "GPIOI", + "touch_rst_gpio_pin": "LL_GPIO_PIN_3", + "touch_int_exti_line": "LL_EXTI_LINE_11", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTI", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE11", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOC, 6)", "backlight_timer": "TIM3", @@ -483,6 +500,23 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOC, 0)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOE, 5)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOE, 6)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM15", + "trainer_timer_irqn": "TIM15_IRQn", + "trainer_timer_irqhandler": "TIM15_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_4", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" + }, "key_lock_combo": [ "KEY_EXIT", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/t12.json b/radio/src/boards/hw_defs/t12.json index 504ba37c18a..c176d7acafa 100644 --- a/radio/src/boards/hw_defs/t12.json +++ b/radio/src/boards/hw_defs/t12.json @@ -363,6 +363,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_ENTER", "KEY_RIGHT" diff --git a/radio/src/boards/hw_defs/t12max.json b/radio/src/boards/hw_defs/t12max.json index 1d3a22d88e4..36c8a955702 100644 --- a/radio/src/boards/hw_defs/t12max.json +++ b/radio/src/boards/hw_defs/t12max.json @@ -314,6 +314,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler", + "rotary_encoder_granularity": 4 + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -324,6 +349,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_PAGEDN", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/t14.json b/radio/src/boards/hw_defs/t14.json index cc8a1ae8c39..1ac6d646a3a 100644 --- a/radio/src/boards/hw_defs/t14.json +++ b/radio/src/boards/hw_defs/t14.json @@ -329,6 +329,32 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler", + "rotary_encoder_granularity": 4 + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -339,6 +365,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/t15.json b/radio/src/boards/hw_defs/t15.json index 228fd49bfd5..e4268365c10 100644 --- a/radio/src/boards/hw_defs/t15.json +++ b/radio/src/boards/hw_defs/t15.json @@ -364,6 +364,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOI, 14)", @@ -392,6 +406,28 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler", + "rotary_encoder_granularity": 4 + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOA, 5)", @@ -401,6 +437,25 @@ "haptic_timer_mode": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR1" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_TELE" diff --git a/radio/src/boards/hw_defs/t15h7.json b/radio/src/boards/hw_defs/t15h7.json index 18a0fa0d6c6..d053eaaf174 100644 --- a/radio/src/boards/hw_defs/t15h7.json +++ b/radio/src/boards/hw_defs/t15h7.json @@ -439,7 +439,8 @@ "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE7", "rotary_encoder_timer": "TIM17", "rotary_encoder_timer_irqn": "TIM17_IRQn", - "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler" + "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler", + "rotary_encoder_granularity": 4 }, "haptic": { "haptic_pwm": true, diff --git a/radio/src/boards/hw_defs/t15pro.json b/radio/src/boards/hw_defs/t15pro.json index 09f55e40d16..67608d79f1a 100644 --- a/radio/src/boards/hw_defs/t15pro.json +++ b/radio/src/boards/hw_defs/t15pro.json @@ -368,6 +368,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_2", + "touch_int_gpio": "GPIO_PIN(GPIOD, 11)", + "touch_rst_gpio": "GPIO_PIN(GPIOJ, 1)", + "touch_int_exti_line": "LL_EXTI_LINE_11", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTD", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE11", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 5)", "backlight_timer": "TIM2", @@ -439,7 +453,8 @@ "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE7", "rotary_encoder_timer": "TIM17", "rotary_encoder_timer_irqn": "TIM17_IRQn", - "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler" + "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler", + "rotary_encoder_granularity": 4 }, "haptic": { "haptic_pwm": true, @@ -450,6 +465,23 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOI, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOI, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_timer": "TIM8", + "trainer_timer_irqn": "TIM8_CC_IRQn", + "trainer_timer_irqhandler": "TIM8_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_3", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)" + }, "key_lock_combo": [ "KEY_PAGEDN", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/t16.json b/radio/src/boards/hw_defs/t16.json index 0fea709d697..7ef653c60e7 100644 --- a/radio/src/boards/hw_defs/t16.json +++ b/radio/src/boards/hw_defs/t16.json @@ -444,6 +444,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOE, 2)", @@ -472,6 +486,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOE, 6)", @@ -481,6 +515,25 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/t18.json b/radio/src/boards/hw_defs/t18.json index 80d426f0191..602bdddf737 100644 --- a/radio/src/boards/hw_defs/t18.json +++ b/radio/src/boards/hw_defs/t18.json @@ -445,6 +445,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOE, 2)", @@ -473,6 +487,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOE, 6)", @@ -482,6 +516,38 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", + "trainer_detect_inverted": true + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/t20.json b/radio/src/boards/hw_defs/t20.json index bb720dc80d7..649a8082051 100644 --- a/radio/src/boards/hw_defs/t20.json +++ b/radio/src/boards/hw_defs/t20.json @@ -552,6 +552,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler", + "rotary_encoder_granularity": 4 + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 8)", @@ -562,6 +587,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOE, 3)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/t20v2.json b/radio/src/boards/hw_defs/t20v2.json index 4db16c766df..771682dbc1c 100644 --- a/radio/src/boards/hw_defs/t20v2.json +++ b/radio/src/boards/hw_defs/t20v2.json @@ -555,6 +555,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler", + "rotary_encoder_granularity": 4 + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -565,6 +590,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOE, 3)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/t22.json b/radio/src/boards/hw_defs/t22.json index 1086a29cf40..b00834933f7 100644 --- a/radio/src/boards/hw_defs/t22.json +++ b/radio/src/boards/hw_defs/t22.json @@ -475,6 +475,20 @@ "lcd_phys_h": 480, "lcd_depth": 16 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_2", + "touch_int_gpio": "GPIO_PIN(GPIOD, 11)", + "touch_rst_gpio": "GPIO_PIN(GPIOJ, 1)", + "touch_int_exti_line": "LL_EXTI_LINE_11", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTD", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE11", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 9 + } + ] + }, "leds": { "led_strip_length": 7, "bling_led_strip_start": 6, @@ -540,7 +554,8 @@ "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE7", "rotary_encoder_timer": "TIM17", "rotary_encoder_timer_irqn": "TIM17_IRQn", - "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler" + "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler", + "rotary_encoder_granularity": 4 }, "haptic": { "haptic_pwm": true, @@ -551,6 +566,23 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOI, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOI, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_timer": "TIM8", + "trainer_timer_irqn": "TIM8_CC_IRQn", + "trainer_timer_irqhandler": "TIM8_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_3", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)" + }, "key_lock_combo": [ "KEY_PAGEDN", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/t8.json b/radio/src/boards/hw_defs/t8.json index e93e5680cc9..417e7dbedd0 100644 --- a/radio/src/boards/hw_defs/t8.json +++ b/radio/src/boards/hw_defs/t8.json @@ -302,6 +302,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/tlite.json b/radio/src/boards/hw_defs/tlite.json index 21fb0784e2f..ad283722c43 100644 --- a/radio/src/boards/hw_defs/tlite.json +++ b/radio/src/boards/hw_defs/tlite.json @@ -287,6 +287,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_ENTER", "KEY_RIGHT" diff --git a/radio/src/boards/hw_defs/tpro.json b/radio/src/boards/hw_defs/tpro.json index abafae44ffe..23c03ffba99 100644 --- a/radio/src/boards/hw_defs/tpro.json +++ b/radio/src/boards/hw_defs/tpro.json @@ -383,6 +383,30 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 8)", @@ -393,6 +417,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/tpros.json b/radio/src/boards/hw_defs/tpros.json index 7a8678a13c5..836c2401a52 100644 --- a/radio/src/boards/hw_defs/tpros.json +++ b/radio/src/boards/hw_defs/tpros.json @@ -316,6 +316,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -326,6 +351,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/tprov2.json b/radio/src/boards/hw_defs/tprov2.json index ec53426f777..da9f65d4ce1 100644 --- a/radio/src/boards/hw_defs/tprov2.json +++ b/radio/src/boards/hw_defs/tprov2.json @@ -413,6 +413,30 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 8)", @@ -423,6 +447,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/tx12.json b/radio/src/boards/hw_defs/tx12.json index 1dc7ec28e52..501b4ccc04d 100644 --- a/radio/src/boards/hw_defs/tx12.json +++ b/radio/src/boards/hw_defs/tx12.json @@ -363,6 +363,30 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 8)", @@ -373,6 +397,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/tx12mk2.json b/radio/src/boards/hw_defs/tx12mk2.json index 45a7a94d3d0..04c6d669507 100644 --- a/radio/src/boards/hw_defs/tx12mk2.json +++ b/radio/src/boards/hw_defs/tx12mk2.json @@ -343,6 +343,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -353,6 +378,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/tx15.json b/radio/src/boards/hw_defs/tx15.json index b051f6d5e51..85fa800d51e 100644 --- a/radio/src/boards/hw_defs/tx15.json +++ b/radio/src/boards/hw_defs/tx15.json @@ -338,6 +338,17 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOE, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOJ, 13)", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 10)", "backlight_timer": "TIM1", @@ -436,6 +447,24 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOH, 5)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOI, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOI, 5)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM8", + "trainer_timer_irqn": "TIM8_CC_IRQn", + "trainer_timer_irqhandler": "TIM8_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_3", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)", + "trainer_detect_gpio": "GPIO_PIN(GPIOH, 4)" + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/tx16s.json b/radio/src/boards/hw_defs/tx16s.json index 1ca037fdb8c..cbf9bd97a8b 100644 --- a/radio/src/boards/hw_defs/tx16s.json +++ b/radio/src/boards/hw_defs/tx16s.json @@ -452,6 +452,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOE, 2)", @@ -480,6 +494,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOE, 6)", @@ -489,6 +523,25 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/tx16smk3.json b/radio/src/boards/hw_defs/tx16smk3.json index 7eff9231a38..1fb8f881546 100644 --- a/radio/src/boards/hw_defs/tx16smk3.json +++ b/radio/src/boards/hw_defs/tx16smk3.json @@ -452,6 +452,17 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOE, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOJ, 13)", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 10)", "backlight_timer": "TIM1", @@ -550,6 +561,24 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOH, 11)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOI, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOI, 5)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM8", + "trainer_timer_irqn": "TIM8_CC_IRQn", + "trainer_timer_irqhandler": "TIM8_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_3", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)", + "trainer_detect_gpio": "GPIO_PIN(GPIOH, 4)" + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/v12.json b/radio/src/boards/hw_defs/v12.json index 90bc67986ef..bf7e3bf751a 100644 --- a/radio/src/boards/hw_defs/v12.json +++ b/radio/src/boards/hw_defs/v12.json @@ -421,7 +421,8 @@ "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE4", "rotary_encoder_timer": "TIM17", "rotary_encoder_timer_irqn": "TIM17_IRQn", - "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler" + "rotary_encoder_timer_irqhandler": "TIM17_IRQHandler", + "rotary_encoder_granularity": 4 }, "haptic": { "haptic_pwm": true, @@ -431,5 +432,22 @@ "haptic_timer_output_enable": "TIM_CCER_CC2E | TIM_CCER_CC2NE", "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" + }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOB, 12)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)" } } diff --git a/radio/src/boards/hw_defs/v14.json b/radio/src/boards/hw_defs/v14.json index 7e46e80e3c4..3c5887e47fd 100644 --- a/radio/src/boards/hw_defs/v14.json +++ b/radio/src/boards/hw_defs/v14.json @@ -387,6 +387,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -397,6 +422,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/v14lcd.json b/radio/src/boards/hw_defs/v14lcd.json index 175cee69264..dd8125dbda7 100644 --- a/radio/src/boards/hw_defs/v14lcd.json +++ b/radio/src/boards/hw_defs/v14lcd.json @@ -386,6 +386,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -396,6 +421,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/v16.json b/radio/src/boards/hw_defs/v16.json index 0353de178b9..fa20809d14f 100644 --- a/radio/src/boards/hw_defs/v16.json +++ b/radio/src/boards/hw_defs/v16.json @@ -449,6 +449,17 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "led_strip_length": 40, "bling_led_strip_start": 6, @@ -491,6 +502,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOE, 6)", @@ -500,6 +531,25 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/x10.json b/radio/src/boards/hw_defs/x10.json index ca9dab89f17..90c9a98ca8b 100644 --- a/radio/src/boards/hw_defs/x10.json +++ b/radio/src/boards/hw_defs/x10.json @@ -450,6 +450,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOE, 2)", @@ -477,6 +491,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOE, 6)", @@ -486,6 +520,24 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)" + }, "key_lock_combo": [ "KEY_PAGEDN", "KEY_SYS" diff --git a/radio/src/boards/hw_defs/x10express.json b/radio/src/boards/hw_defs/x10express.json index e5ffadb76a9..7de34bfd3c0 100644 --- a/radio/src/boards/hw_defs/x10express.json +++ b/radio/src/boards/hw_defs/x10express.json @@ -450,6 +450,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true, "led_red_gpio": "GPIO_PIN(GPIOE, 2)", @@ -477,6 +491,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOE, 6)", @@ -486,6 +520,24 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)" + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/boards/hw_defs/x12s.json b/radio/src/boards/hw_defs/x12s.json index cba8c0a0372..36464e0c76d 100644 --- a/radio/src/boards/hw_defs/x12s.json +++ b/radio/src/boards/hw_defs/x12s.json @@ -442,6 +442,21 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_1", + "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", + "touch_rst_gpio": "GPIO_PIN(GPIOF, 7)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", + "touch_panel_inverted": true, + "exti": [ + { + "irq": "EXTI2_IRQ", + "priority": 9 + } + ] + }, "leds": { "status_leds": true }, @@ -466,6 +481,26 @@ "mixer_scheduler_timer_irqn": "TIM8_UP_TIM13_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_UP_TIM13_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOH", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_11", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_11", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTH", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM12", + "rotary_encoder_timer_irqn": "TIM8_BRK_TIM12_IRQn", + "rotary_encoder_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOA, 2)", @@ -475,6 +510,25 @@ "haptic_timer_mode": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR1" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_PAGEUP", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/x7.json b/radio/src/boards/hw_defs/x7.json index 7d460cd0001..208cd4a48cc 100644 --- a/radio/src/boards/hw_defs/x7.json +++ b/radio/src/boards/hw_defs/x7.json @@ -341,6 +341,30 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 8)", @@ -351,6 +375,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/x7access.json b/radio/src/boards/hw_defs/x7access.json index ac430c6f259..7eda6048891 100644 --- a/radio/src/boards/hw_defs/x7access.json +++ b/radio/src/boards/hw_defs/x7access.json @@ -326,6 +326,30 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOA, 10)", @@ -336,6 +360,24 @@ "haptic_ccmr2": "TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2", "haptic_ccer": "TIM_CCER_CC3E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)" + }, "key_lock_combo": [ "KEY_MENU", "KEY_ENTER" diff --git a/radio/src/boards/hw_defs/x9d+.json b/radio/src/boards/hw_defs/x9d+.json index 59ec0447be9..1b197730e03 100644 --- a/radio/src/boards/hw_defs/x9d+.json +++ b/radio/src/boards/hw_defs/x9d+.json @@ -400,6 +400,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_EXIT" diff --git a/radio/src/boards/hw_defs/x9d+2019.json b/radio/src/boards/hw_defs/x9d+2019.json index 7c7f83e63cb..e0aa559c573 100644 --- a/radio/src/boards/hw_defs/x9d+2019.json +++ b/radio/src/boards/hw_defs/x9d+2019.json @@ -384,6 +384,26 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_10", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_11", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 11) & 0x01))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_10", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_11", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE11", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOA, 10)", @@ -394,6 +414,24 @@ "haptic_ccmr2": "TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2", "haptic_ccer": "TIM_CCER_CC3E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)" + }, "key_lock_combo": [ "KEY_MENU", "KEY_EXIT" diff --git a/radio/src/boards/hw_defs/x9d.json b/radio/src/boards/hw_defs/x9d.json index 7b4b0334811..f1959a2de23 100644 --- a/radio/src/boards/hw_defs/x9d.json +++ b/radio/src/boards/hw_defs/x9d.json @@ -379,6 +379,25 @@ "haptic": { "haptic_gpio": "GPIO_PIN(GPIOC, 14)" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_EXIT" diff --git a/radio/src/boards/hw_defs/x9e.json b/radio/src/boards/hw_defs/x9e.json index 6539529745a..f37dd25bd89 100644 --- a/radio/src/boards/hw_defs/x9e.json +++ b/radio/src/boards/hw_defs/x9e.json @@ -582,6 +582,26 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOD", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_12", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_13", + "rotary_encoder_position": "(ROTARY_ENCODER_GPIO->IDR >> 12) & 0x03", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_12", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_13", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTD", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE12", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE13", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 8)", @@ -592,6 +612,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2", "haptic_ccer": "TIM_CCER_CC1E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_MENU", "KEY_EXIT" diff --git a/radio/src/boards/hw_defs/x9lite.json b/radio/src/boards/hw_defs/x9lite.json index 1b010a66199..de43a77af9c 100644 --- a/radio/src/boards/hw_defs/x9lite.json +++ b/radio/src/boards/hw_defs/x9lite.json @@ -289,6 +289,26 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_10", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_12", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x01) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_10", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_12", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE12", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -299,6 +319,24 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOD, 11)" + }, "key_lock_combo": [ "KEY_MENU", "KEY_EXIT" diff --git a/radio/src/boards/hw_defs/x9lites.json b/radio/src/boards/hw_defs/x9lites.json index b2cc71bccf6..82200865024 100644 --- a/radio/src/boards/hw_defs/x9lites.json +++ b/radio/src/boards/hw_defs/x9lites.json @@ -316,6 +316,26 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_10", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_12", + "rotary_encoder_position": "(((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x01) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02))", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_10", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_12", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE12", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -326,6 +346,24 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOD, 11)" + }, "key_lock_combo": [ "KEY_MENU", "KEY_EXIT" diff --git a/radio/src/boards/hw_defs/xlite.json b/radio/src/boards/hw_defs/xlite.json index c32ff5233d6..62f1a1f21d0 100644 --- a/radio/src/boards/hw_defs/xlite.json +++ b/radio/src/boards/hw_defs/xlite.json @@ -306,5 +306,16 @@ "haptic_counter_register": "HAPTIC_TIMER->CCR2", "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" + }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", } } diff --git a/radio/src/boards/hw_defs/xlites.json b/radio/src/boards/hw_defs/xlites.json index f6df208b5ce..a9e7f5cc810 100644 --- a/radio/src/boards/hw_defs/xlites.json +++ b/radio/src/boards/hw_defs/xlites.json @@ -333,5 +333,22 @@ "haptic_counter_register": "HAPTIC_TIMER->CCR2", "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" + }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOD, 13)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOD, 12)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH1", + "trainer_timer": "TIM4", + "trainer_timer_irqn": "TIM4_IRQn", + "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_gpio_af": "GPIO_AF2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)" } } diff --git a/radio/src/boards/hw_defs/zorro.json b/radio/src/boards/hw_defs/zorro.json index 9bba9bfd721..06b4e731a99 100644 --- a/radio/src/boards/hw_defs/zorro.json +++ b/radio/src/boards/hw_defs/zorro.json @@ -367,6 +367,31 @@ "mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn", "mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler" }, + "rotenc": { + "rotary_encoder_inverted": true, + "rotary_encoder_gpio": "GPIOE", + "rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_9", + "rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_10", + "rotary_encoder_position": "((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)", + "rotary_encoder_exti_line1": "LL_EXTI_LINE_9", + "rotary_encoder_exti_line2": "LL_EXTI_LINE_10", + "exti": [ + { + "irq": "EXTI9_5_IRQ", + "priority": 5 + }, + { + "irq": "EXTI15_10_IRQ", + "priority": 5 + } + ], + "rotary_encoder_exti_port": "LL_SYSCFG_EXTI_PORTE", + "rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE9", + "rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE10", + "rotary_encoder_timer": "TIM5", + "rotary_encoder_timer_irqn": "TIM5_IRQn", + "rotary_encoder_timer_irqhandler": "TIM5_IRQHandler" + }, "haptic": { "haptic_pwm": true, "haptic_gpio": "GPIO_PIN(GPIOB, 3)", @@ -377,6 +402,25 @@ "haptic_ccmr1": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2", "haptic_ccer": "TIM_CCER_CC2E" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", + "trainer_timer": "TIM3", + "trainer_timer_irqn": "TIM3_IRQn", + "trainer_timer_irqhandler": "TIM3_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_2", + "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", + "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", + "trainer_detect_inverted": true + }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" diff --git a/radio/src/hal/rotary_encoder.h b/radio/src/hal/rotary_encoder.h index f3f0d62014b..e1f29318d65 100644 --- a/radio/src/hal/rotary_encoder.h +++ b/radio/src/hal/rotary_encoder.h @@ -22,14 +22,13 @@ #pragma once #include +#include "hal_settings.h" #define ROTENC_LOWSPEED 1 #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_T15H7) || defined(RADIO_T22) || defined(RADIO_BUMBLEBEE) || defined(RADIO_V12) -#define ROTARY_ENCODER_GRANULARITY 4 -#else +#if !defined(ROTARY_ENCODER_GRANULARITY) #define ROTARY_ENCODER_GRANULARITY 2 #endif diff --git a/radio/src/targets/c14/hal.h b/radio/src/targets/c14/hal.h index 087bd225697..1de853d7049 100644 --- a/radio/src/targets/c14/hal.h +++ b/radio/src/targets/c14/hal.h @@ -58,15 +58,6 @@ UART5: TELEMETRY_USART */ -// Rotary encoder simulated via KEY_UP (PG.02) and KEY_DOWN (PG.03) buttons -#define ROTARY_ENCODER_NAVIGATION -#define ROTARY_ENCODER_GPIO GPIOG -#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_2 // PG.02 KEY_UP -#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_3 // PG.03 KEY_DOWN -#define ROTARY_ENCODER_TIMER TIM17 -#define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn -#define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler - #define ADC_VREF_PREC2 329 #define PWM_STICKS @@ -90,9 +81,6 @@ UART5: TELEMETRY_USART // TODO! Check IOLL1 to PI.01 connectivity! -// S.Port update connector -#define HAS_SPORT_UPDATE_CONNECTOR() (false) - // Telemetry #define TELEMETRY_TX_GPIO GPIO_PIN(GPIOB, 13) #define TELEMETRY_RX_GPIO GPIO_UNDEF //GPIO_PIN(GPIOB, 12) @@ -114,13 +102,6 @@ UART5: TELEMETRY_USART #define CUSTOM_EXTI_IRQ_LINE 86 #define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE -// USB -#define USB_GPIO GPIOA -#define USB_GPIO_VBUS GPIO_PIN(GPIOC, 0) // PC.00 -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) // PA.11 -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) // PA.12 -#define USB_GPIO_AF GPIO_AF10 - // LCD #define LCD_DISP_PORT GPIOC #define LCD_GPIO_NRST GPIO_PIN(GPIOC, 7) // PC.7 OK @@ -231,29 +212,3 @@ UART5: TELEMETRY_USART #define EXTMODULE_USART_IRQHandler USART2_IRQHandler #define EXTMODULE_USART_IRQn USART2_IRQn - -// Trainer Port -#define TRAINER_IN_GPIO GPIO_PIN(GPIOE, 5) // PE.05 -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOE, 6) // PE.06 -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_TIMER TIM15 -#define TRAINER_TIMER_IRQn TIM15_IRQn -#define TRAINER_TIMER_IRQHandler TIM15_IRQHandler -#define TRAINER_GPIO_AF LL_GPIO_AF_4 -#define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) - -// Touch -#define TOUCH_I2C_BUS I2C_Bus_1 -#define TOUCH_INT_GPIO GPIO_PIN(GPIOI, 3) // PI.03 OK -#define TOUCH_RST_GPIO GPIO_PIN(GPIOI, 11) // PI.11 OK -#define TOUCH_INT_EXTI_Line LL_EXTI_LINE_3 -#define TOUCH_INT_EXTI_Port LL_SYSCFG_EXTI_PORTI -#define TOUCH_INT_EXTI_SysCfgLine LL_SYSCFG_EXTI_LINE3 -#define USE_EXTI3_IRQ -#define EXTI3_IRQ_Priority 9 -#define GT911_ROTATION_MODE 180 - -#define TOUCH_I2C_CLK_RATE 100000 diff --git a/radio/src/targets/common/arm/stm32/CMakeLists.txt b/radio/src/targets/common/arm/stm32/CMakeLists.txt index 533dd9d6698..956b762ce6d 100644 --- a/radio/src/targets/common/arm/stm32/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/CMakeLists.txt @@ -43,9 +43,6 @@ if(NOT NATIVE_BUILD) ${STM32USB_DIR}/Core/Inc ${STM32USB_DIR}/Class/DFU/Inc) - set(FIRMWARE_SRC ${FIRMWARE_SRC} $) - set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) - # Bootloader USB devices add_library(stm32usb_device_bl OBJECT EXCLUDE_FROM_ALL ${STM32_DRIVER_DIR}/usbd_conf.c @@ -62,10 +59,6 @@ if(NOT NATIVE_BUILD) ${STM32USB_DIR}/Class/HID/Inc ${STM32USB_DIR}/Class/MSC/Inc) - add_dependencies(stm32usb_device_bl hal_usb_descriptor) - - set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) - # Firmware USB devices add_library(stm32usb_device_fw OBJECT EXCLUDE_FROM_ALL ${STM32_DRIVER_DIR}/usbd_conf.c @@ -87,10 +80,6 @@ if(NOT NATIVE_BUILD) ${STM32USB_DIR}/Class/HID/Inc ${STM32USB_DIR}/Class/MSC/Inc) - add_dependencies(stm32usb_device_fw hal_usb_descriptor) - - set(FIRMWARE_SRC ${FIRMWARE_SRC} $) - # HAL/LL based driver library add_library(stm32_drivers OBJECT EXCLUDE_FROM_ALL ${STM32_DRIVER_DIR}/stm32_hal.cpp @@ -133,12 +122,18 @@ if(NOT NATIVE_BUILD) ) add_dependencies(stm32_drivers hal_settings hal_pwm_sticks) + add_dependencies(stm32usb_device_bl hal_settings hal_usb_descriptor) + add_dependencies(stm32usb_device_fw hal_settings hal_usb_descriptor) set(FIRMWARE_SRC ${FIRMWARE_SRC} $) set(FIRMWARE_SRC ${FIRMWARE_SRC} $) + set(FIRMWARE_SRC ${FIRMWARE_SRC} $) + set(FIRMWARE_SRC ${FIRMWARE_SRC} $) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) + set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) + set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) endif() if(IMU) diff --git a/radio/src/targets/gx15/hal.h b/radio/src/targets/gx15/hal.h index 0fc8691f400..310453d5dcd 100644 --- a/radio/src/targets/gx15/hal.h +++ b/radio/src/targets/gx15/hal.h @@ -112,13 +112,6 @@ TIM17: ROTARY_ENCODER_TIMER #define CUSTOM_EXTI_IRQ_LINE 86 #define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE -// USB -#define USB_GPIO GPIOA -#define USB_GPIO_VBUS GPIO_PIN(GPIOH, 11) -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) -#define USB_GPIO_AF GPIO_AF10 - // LCD #define LCD_SPI_CS_GPIO GPIOD #define LCD_SPI_CS_GPIO_PIN LL_GPIO_PIN_5 @@ -272,23 +265,6 @@ TIM17: ROTARY_ENCODER_TIMER #define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream6_IRQn #define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream6_IRQHandler -// Trainer Port -#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA) - -#define TRAINER_IN_GPIO GPIO_PIN(GPIOI, 6) -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOI, 5) -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#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) - -#define TRAINER_DETECT_GPIO GPIO_PIN(GPIOH, 4) - // AUX ports #define AUX_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 6) // PB.06 #define AUX_SERIAL_RX_GPIO GPIO_PIN(GPIOB, 5) // PB.05 @@ -316,15 +292,4 @@ TIM17: ROTARY_ENCODER_TIMER #define AUX2_SERIAL_DMA_RX_CHANNEL LL_DMAMUX1_REQ_USART3_RX #define AUX2_SERIAL_PWR_GPIO GPIO_PIN(GPIOC, 13) // PC.13 -// Touch -#define TOUCH_I2C_BUS I2C_Bus_2 -#define TOUCH_INT_GPIO GPIO_PIN(GPIOE, 2) // PE.02 -#define TOUCH_RST_GPIO GPIO_PIN(GPIOJ, 13) // PJ.13 - -// TOUCH_INT_EXTI IRQ -#if !defined(USE_EXTI2_IRQ) -#define USE_EXTI2_IRQ -#define EXTI2_IRQ_Priority 9 -#endif - #endif // _HAL_H_ diff --git a/radio/src/targets/h17/hal.h b/radio/src/targets/h17/hal.h index f33db9ba91c..6d0f8daab14 100644 --- a/radio/src/targets/h17/hal.h +++ b/radio/src/targets/h17/hal.h @@ -108,13 +108,6 @@ TIM17: ROTARY_ENCODER_TIMER #define CUSTOM_EXTI_IRQ_LINE 86 #define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE -// USB -#define USB_GPIO GPIOA -#define USB_GPIO_VBUS GPIO_PIN(GPIOH, 5) -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) -#define USB_GPIO_AF GPIO_AF10 - // LCD - parallel RGB (LTDC), no SPI configuration bus (see lcd_driver.cpp) #define LCD_RESET_GPIO GPIOJ #define LCD_RESET_GPIO_PIN LL_GPIO_PIN_12 @@ -235,23 +228,6 @@ TIM17: ROTARY_ENCODER_TIMER #define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream3_IRQn #define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream3_IRQHandler -// Trainer Port -#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA) - -#define TRAINER_IN_GPIO GPIO_PIN(GPIOI, 6) -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOI, 5) -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#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) - -#define TRAINER_DETECT_GPIO GPIO_PIN(GPIOH, 4) - // AUX ports #define AUX_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 6) // PB.06 #define AUX_SERIAL_RX_GPIO GPIO_PIN(GPIOB, 5) // PB.05 @@ -279,23 +255,4 @@ TIM17: ROTARY_ENCODER_TIMER #define AUX2_SERIAL_DMA_RX_CHANNEL LL_DMAMUX1_REQ_USART3_RX #define AUX2_SERIAL_PWR_GPIO GPIO_PIN(GPIOC, 13) // PC.13 -// Touch -#define TOUCH_I2C_BUS I2C_Bus_1 -#define TOUCH_INT_GPIO GPIO_PIN(GPIOE, 2) // PE.02 -#define TOUCH_RST_GPIO GPIO_PIN(GPIOJ, 13) // PJ.13 - -// TOUCH_INT_EXTI IRQ -#if !defined(USE_EXTI2_IRQ) -#define USE_EXTI2_IRQ -#define EXTI2_IRQ_Priority 9 -#endif - -// No I2C IO-expander here, so the rotenc exti list carries USE_EXTI9_5_IRQ. - -#define LANDSCAPE_LCD true -#define PORTRAIT_LCD false -#define LANDSCAPE_LCD_SML false -#define LANDSCAPE_LCD_STD true -#define LANDSCAPE_LCD_LRG false - #endif // _HAL_H_ diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 19544888f3b..a28aa46ba30 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -24,9 +24,6 @@ #include "definitions.h" #include "edgetx_constants.h" -// Defines used in board_common.h -#define ROTARY_ENCODER_NAVIGATION - #define BOOTLOADER_KEYS 0x42 #include "board_common.h" diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 10118d3528f..8cb43668569 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -25,28 +25,6 @@ #define TELEMETRY_EXTI_PRIO 0 // required for soft serial -// Rotary Encoder -#define ROTARY_ENCODER_GPIO GPIOH -#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_11 // PH.11 -#define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_10 // PH.10 -#define ROTARY_ENCODER_POSITION ((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x03) -#define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_11 -#define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_10 -#if !defined(USE_EXTI15_10_IRQ) - #define USE_EXTI15_10_IRQ - #define EXTI15_10_IRQ_Priority 5 -#endif -#define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTH -#define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE11 -#define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE10 -#define ROTARY_ENCODER_TIMER TIM12 -#define ROTARY_ENCODER_TIMER_IRQn TIM8_BRK_TIM12_IRQn -#define ROTARY_ENCODER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler - -#if defined(RADIO_T15) - #define ROTARY_ENCODER_INVERTED -#endif - // 6POS SW #if defined(RADIO_V16) #define SIXPOS_SWITCH_INDEX 5 @@ -106,13 +84,6 @@ #define USB_USBDet_GPIO GPIO_PIN(GPIOG, 13) // PG.13 #endif -// S.Port update connector -#if defined(RADIO_FAMILY_T16) - #define SPORT_MAX_BAUDRATE 400000 -#else - #define SPORT_MAX_BAUDRATE 250000 // < 400000 -#endif - #if defined(PCBX10) && !defined(RADIO_FAMILY_T16) && !defined(RADIO_T15) #define SPORT_UPDATE_PWR_GPIO GPIO_PIN(GPIOH, 13) // PH.13 #endif @@ -265,12 +236,6 @@ #define USE_EXTI4_IRQ #define EXTI4_IRQ_Priority 5 -// USB -#define USB_GPIO_VBUS GPIO_PIN(GPIOA, 9) // PA.09 -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) // PA.11 -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) // PA.12 -#define USB_GPIO_AF GPIO_AF10 - // LCD #if defined(RADIO_T15) #define LCD_NRST_GPIO GPIOG @@ -409,30 +374,6 @@ #define AUDIO_MUTE_DELAY 500 // ms #endif - -// Touch -#if defined(HARDWARE_TOUCH) - #define TOUCH_I2C_BUS I2C_Bus_1 - #define TOUCH_INT_GPIO GPIO_PIN(GPIOH, 2) // PH.02 -#if defined(PCBX12S) - #define TOUCH_RST_GPIO GPIO_PIN(GPIOF, 7) // PF.7 -#else - #define TOUCH_RST_GPIO GPIO_PIN(GPIOF, 10) // PF.10 -#endif - #define TOUCH_INT_EXTI_Line LL_EXTI_LINE_2 - #define TOUCH_INT_EXTI_Port LL_SYSCFG_EXTI_PORTH - #define TOUCH_INT_EXTI_SysCfgLine LL_SYSCFG_EXTI_LINE2 - // TOUCH_INT_EXTI IRQ -#if !defined(USE_EXTI2_IRQ) - #define USE_EXTI2_IRQ - #define EXTI2_IRQ_Priority 9 -#endif - -#if defined(PCBX12S) - #define TOUCH_PANEL_INVERTED -#endif -#endif // HARDWARE_TOUCH - // First I2C Bus #if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(PCBX12S) || defined(RADIO_T15) || defined(RADIO_V16) #define I2C_B1 I2C1 @@ -607,23 +548,6 @@ #define INTMODULE_HEARTBEAT_TRIGGER GPIO_RISING #endif -// Trainer Port -#define TRAINER_IN_GPIO GPIO_PIN(GPIOC, 6) // PC.06 -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH1 -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOC, 7) // PC.07 -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_DETECT_GPIO GPIO_PIN(GPIOB, 4) // PB.04 -#if !defined(PCBX10) || defined(RADIO_FAMILY_T16) - #define TRAINER_DETECT_INVERTED -#endif - -#define TRAINER_TIMER TIM3 -#define TRAINER_TIMER_IRQn TIM3_IRQn -#define TRAINER_TIMER_IRQHandler TIM3_IRQHandler -#define TRAINER_GPIO_AF GPIO_AF2 -#define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) - // Trainer CPPM input on heartbeat pin #if !defined(RADIO_V16) #define TRAINER_MODULE_CPPM_TIMER TIM4 diff --git a/radio/src/targets/pa01/hal.h b/radio/src/targets/pa01/hal.h index 906263c3cb1..1d71a777c7a 100644 --- a/radio/src/targets/pa01/hal.h +++ b/radio/src/targets/pa01/hal.h @@ -52,9 +52,6 @@ #define EXTI4_IRQ_Priority 5 #endif -// S.Port update connector -#define HAS_SPORT_UPDATE_CONNECTOR() (false) - // Telemetry #define TELEMETRY_TX_GPIO GPIO_PIN(GPIOB, 14) #define TELEMETRY_RX_GPIO GPIO_UNDEF @@ -79,13 +76,6 @@ //#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(GPIOB, 0) // PB.00 -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) // PA.11 -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) // PA.12 -#define USB_GPIO_AF GPIO_AF10 - // LCD #define LCD_SPI SPI1 #define LCD_SPI_DMA DMA1 @@ -226,22 +216,4 @@ #define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream1_IRQn #define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream1_IRQHandler -// Trainer Port -#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD) - -#define TRAINER_IN_GPIO GPIO_PIN(GPIOA, 10) // PA.10 -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH3 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOA, 9) // PA.09 -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_TIMER TIM1 -#define TRAINER_TIMER_IRQn TIM1_CC_IRQn -#define TRAINER_TIMER_IRQHandler TIM1_CC_IRQHandler -#define TRAINER_GPIO_AF LL_GPIO_AF_1 -#define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) - -#define TOUCH_I2C_BUS I2C_Bus_1 -#define TOUCH_I2C_CLK_RATE 100000 - #endif // _HAL_H_ diff --git a/radio/src/targets/pl18/hal.h b/radio/src/targets/pl18/hal.h index e71324eb71b..1975f598bf2 100644 --- a/radio/src/targets/pl18/hal.h +++ b/radio/src/targets/pl18/hal.h @@ -157,11 +157,6 @@ // TODO! Check IOLL1 to PI.01 connectivity! -// S.Port update connector -#define SPORT_MAX_BAUDRATE 400000 -#define SPORT_UPDATE_RCC_AHB1Periph 0 -#define HAS_SPORT_UPDATE_CONNECTOR() (false) - // Serial Port (DEBUG) // We will temporarily used the PPM and the HEARTBEAT PINS #define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE) @@ -226,20 +221,6 @@ #define USE_EXTI4_IRQ #define EXTI4_IRQ_Priority 5 -// USB -#define USB_RCC_AHB1Periph_GPIO RCC_AHB1Periph_GPIOA -#define USB_GPIO GPIOA -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) // PA.11 -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) // PA.12 -#define USB_GPIO_AF GPIO_AF10 - -#if defined(RADIO_NV14_FAMILY) - #define USB_GPIO_VBUS GPIO_PIN(GPIOA, 9) // PA.09 - #define USB_SW_GPIO GPIO_PIN(GPIOI, 10) // PI.10 -#elif defined(RADIO_PL18U) - #define USB_SW_GPIO GPIO_PIN(GPIOI, 5) // PI.05 -#endif - // LCD #define LCD_NRST_GPIO GPIO_PIN(GPIOG, 9) // PG.09 #define LCD_SPI_CS_GPIO GPIO_PIN(GPIOE, 4) // PE.04 @@ -332,21 +313,6 @@ #define I2C_B1_GPIO_AF LL_GPIO_AF_4 #define I2C_B1_CLK_RATE 400000 -// Touch -#define TOUCH_I2C_BUS I2C_Bus_1 -#define TOUCH_INT_GPIO GPIO_PIN(GPIOB, 9) // PB.09 -#define TOUCH_RST_GPIO GPIO_PIN(GPIOB, 12) // PB.12 - -#define TOUCH_INT_EXTI_Line LL_EXTI_LINE_9 -#define TOUCH_INT_EXTI_Port LL_SYSCFG_EXTI_PORTB -#define TOUCH_INT_EXTI_SysCfgLine LL_SYSCFG_EXTI_LINE9 - -// TOUCH_INT_EXTI IRQ -#if !defined(USE_EXTI9_5_IRQ) - #define USE_EXTI9_5_IRQ - #define EXTI9_5_IRQ_Priority 9 -#endif - // Flysky Hall Stick #define FLYSKY_HALL_SERIAL_USART UART4 #define FLYSKY_HALL_DMA_Channel LL_DMA_CHANNEL_4 @@ -492,20 +458,6 @@ #define EXTMODULE_RX_NORMAL() EXTMODULE_RX_INVERT_GPIO->BSRRH = EXTMODULE_RX_INVERT_GPIO_PIN #define EXTMODULE_RX_INVERTED() EXTMODULE_RX_INVERT_GPIO->BSRRL = EXTMODULE_RX_INVERT_GPIO_PIN -// Trainer Port - -#define TRAINER_IN_GPIO GPIO_PIN(GPIOD, 12) // PD.12 -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOD, 13) // PD.13 -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_TIMER TIM4 -#define TRAINER_TIMER_IRQn TIM4_IRQn -#define TRAINER_TIMER_IRQHandler TIM4_IRQHandler -#define TRAINER_GPIO_AF LL_GPIO_AF_2 -#define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) - //ROTARY emulation for trims as buttons #define ROTARY_ENCODER_NAVIGATION diff --git a/radio/src/targets/st16/hal.h b/radio/src/targets/st16/hal.h index d63d2fc584a..e19ac5a3f25 100644 --- a/radio/src/targets/st16/hal.h +++ b/radio/src/targets/st16/hal.h @@ -53,9 +53,6 @@ // TODO! Check IOLL1 to PI.01 connectivity! -// S.Port update connector -#define HAS_SPORT_UPDATE_CONNECTOR() (false) - // Serial Port (DEBUG) // We will temporarily used the PPM and the HEARTBEAT PINS // #define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE) @@ -107,13 +104,6 @@ //#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(GPIOC, 0) // PC.00 -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) // PA.11 -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) // PA.12 -#define USB_GPIO_AF GPIO_AF10 - // LCD #define LCD_SPI_CS_GPIO GPIOH #define LCD_SPI_CS_GPIO_PIN LL_GPIO_PIN_6 // PH.06 @@ -256,37 +246,3 @@ #define EXTMODULE_TIMER_DMA_STREAM LL_DMA_STREAM_6 #define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream6_IRQn #define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream6_IRQHandler - -// Trainer Port -#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD) - -#define TRAINER_IN_GPIO GPIO_PIN(GPIOE, 5) // PE.05 -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOE, 6) // PE.06 -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_TIMER TIM15 -#define TRAINER_TIMER_IRQn TIM15_IRQn -#define TRAINER_TIMER_IRQHandler TIM15_IRQHandler -#define TRAINER_GPIO_AF LL_GPIO_AF_4 -#define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) - -#define TOUCH_I2C_BUS I2C_Bus_1 -#define TOUCH_I2C_CLK_RATE 100000 - -// Touch pins: INT -> PI11, RST -> PI3 -#define TOUCH_INT_GPIO GPIOI -#define TOUCH_INT_GPIO_PIN LL_GPIO_PIN_11 -#define TOUCH_RST_GPIO GPIOI -#define TOUCH_RST_GPIO_PIN LL_GPIO_PIN_3 - -#define TOUCH_INT_EXTI_Line LL_EXTI_LINE_11 -#define TOUCH_INT_EXTI_Port LL_SYSCFG_EXTI_PORTI -#define TOUCH_INT_EXTI_SysCfgLine LL_SYSCFG_EXTI_LINE11 - -// TOUCH_INT_EXTI IRQ for lines 15..10 -#if !defined(USE_EXTI15_10_IRQ) - #define USE_EXTI15_10_IRQ - #define EXTI15_10_IRQ_Priority 5 -#endif diff --git a/radio/src/targets/t15pro/hal.h b/radio/src/targets/t15pro/hal.h index 7a46f9975e5..cd74364812b 100644 --- a/radio/src/targets/t15pro/hal.h +++ b/radio/src/targets/t15pro/hal.h @@ -74,10 +74,6 @@ USART6: EXTMODULE_USART #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) @@ -103,13 +99,6 @@ USART6: EXTMODULE_USART //#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 @@ -224,32 +213,4 @@ USART6: EXTMODULE_USART #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 - #endif // _HAL_H_ diff --git a/radio/src/targets/t22/CMakeLists.txt b/radio/src/targets/t22/CMakeLists.txt index 42e4af8e0fb..7589891885a 100644 --- a/radio/src/targets/t22/CMakeLists.txt +++ b/radio/src/targets/t22/CMakeLists.txt @@ -64,7 +64,6 @@ set(FLYSKY_GIMBAL OFF) add_definitions( -DSTM32H750XBTx -DSTM32H750xx -DSDRAM -DCCMRAM - -DCOLORLCD -DLIBOPENUI -DHARDWARE_TOUCH -DHARDWARE_KEYS -DSOFTWARE_KEYBOARD ) diff --git a/radio/src/targets/t22/hal.h b/radio/src/targets/t22/hal.h index cec61b2ab9c..945513b8fad 100644 --- a/radio/src/targets/t22/hal.h +++ b/radio/src/targets/t22/hal.h @@ -67,10 +67,6 @@ TIM17: ROTARY_ENCODER_TIMER #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) @@ -96,13 +92,6 @@ TIM17: ROTARY_ENCODER_TIMER //#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 @@ -235,32 +224,4 @@ TIM17: ROTARY_ENCODER_TIMER #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 - #endif // _HAL_H_ diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 903537cb8a8..e906233e12b 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -34,108 +34,6 @@ #define KEYS_GPIO_PIN_BIND LL_GPIO_PIN_9 // PD.09 #endif -// Rotary Encoder -#if defined(PCBX9E) - #define ROTARY_ENCODER_NAVIGATION - #define ROTARY_ENCODER_GPIO GPIOD - #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_12 // PD.12 - #define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_13 // PD.13 - #define ROTARY_ENCODER_POSITION (ROTARY_ENCODER_GPIO->IDR >> 12) & 0x03 - #define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_12 - #define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_13 - #define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTD - #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE12 - #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE13 - // ROTARY_ENCODER_EXTI IRQ - #if !defined(USE_EXTI15_10_IRQ) - #define USE_EXTI15_10_IRQ - #define EXTI15_10_IRQ_Priority 5 - #endif -#elif defined(RADIO_X9DP2019) - #define ROTARY_ENCODER_NAVIGATION - #define ROTARY_ENCODER_GPIO GPIOE - #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_10 // PE.10 - #define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_11 // PE.11 - #define ROTARY_ENCODER_POSITION (((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 11) & 0x01)) - #define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_10 - #define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_11 - #define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE - #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE10 - #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE11 - // ROTARY_ENCODER_EXTI IRQ - #if !defined(USE_EXTI15_10_IRQ) - #define USE_EXTI15_10_IRQ - #define EXTI15_10_IRQ_Priority 5 - #endif -#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) - #define ROTARY_ENCODER_NAVIGATION - #define ROTARY_ENCODER_GPIO GPIOE - #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.09 - #define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_11 // PE.11 - #define ROTARY_ENCODER_POSITION (((ROTARY_ENCODER_GPIO->IDR >> 10) & 0x02) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x01)) - #define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_9 - #define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_11 - // ROTARY_ENCODER_EXTI_LINE1 IRQ - #if !defined(USE_EXTI9_5_IRQ) - #define USE_EXTI9_5_IRQ - #define EXTI9_5_IRQ_Priority 5 - #endif - // ROTARY_ENCODER_EXTI_LINE2 IRQ - #if !defined(USE_EXTI15_10_IRQ) - #define USE_EXTI15_10_IRQ - #define EXTI15_10_IRQ_Priority 5 - #endif - #define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE - #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE9 - #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE11 -#elif defined(PCBX9LITE) - #define ROTARY_ENCODER_NAVIGATION - #define ROTARY_ENCODER_GPIO GPIOE - #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_10 // PE.10 - #define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_12 // PE.12 - #define ROTARY_ENCODER_POSITION (((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x01) + ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x02)) - #define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_10 - #define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_12 - #define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE - #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE10 - #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE12 - // ROTARY_ENCODER_EXTI IRQ - #if !defined(USE_EXTI15_10_IRQ) - #define USE_EXTI15_10_IRQ - #define EXTI15_10_IRQ_Priority 5 - #endif -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V14LCD) || defined(RADIO_GX12) - #define ROTARY_ENCODER_NAVIGATION - #define ROTARY_ENCODER_GPIO GPIOE - #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.9 - #define ROTARY_ENCODER_GPIO_PIN_B LL_GPIO_PIN_10 // PE.10 - #define ROTARY_ENCODER_POSITION ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03) - #define ROTARY_ENCODER_EXTI_LINE1 LL_EXTI_LINE_9 - #define ROTARY_ENCODER_EXTI_LINE2 LL_EXTI_LINE_10 - #define ROTARY_ENCODER_EXTI_PORT LL_SYSCFG_EXTI_PORTE - #define ROTARY_ENCODER_EXTI_SYS_LINE1 LL_SYSCFG_EXTI_LINE9 - #define ROTARY_ENCODER_EXTI_SYS_LINE2 LL_SYSCFG_EXTI_LINE10 - // ROTARY_ENCODER_EXTI_LINE1 IRQ - #if !defined(USE_EXTI9_5_IRQ) - #define USE_EXTI9_5_IRQ - #define EXTI9_5_IRQ_Priority 5 - #endif - // ROTARY_ENCODER_EXTI_LINE2 IRQ - #if !defined(USE_EXTI15_10_IRQ) - #define USE_EXTI15_10_IRQ - #define EXTI15_10_IRQ_Priority 5 - #endif - #if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_TPROS) || defined(RADIO_V14) || defined(RADIO_V14LCD) - #define ROTARY_ENCODER_INVERTED - #endif -#endif - -#if defined(ROTARY_ENCODER_NAVIGATION) - #define ROTARY_ENCODER_TIMER TIM5 - #define ROTARY_ENCODER_TIMER_IRQn TIM5_IRQn - #define ROTARY_ENCODER_TIMER_IRQHandler TIM5_IRQHandler -#endif - // 6POS SW #if defined(RADIO_V14) || defined(RADIO_V14LCD) #define SIXPOS_SWITCH_INDEX 6 @@ -489,48 +387,6 @@ #define EXTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) #endif -// Trainer Port -#if defined(PCBXLITES) || defined(PCBX9LITE) - // on these 2 radios the trainer port already uses DMA1_Stream6, we won't use the DMA - #define TRAINER_IN_GPIO GPIO_PIN(GPIOD, 13) // PD.13 - #define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2 - #define TRAINER_OUT_GPIO GPIO_PIN(GPIOD, 12) // PD.12 - #define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH1 - #if defined(PCBX9LITE) - #define TRAINER_DETECT_GPIO GPIO_PIN(GPIOD, 11) // PD.11 - #endif - #define TRAINER_TIMER TIM4 - #define TRAINER_GPIO_AF GPIO_AF2 // TIM4_CH1 (Out) + TIM4_CH2 (In) - #define TRAINER_TIMER_IRQn TIM4_IRQn - #define TRAINER_TIMER_IRQHandler TIM4_IRQHandler - #define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) -#elif defined(PCBXLITE) - #define TRAINER_TIMER TIM4 - #define TRAINER_TIMER_IRQn TIM4_IRQn - #define TRAINER_TIMER_IRQHandler TIM4_IRQHandler -#else - #define TRAINER_IN_GPIO GPIO_PIN(GPIOC, 8) // PC.08 - #define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH3 - #define TRAINER_OUT_GPIO GPIO_PIN(GPIOC, 9) // PC.09 - #define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH4 -#if defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) - #define TRAINER_DETECT_GPIO GPIO_PIN(GPIOE, 3) // PE.03 -#elif defined(RADIO_MT12) - #define TRAINER_DETECT_GPIO GPIO_PIN(GPIOD, 14) // PD.14 -#else - #define TRAINER_DETECT_GPIO GPIO_PIN(GPIOA, 8) // PA.08 -#endif -#if !defined(RADIO_X9DP2019) && !defined(RADIO_X7ACCESS) - #define TRAINER_DETECT_INVERTED -#endif - #define TRAINER_TIMER TIM3 - #define TRAINER_TIMER_IRQn TIM3_IRQn - #define TRAINER_GPIO_AF LL_GPIO_AF_2 - #define TRAINER_TIMER_IRQn TIM3_IRQn - #define TRAINER_TIMER_IRQHandler TIM3_IRQHandler - #define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) -#endif - // Serial Port #if (defined(PCBX7) && !defined(AUX_SERIAL)) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019) #elif defined(RADIO_GX12) @@ -614,22 +470,15 @@ // S.Port update connector #if defined(PCBXLITE) - #define SPORT_MAX_BAUDRATE 250000 // not tested #define SPORT_UPDATE_PWR_GPIO GPIO_PIN(GPIOD, 8) // PD.08 #elif defined(PCBX7ACCESS) - #define SPORT_MAX_BAUDRATE 400000 #define SPORT_UPDATE_PWR_GPIO GPIO_PIN(GPIOB, 3) // PB.03 #elif defined(RADIO_X7) - #define SPORT_MAX_BAUDRATE 250000 // < 400000 #define SPORT_UPDATE_PWR_GPIO GPIO_PIN(GPIOB, 2) // PB.02 #elif defined(PCBX9LITE) - #define SPORT_MAX_BAUDRATE 250000 // not tested #define SPORT_UPDATE_PWR_GPIO GPIO_PIN(GPIOE, 15) // PE.15 #elif defined(RADIO_X9DP2019) - #define SPORT_MAX_BAUDRATE 400000 #define SPORT_UPDATE_PWR_GPIO GPIO_PIN(GPIOA, 14) // PA.14 -#else - #define SPORT_MAX_BAUDRATE 400000 #endif // Heartbeat for iXJT / ISRM synchro @@ -719,12 +568,6 @@ // TODO: replace SBUS trainer with S.PORT pin #endif -// USB -#define USB_GPIO_VBUS GPIO_PIN(GPIOA, 9) // PA.09 -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) // PA.11 -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) // PA.12 -#define USB_GPIO_AF GPIO_AF10 - // BackLight #if defined(PCBX9E) #define BACKLIGHT_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) diff --git a/radio/src/targets/tx15/hal.h b/radio/src/targets/tx15/hal.h index 6b62fb5d382..a58fe310219 100644 --- a/radio/src/targets/tx15/hal.h +++ b/radio/src/targets/tx15/hal.h @@ -91,9 +91,6 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA // TODO! Check IOLL1 to PI.01 connectivity! -// S.Port update connector -#define HAS_SPORT_UPDATE_CONNECTOR() (false) - // Telemetry #define TELEMETRY_SET_INPUT 0 #define TELEMETRY_TX_GPIO GPIO_PIN(GPIOA, 9) @@ -116,13 +113,6 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA #define CUSTOM_EXTI_IRQ_LINE 86 #define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE -// USB -#define USB_GPIO GPIOA -#define USB_GPIO_VBUS GPIO_PIN(GPIOH, 5) -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) -#define USB_GPIO_AF GPIO_AF10 - // LCD #define LCD_SPI_CS_GPIO GPIOA #define LCD_SPI_CS_GPIO_PIN LL_GPIO_PIN_7 @@ -270,23 +260,6 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA #define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream6_IRQn #define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream6_IRQHandler -// Trainer Port -#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA) - -#define TRAINER_IN_GPIO GPIO_PIN(GPIOI, 6) -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOI, 5) -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#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) - -#define TRAINER_DETECT_GPIO GPIO_PIN(GPIOH, 4) - // AUX ports #define AUX_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 6) // PB.06 #define AUX_SERIAL_RX_GPIO GPIO_PIN(GPIOB, 5) // PB.05 @@ -338,15 +311,4 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA #define FLYSKY_HALL_DMA_Channel LL_DMAMUX1_REQ_UART4_RX #endif -// Touch -#define TOUCH_I2C_BUS I2C_Bus_1 -#define TOUCH_INT_GPIO GPIO_PIN(GPIOE, 2) // PE.02 -#define TOUCH_RST_GPIO GPIO_PIN(GPIOJ, 13) // PJ.13 - -// TOUCH_INT_EXTI IRQ -#if !defined(USE_EXTI2_IRQ) -#define USE_EXTI2_IRQ -#define EXTI2_IRQ_Priority 9 -#endif - #endif // _HAL_H_ diff --git a/radio/src/targets/tx16smk3/hal.h b/radio/src/targets/tx16smk3/hal.h index 089e103bbf3..4923309e234 100644 --- a/radio/src/targets/tx16smk3/hal.h +++ b/radio/src/targets/tx16smk3/hal.h @@ -97,9 +97,6 @@ USART6: INTMODULE_USART // TODO! Check IOLL1 to PI.01 connectivity! -// S.Port update connector -#define HAS_SPORT_UPDATE_CONNECTOR() (false) - // Telemetry #define TELEMETRY_SET_INPUT 0 #define TELEMETRY_TX_GPIO GPIO_PIN(GPIOA, 9) @@ -122,13 +119,6 @@ USART6: INTMODULE_USART #define CUSTOM_EXTI_IRQ_LINE 86 #define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE -// USB -#define USB_GPIO GPIOA -#define USB_GPIO_VBUS GPIO_PIN(GPIOH, 11) -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) -#define USB_GPIO_AF GPIO_AF10 - // LCD #define LCD_RESET_GPIO GPIOJ @@ -275,23 +265,6 @@ USART6: INTMODULE_USART #define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream6_IRQn #define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream6_IRQHandler -// Trainer Port -#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA) - -#define TRAINER_IN_GPIO GPIO_PIN(GPIOI, 6) -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOI, 5) -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#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) - -#define TRAINER_DETECT_GPIO GPIO_PIN(GPIOH, 4) - // AUX ports #define AUX_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 6) // PB.06 #define AUX_SERIAL_RX_GPIO GPIO_PIN(GPIOB, 5) // PB.05 @@ -332,15 +305,4 @@ USART6: INTMODULE_USART #define BT_PWR_GPIO GPIO_PIN(GPIOC, 13) // PC.13 #endif -// Touch -#define TOUCH_I2C_BUS I2C_Bus_1 -#define TOUCH_INT_GPIO GPIO_PIN(GPIOE, 2) // PE.02 -#define TOUCH_RST_GPIO GPIO_PIN(GPIOJ, 13) // PJ.13 - -// TOUCH_INT_EXTI IRQ -#if !defined(USE_EXTI2_IRQ) -#define USE_EXTI2_IRQ -#define EXTI2_IRQ_Priority 9 -#endif - #endif // _HAL_H_ diff --git a/radio/src/targets/v12/CMakeLists.txt b/radio/src/targets/v12/CMakeLists.txt index af4c8c5954b..eea6e084185 100644 --- a/radio/src/targets/v12/CMakeLists.txt +++ b/radio/src/targets/v12/CMakeLists.txt @@ -64,7 +64,6 @@ set(FLYSKY_GIMBAL OFF) add_definitions( -DSTM32H750XBTx -DSTM32H750xx -DSDRAM -DCCMRAM - -DCOLORLCD -DLIBOPENUI -DHARDWARE_KEYS -DSOFTWARE_KEYBOARD -DINTERNAL_EXTERNAL_ANT ) diff --git a/radio/src/targets/v12/hal.h b/radio/src/targets/v12/hal.h index 20152dda182..9cdc5617e29 100644 --- a/radio/src/targets/v12/hal.h +++ b/radio/src/targets/v12/hal.h @@ -83,9 +83,6 @@ USART6: EXTMODULE_USART #define PWR_BUTTON_DUAL_KEY1 KEY_SYS #define PWR_BUTTON_DUAL_KEY2 KEY_MODEL -// S.Port update connector -#define HAS_SPORT_UPDATE_CONNECTOR() (false) - // Telemetry SPORT #define TELEMETRY_SET_INPUT 0 #define TELEMETRY_TX_GPIO GPIO_PIN(GPIOA, 9) @@ -108,13 +105,6 @@ USART6: EXTMODULE_USART #define CUSTOM_EXTI_IRQ_LINE 86 #define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE -// USB -#define USB_GPIO GPIOA -#define USB_GPIO_VBUS GPIO_PIN(GPIOB, 12) -#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) -#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) -#define USB_GPIO_AF GPIO_AF10 - // Chargers (USB and wireless) #define UCHARGER_PW GPIO_PIN(GPIOJ, 5) // charge power sw 0=DISABLE 1=ENABLE #define UCHARGER_EN GPIO_PIN(GPIOK, 6) // charge EN 0=ENABLE 1=DISABLE @@ -254,17 +244,4 @@ USART6: EXTMODULE_USART #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(GPIOD, 13) // TIM4_CH2 -#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2 - -#define TRAINER_OUT_GPIO GPIO_PIN(GPIOD, 12) // TIM4_CH1 -#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH1 - -#define TRAINER_TIMER TIM4 -#define TRAINER_TIMER_IRQn TIM4_IRQn -#define TRAINER_TIMER_IRQHandler TIM4_IRQHandler -#define TRAINER_GPIO_AF LL_GPIO_AF_2 -#define TRAINER_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) - #endif // _HAL_H_ diff --git a/radio/util/hw_defs/generator.py b/radio/util/hw_defs/generator.py index c9e2b8d31ad..af528d22cb0 100644 --- a/radio/util/hw_defs/generator.py +++ b/radio/util/hw_defs/generator.py @@ -98,6 +98,10 @@ def generate_from_template(json_filename, template_filename, target): imu=hw_def.imu, rotenc=hw_def.rotenc, haptic=hw_def.haptic, + touch=hw_def.touch, + usb=hw_def.usb, + trainer=hw_def.trainer, + hardware=hw_def.hardware, key_lock_combo=hw_def.key_lock_combo, ) diff --git a/radio/util/hw_defs/hal_settings.jinja b/radio/util/hw_defs/hal_settings.jinja index 9ef47ed1fa0..91450eae37c 100644 --- a/radio/util/hw_defs/hal_settings.jinja +++ b/radio/util/hw_defs/hal_settings.jinja @@ -42,6 +42,31 @@ {% endfor %} {% endif -%} +{% if touch %} + +// Touch +{% for name, val in touch %} +{% if val is not none and val is not sameas false %} +{% if val is sameas true %} +#define {{ name | upper }} +{% elif name == 'exti' %} +{% for exti in val %} +#define USE_{{ exti.irq }} +#define {{ exti.irq }}_Priority {{ exti.priority }} +{% endfor %} +{% elif name.endswith('_line') %} +#define {{ name[:name | length - 4 ] | upper }}Line {{ val }} +{% elif name.endswith('_port') %} +#define {{ name[:name | length - 4 ] | upper }}Port {{ val }} +{% elif name.endswith('_syscfgline') %} +#define {{ name[:name | length - 10 ] | upper }}SysCfgLine {{ val }} +{% else %} +#define {{ name | upper }} {{ val }} +{% endif %} +{% endif %} +{% endfor %} +{% endif -%} + {% if backlight %} // Backlight @@ -130,3 +155,51 @@ {% endif %} {% endfor %} {% endif -%} + +{% if usb %} + +// USB +{% for name, val in usb %} +{% if val is not none and val is not sameas false %} +{% if val is sameas true %} +#define {{ name | upper }} +{% else %} +#define {{ name | upper }} {{ val }} +{% endif %} +{% endif %} +{% endfor %} +{% endif -%} + +{% if trainer %} + +// Trainer +{% for name, val in trainer %} +{% if val is not none and val is not sameas false %} +{% if val is sameas true %} +#define {{ name | upper }} +{% elif name.endswith('_irqn') %} +#define {{ name[:name | length - 1 ] | upper }}n {{ val }} +{% elif name.endswith('_irqhandler') %} +#define {{ name[:name | length - 7 ] | upper }}Handler {{ val }} +{% elif name.endswith('_channel') %} +#define {{ name[:name | length - 7 ] | upper }}Channel {{ val }} +{% else %} +#define {{ name | upper }} {{ val }} +{% endif %} +{% endif %} +{% endfor %} +{% endif -%} + +{% if hardware %} + +// Hardware +{% for name, val in hardware %} +{% if val is not none and val is not sameas false %} +{% if val is sameas true %} +#define {{ name | upper }} +{% else %} +#define {{ name | upper }} {{ val }} +{% endif %} +{% endif %} +{% endfor %} +{% endif -%} diff --git a/radio/util/hw_defs/models.py b/radio/util/hw_defs/models.py index 03169c95af5..01929d6bbb4 100644 --- a/radio/util/hw_defs/models.py +++ b/radio/util/hw_defs/models.py @@ -165,6 +165,15 @@ class LuxInput(BaseModel): pin: Optional[str] = None channel: Optional[Union[str, int]] = None +class Hardware(BaseModel): + cpu: str + cpu_type: str + has_audio_mute: Optional[bool] = None + has_ext_module_support: Optional[bool] = None + has_int_module_support: Optional[bool] = None + sport_max_baudrate: Optional[int] = None + surface: Optional[bool] = None + class EXTI(BaseModel): irq: str priority: int @@ -204,6 +213,20 @@ class Display(BaseModel): ltdc_irq_prio: Optional[int] = None dma_screen_irq_prio: Optional[int] = None +class Touch(BaseModel): + touch_i2c_bus: str + touch_i2c_clk_rate: Optional[int] = None + touch_int_gpio: Optional[str] = None + touch_int_gpio_pin: Optional[str] = None + touch_rst_gpio: Optional[str] = None + touch_rst_gpio_pin: Optional[str] = None + touch_int_exti_line: Optional[str] = None + touch_int_exti_port: Optional[str] = None + touch_int_exti_syscfgline: Optional[str] = None + touch_panel_inverted: Optional[bool] = None + gt911_rotation_mode: Optional[int] = None + exti: Optional[List[EXTI]] = None + class LEDS(BaseModel): led_strip_length: Optional[int] = None bling_led_strip_start: Optional[int] = None @@ -256,6 +279,7 @@ class RotEnc(BaseModel): rotary_encoder_timer: Optional[str] = None rotary_encoder_timer_irqn: Optional[str] = None rotary_encoder_timer_irqhandler: Optional[str] = None + rotary_encoder_granularity: Optional[int] = 2 exti: Optional[List[EXTI]] = None class Haptic(BaseModel): @@ -273,6 +297,26 @@ class Haptic(BaseModel): haptic_ccmr2: Optional[str] = None haptic_ccer: Optional[str] = None +class USB(BaseModel): + usb_gpio_vbus: Optional[str] = None + usb_gpio_dm: Optional[str] = None + usb_gpio_dp: Optional[str] = None + usb_gpio_af: Optional[str] = None + usb_sw_gpio: Optional[str] = None + +class Trainer(BaseModel): + trainer_in_gpio: Optional[str] = None + trainer_in_timer_channel: Optional[str] = None + trainer_out_gpio: Optional[str] = None + trainer_out_timer_channel: Optional[str] = None + trainer_timer: Optional[str] = None + trainer_timer_irqn: Optional[str] = None + trainer_timer_irqhandler: Optional[str] = None + trainer_timer_freq: Optional[str] = None + trainer_gpio_af: Optional[str] = None + trainer_detect_gpio: Optional[str] = None + trainer_detect_inverted: Optional[bool] = None + Input = Union[StickInput, FlexInput, SwitchInput, RawInput, VBatInput, RTCBatInput, LuxInput] @@ -423,6 +467,10 @@ class HardwareDefinition(BaseModel): imu: Optional[IMU] = None rotenc: Optional[RotEnc] = None haptic: Optional[Haptic] = None + touch: Optional[Touch] = None + usb: Optional[USB] = None + trainer: Optional[Trainer] = None + hardware: Hardware key_lock_combo: Optional[List[KeyEnum]] = None @model_validator(mode="after") diff --git a/tools/hwdef_schema.json b/tools/hwdef_schema.json index b7cc4ef7c10..f1e537ea98d 100644 --- a/tools/hwdef_schema.json +++ b/tools/hwdef_schema.json @@ -22,12 +22,15 @@ "keys": { "type": "array", "items": { "$ref": "#/$defs/key" } }, "trims": { "type": "array", "items": { "$ref": "#/$defs/trim" } }, "display": { "$ref": "#/$defs/display" }, + "touch": { "$ref": "#/$defs/touch" }, "leds": { "$ref": "#/$defs/leds" }, "backlight": { "$ref": "#/$defs/backlight" }, "hardware": { "$ref": "#/$defs/hardware" }, "timers": { "$ref": "#/$defs/timers" }, "imu": { "$ref": "#/$defs/imu" }, - "rotenc": { "$ref": "#/$defs/rotenc" } + "rotenc": { "$ref": "#/$defs/rotenc" }, + "usb": { "$ref": "#/$defs/usb" }, + "trainer": { "$ref": "#/$defs/trainer" } }, "$defs": { @@ -236,6 +239,26 @@ } }, + "touch": { + "type": "object", + "additionalProperties": false, + "required": ["touch_i2c_bus"], + "properties": { + "touch_i2c_bus": { "type": "string" }, + "touch_i2c_clk_rate": { "type": "integer" }, + "touch_int_gpio": { "type": "string" }, + "touch_int_gpio_pin": { "type": "string" }, + "touch_rst_gpio": { "type": "string" }, + "touch_rst_gpio_pin": { "type": "string" }, + "touch_int_exti_line": { "type": "string" }, + "touch_int_exti_port": { "type": "string" }, + "touch_int_exti_syscfgline": { "type": "string" }, + "touch_panel_inverted": { "type": "boolean" }, + "gt911_rotation_mode": { "type": "integer", "enum": [0, 90, 180, 270] }, + "exti": { "type": "array", "items": { "$ref": "#/$defs/exti" } } + } + }, + "leds": { "type": "object", "additionalProperties": false, @@ -293,7 +316,7 @@ "has_audio_mute": { "type": "boolean" }, "has_ext_module_support": { "type": "boolean" }, "has_int_module_support": { "type": "boolean" }, - "sport_max_baudrate": { "type": "integer", "minimum": 0 }, + "sport_max_baudrate": { "type": "integer", "enum": [250000, 400000] }, "surface": { "type": "boolean" } } }, @@ -365,10 +388,23 @@ "rotary_encoder_timer": { "type": "string" }, "rotary_encoder_timer_irqn": { "type": "string" }, "rotary_encoder_timer_irqhandler": { "type": "string" }, + "rotary_encoder_granularity": { "type": "integer", "enum": [2, 4] }, "exti": { "type": "array", "items": { "$ref": "#/$defs/exti" } } } }, + "usb": { + "type": "object", + "additionalProperties": false, + "properties": { + "usb_gpio_vbus": { "type": "string" }, + "usb_gpio_dm": { "type": "string" }, + "usb_gpio_dp": { "type": "string" }, + "usb_gpio_af": { "type": "string" }, + "usb_sw_gpio": { "type": "string" } + } + }, + "haptic": { "type": "object", "additionalProperties": false, @@ -387,6 +423,24 @@ "haptic_ccmr2": { "type": "string" }, "haptic_ccer": { "type": "string" } } + }, + + "trainer": { + "type": "object", + "additionalProperties": false, + "properties": { + "trainer_in_gpio": { "type": "string" }, + "trainer_in_timer_channel": { "type": "string" }, + "trainer_out_gpio": { "type": "string" }, + "trainer_out_timer_channel": { "type": "string" }, + "trainer_timer": { "type": "string" }, + "trainer_timer_irqn": { "type": "string" }, + "trainer_timer_irqhandler": { "type": "string" }, + "trainer_timer_freq": { "type": "string" }, + "trainer_gpio_af": { "type": "string" }, + "trainer_detect_gpio": { "type": "string" }, + "trainer_detect_inverted": { "type": "string" } + } } } } From c45e56e65580edc6d5cec99bed563d04117c4448 Mon Sep 17 00:00:00 2001 From: philmoz Date: Mon, 5 Oct 2026 19:18:50 +1100 Subject: [PATCH 02/10] Fix xlite --- radio/src/boards/hw_defs/xlite.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/boards/hw_defs/xlite.json b/radio/src/boards/hw_defs/xlite.json index 62f1a1f21d0..8ef25ef72d2 100644 --- a/radio/src/boards/hw_defs/xlite.json +++ b/radio/src/boards/hw_defs/xlite.json @@ -316,6 +316,6 @@ "trainer": { "trainer_timer": "TIM4", "trainer_timer_irqn": "TIM4_IRQn", - "trainer_timer_irqhandler": "TIM4_IRQHandler", + "trainer_timer_irqhandler": "TIM4_IRQHandler" } } From 7d54bd27c5064a005e31f13e74cb30c1a58a1c8b Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 02:47:02 +0000 Subject: [PATCH 03/10] fix(t18): remove duplicate trainer section from hw_defs JSON Remove the duplicate "trainer" section copied from TX16S, which overrode the T18 pins (PC6/PC7 in/out, PB4 detect) with PC8/PC9/PA8. Co-Authored-By: Claude Opus 5.5 --- radio/src/boards/hw_defs/t18.json | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/radio/src/boards/hw_defs/t18.json b/radio/src/boards/hw_defs/t18.json index 602bdddf737..d8b9d66e020 100644 --- a/radio/src/boards/hw_defs/t18.json +++ b/radio/src/boards/hw_defs/t18.json @@ -535,19 +535,6 @@ "trainer_detect_gpio": "GPIO_PIN(GPIOB, 4)", "trainer_detect_inverted": true }, - "trainer": { - "trainer_in_gpio": "GPIO_PIN(GPIOC, 8)", - "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH3", - "trainer_out_gpio": "GPIO_PIN(GPIOC, 9)", - "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH4", - "trainer_timer": "TIM3", - "trainer_timer_irqn": "TIM3_IRQn", - "trainer_timer_irqhandler": "TIM3_IRQHandler", - "trainer_gpio_af": "LL_GPIO_AF_2", - "trainer_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)", - "trainer_detect_gpio": "GPIO_PIN(GPIOA, 8)", - "trainer_detect_inverted": true - }, "key_lock_combo": [ "KEY_SYS", "KEY_MODEL" From 792f95ced1bf27d098e356a708a7bdd1aaed6b88 Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 02:50:36 +0000 Subject: [PATCH 04/10] fix(st16): restore touch interrupt priority to 5 Restore EXTI15_10_IRQ_Priority to 5 as previously defined in st16/hal.h. Co-Authored-By: Claude Opus 5.5 --- radio/src/boards/hw_defs/st16.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/boards/hw_defs/st16.json b/radio/src/boards/hw_defs/st16.json index 32fbe9390bc..04d214a4594 100644 --- a/radio/src/boards/hw_defs/st16.json +++ b/radio/src/boards/hw_defs/st16.json @@ -411,7 +411,7 @@ "exti": [ { "irq": "EXTI15_10_IRQ", - "priority": 9 + "priority": 5 } ] }, From cf0ee11d9b56ee1181ae0d7df158a1d252979c5b Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 02:55:26 +0000 Subject: [PATCH 05/10] fix(tools): trainer_detect_inverted is a boolean in hwdef schema The JSON files and models.py use a boolean, not a string. Co-Authored-By: Claude Opus 5.5 --- tools/hwdef_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hwdef_schema.json b/tools/hwdef_schema.json index f1e537ea98d..badf9910f66 100644 --- a/tools/hwdef_schema.json +++ b/tools/hwdef_schema.json @@ -439,7 +439,7 @@ "trainer_timer_freq": { "type": "string" }, "trainer_gpio_af": { "type": "string" }, "trainer_detect_gpio": { "type": "string" }, - "trainer_detect_inverted": { "type": "string" } + "trainer_detect_inverted": { "type": "boolean" } } } } From f1060680f0aed885bcd71b7ecd010dc674be7513 Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 02:57:43 +0000 Subject: [PATCH 06/10] fix(fw): guard EXTI IRQ definitions in generated hal_settings.h Restore the #if !defined(USE_EXTIx_IRQ) guard the hal.h blocks had, so two sections using the same EXTI group no longer redefine the priority macro; the first definition wins as before. Co-Authored-By: Claude Opus 5.5 --- radio/util/hw_defs/hal_settings.jinja | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/radio/util/hw_defs/hal_settings.jinja b/radio/util/hw_defs/hal_settings.jinja index 91450eae37c..e477a82a293 100644 --- a/radio/util/hw_defs/hal_settings.jinja +++ b/radio/util/hw_defs/hal_settings.jinja @@ -51,8 +51,10 @@ #define {{ name | upper }} {% elif name == 'exti' %} {% for exti in val %} +#if !defined(USE_{{ exti.irq }}) #define USE_{{ exti.irq }} #define {{ exti.irq }}_Priority {{ exti.priority }} +#endif {% endfor %} {% elif name.endswith('_line') %} #define {{ name[:name | length - 4 ] | upper }}Line {{ val }} @@ -108,8 +110,10 @@ #define {{ name | upper }} {% elif name == 'exti' %} {% for exti in val %} +#if !defined(USE_{{ exti.irq }}) #define USE_{{ exti.irq }} #define {{ exti.irq }}_Priority {{ exti.priority }} +#endif {% endfor %} {% else %} #define {{ name | upper }} {{ val }} @@ -128,8 +132,10 @@ #define {{ name | upper }} {% elif name == 'exti' %} {% for exti in val %} +#if !defined(USE_{{ exti.irq }}) #define USE_{{ exti.irq }} #define {{ exti.irq }}_Priority {{ exti.priority }} +#endif {% endfor %} {% elif name.endswith('_irqn') %} #define {{ name[:name | length - 1 ] | upper }}n {{ val }} From 4d611cb040e8ee5511285594d094ec591431ae36 Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 02:59:35 +0000 Subject: [PATCH 07/10] chore(fw): only emit SPORT_MAX_BAUDRATE from hardware section The other hardware fields (CPU, CPU_TYPE, HAS_*, SURFACE) are unused by the firmware, and generic names like CPU or SURFACE could clash with identifiers elsewhere. CPU_TYPE is already defined by CMake. Co-Authored-By: Claude Opus 5.5 --- radio/util/hw_defs/hal_settings.jinja | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/radio/util/hw_defs/hal_settings.jinja b/radio/util/hw_defs/hal_settings.jinja index e477a82a293..fe4f3c40516 100644 --- a/radio/util/hw_defs/hal_settings.jinja +++ b/radio/util/hw_defs/hal_settings.jinja @@ -196,16 +196,8 @@ {% endfor %} {% endif -%} -{% if hardware %} +{% if hardware and hardware.sport_max_baudrate is not none %} // Hardware -{% for name, val in hardware %} -{% if val is not none and val is not sameas false %} -{% if val is sameas true %} -#define {{ name | upper }} -{% else %} -#define {{ name | upper }} {{ val }} -{% endif %} -{% endif %} -{% endfor %} +#define SPORT_MAX_BAUDRATE {{ hardware.sport_max_baudrate }} {% endif -%} From 7f4d4ab4c235aa450c15c89775d5094c98cfb534 Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 03:11:37 +0000 Subject: [PATCH 08/10] fix: correct V12, NB4P and V16 hw_defs data - V12: set has_audio_mute, as v12/hal.h defines AUDIO_MUTE_GPIO - NB4P: set surface, as the firmware defines SURFACE_RADIO for it - V16: add touch_int_exti_line/port/syscfgline, which horus/hal.h previously defined for every touch board Co-Authored-By: Claude Opus 5.5 --- radio/src/boards/hw_defs/nb4p.json | 1 + radio/src/boards/hw_defs/v12.json | 1 + radio/src/boards/hw_defs/v16.json | 3 +++ 3 files changed, 5 insertions(+) diff --git a/radio/src/boards/hw_defs/nb4p.json b/radio/src/boards/hw_defs/nb4p.json index 01f309628ab..26358230f62 100644 --- a/radio/src/boards/hw_defs/nb4p.json +++ b/radio/src/boards/hw_defs/nb4p.json @@ -204,6 +204,7 @@ "has_ext_module_support": true, "has_int_module_support": true, "sport_max_baudrate": 400000, + "surface": true, "cpu": "STM32F429xI", "cpu_type": "STM32F4" }, diff --git a/radio/src/boards/hw_defs/v12.json b/radio/src/boards/hw_defs/v12.json index bf7e3bf751a..097f5ec71df 100644 --- a/radio/src/boards/hw_defs/v12.json +++ b/radio/src/boards/hw_defs/v12.json @@ -377,6 +377,7 @@ "led_blue_gpio": "GPIO_PIN(GPIOI, 14)" }, "hardware": { + "has_audio_mute": true, "has_ext_module_support": true, "has_int_module_support": true, "cpu": "STM32H750xB", diff --git a/radio/src/boards/hw_defs/v16.json b/radio/src/boards/hw_defs/v16.json index fa20809d14f..23146b04b88 100644 --- a/radio/src/boards/hw_defs/v16.json +++ b/radio/src/boards/hw_defs/v16.json @@ -453,6 +453,9 @@ "touch_i2c_bus": "I2C_Bus_1", "touch_int_gpio": "GPIO_PIN(GPIOH, 2)", "touch_rst_gpio": "GPIO_PIN(GPIOF, 10)", + "touch_int_exti_line": "LL_EXTI_LINE_2", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTH", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE2", "exti": [ { "irq": "EXTI2_IRQ", From 072de9120b27af568cb1863b7df3dcd701c3e556 Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 03:12:35 +0000 Subject: [PATCH 09/10] chore(fw): define SURFACE_RADIO from hw_defs JSON Emit SURFACE_RADIO in hal_settings.h when the JSON hardware section sets surface, and drop the hand-written defines for MT12 and NB4P. Co-Authored-By: Claude Opus 5.5 --- radio/src/targets/pl18/board.h | 4 ---- radio/src/targets/taranis/board.h | 4 ---- radio/util/hw_defs/hal_settings.jinja | 7 ++++++- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/radio/src/targets/pl18/board.h b/radio/src/targets/pl18/board.h index 3c45038f3f8..d1cee4b4c69 100644 --- a/radio/src/targets/pl18/board.h +++ b/radio/src/targets/pl18/board.h @@ -29,10 +29,6 @@ #include "hal/serial_port.h" #include "hal/watchdog_driver.h" -#if defined(RADIO_NB4P) - #define SURFACE_RADIO true -#endif - #define FLASHSIZE 0x200000 #define FLASH_PAGESIZE 256 #define BOOTLOADER_SIZE 0x20000 diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 21b1eb9d07e..f50ad646dd1 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -110,10 +110,6 @@ enum { #endif -#if defined(RADIO_MT12) - #define SURFACE_RADIO true -#endif - #define HAS_HARDWARE_OPTIONS PACK(typedef struct { diff --git a/radio/util/hw_defs/hal_settings.jinja b/radio/util/hw_defs/hal_settings.jinja index fe4f3c40516..dc2b602469f 100644 --- a/radio/util/hw_defs/hal_settings.jinja +++ b/radio/util/hw_defs/hal_settings.jinja @@ -196,8 +196,13 @@ {% endfor %} {% endif -%} -{% if hardware and hardware.sport_max_baudrate is not none %} +{% if hardware %} // Hardware +{% if hardware.sport_max_baudrate is not none %} #define SPORT_MAX_BAUDRATE {{ hardware.sport_max_baudrate }} +{% endif %} +{% if hardware.surface %} +#define SURFACE_RADIO +{% endif %} {% endif -%} From 99164f3a92752cc12ed307534725aadc45e65065 Mon Sep 17 00:00:00 2001 From: Peter Feerick <5500713+pfeerick@users.noreply.github.com> Date: Tue, 6 Oct 2026 03:35:17 +0000 Subject: [PATCH 10/10] chore(t15h7): move USB, trainer and touch settings to hw_defs JSON T15-H7 landed on main after this branch was started. Give it the same treatment as T15 Pro, which it is based on: USB, trainer (plus its detect pin) and touch settings move from hal.h to the JSON, and the unused HAS_SPORT_UPDATE_CONNECTOR goes. Co-Authored-By: Claude Opus 5.5 --- radio/src/boards/hw_defs/t15h7.json | 32 ++++++++++++++++++++++ radio/src/targets/t15h7/hal.h | 41 ----------------------------- 2 files changed, 32 insertions(+), 41 deletions(-) diff --git a/radio/src/boards/hw_defs/t15h7.json b/radio/src/boards/hw_defs/t15h7.json index d053eaaf174..e560601a297 100644 --- a/radio/src/boards/hw_defs/t15h7.json +++ b/radio/src/boards/hw_defs/t15h7.json @@ -368,6 +368,20 @@ "ltdc_irq_prio": 4, "dma_screen_irq_prio": 6 }, + "touch": { + "touch_i2c_bus": "I2C_Bus_2", + "touch_int_gpio": "GPIO_PIN(GPIOD, 11)", + "touch_rst_gpio": "GPIO_PIN(GPIOJ, 1)", + "touch_int_exti_line": "LL_EXTI_LINE_11", + "touch_int_exti_port": "LL_SYSCFG_EXTI_PORTD", + "touch_int_exti_syscfgline": "LL_SYSCFG_EXTI_LINE11", + "exti": [ + { + "irq": "EXTI15_10_IRQ", + "priority": 9 + } + ] + }, "backlight": { "backlight_gpio": "GPIO_PIN(GPIOA, 5)", "backlight_timer": "TIM2", @@ -451,6 +465,24 @@ "haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE", "haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2" }, + "usb": { + "usb_gpio_vbus": "GPIO_PIN(GPIOA, 9)", + "usb_gpio_dm": "GPIO_PIN(GPIOA, 11)", + "usb_gpio_dp": "GPIO_PIN(GPIOA, 12)", + "usb_gpio_af": "GPIO_AF10" + }, + "trainer": { + "trainer_in_gpio": "GPIO_PIN(GPIOI, 6)", + "trainer_in_timer_channel": "LL_TIM_CHANNEL_CH2", + "trainer_out_gpio": "GPIO_PIN(GPIOI, 7)", + "trainer_out_timer_channel": "LL_TIM_CHANNEL_CH3", + "trainer_timer": "TIM8", + "trainer_timer_irqn": "TIM8_CC_IRQn", + "trainer_timer_irqhandler": "TIM8_CC_IRQHandler", + "trainer_gpio_af": "LL_GPIO_AF_3", + "trainer_timer_freq": "(PERI2_FREQUENCY * TIMER_MULT_APB2)", + "trainer_detect_gpio": "GPIO_PIN(GPIOE, 2)" + }, "key_lock_combo": [ "KEY_PAGEDN", "KEY_ENTER" diff --git a/radio/src/targets/t15h7/hal.h b/radio/src/targets/t15h7/hal.h index 8996d5bfdd6..4921c430e76 100644 --- a/radio/src/targets/t15h7/hal.h +++ b/radio/src/targets/t15h7/hal.h @@ -74,10 +74,6 @@ USART6: EXTMODULE_USART #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) @@ -100,13 +96,6 @@ USART6: EXTMODULE_USART #define CUSTOM_EXTI_IRQ_LINE 86 #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 @@ -221,21 +210,6 @@ USART6: EXTMODULE_USART #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_DETECT_GPIO GPIO_PIN(GPIOE, 2) // PE.02 - -#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) - // AUX port #define AUX_SERIAL_TX_GPIO GPIO_PIN(GPIOH, 13) // PH.13 #define AUX_SERIAL_RX_GPIO GPIO_PIN(GPIOH, 14) // PH.14 @@ -261,19 +235,4 @@ USART6: EXTMODULE_USART #define FLYSKY_HALL_DMA_Channel LL_DMAMUX1_REQ_USART3_RX #endif -// 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 - #endif // _HAL_H_