diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index c8b8b062e..d9ed61834 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -132,6 +132,7 @@ set(HW_DESC_JSON ${FLAVOUR}.json) # Generate files from radio JSON AddHWGenTarget(${HW_DESC_JSON} hal_settings hal_settings.h) +AddHWGenTarget(${HW_DESC_JSON} hal_pwm_sticks hal_pwm_sticks.h) AddHWGenTarget(${HW_DESC_JSON} hal_keys hal_keys.inc) AddHWGenTarget(${HW_DESC_JSON} hal_adc_inputs hal_adc_inputs.inc) @@ -152,8 +153,8 @@ AddHWGenTarget(${HW_DESC_JSON} simu_switches simu_switches.inc) AddHWGenTarget(${HW_DESC_JSON} hal_keys_lock hal_keys_lock.h) -add_dependencies(board hal_settings hal_keys hal_keys_lock hal_adc_inputs stm32_keys stm32_switches stm32_adc_inputs stm32_pwm_inputs yaml_inputs lua_inputs lua_mixsrc lua_keys) -add_dependencies(board_bl hal_settings hal_keys stm32_keys) +add_dependencies(board hal_settings hal_pwm_sticks hal_keys hal_keys_lock hal_adc_inputs stm32_keys stm32_switches stm32_adc_inputs stm32_pwm_inputs yaml_inputs lua_inputs lua_mixsrc lua_keys) +add_dependencies(board_bl hal_settings hal_pwm_sticks hal_keys stm32_keys) include(hal/CMakeLists.txt) @@ -607,7 +608,7 @@ if(NATIVE_BUILD) os/timer_native.cpp ) add_dependencies(radiolib_native ${RADIO_DEPENDENCIES} - hal_settings hal_keys hal_keys_lock hal_adc_inputs + hal_settings hal_pwm_sticks hal_keys hal_keys_lock hal_adc_inputs yaml_inputs lua_inputs lua_mixsrc lua_keys) set_property(TARGET radiolib_native PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/radio/src/boards/generic_stm32/CMakeLists.txt b/radio/src/boards/generic_stm32/CMakeLists.txt index b732e0d18..a8905b794 100644 --- a/radio/src/boards/generic_stm32/CMakeLists.txt +++ b/radio/src/boards/generic_stm32/CMakeLists.txt @@ -23,10 +23,10 @@ set(BOARD_LIB_SRC ) add_library(minimal_board_lib OBJECT EXCLUDE_FROM_ALL ${MINIMAL_BOARD_LIB_SRC}) -add_dependencies(minimal_board_lib stm32_keys hal_settings hal_keys_lock) +add_dependencies(minimal_board_lib stm32_keys hal_settings hal_pwm_sticks hal_keys_lock) add_library(board_lib OBJECT EXCLUDE_FROM_ALL ${BOARD_LIB_SRC}) -add_dependencies(board_lib minimal_board_lib stm32_adc_inputs stm32_switches hal_adc_inputs) +add_dependencies(board_lib minimal_board_lib stm32_adc_inputs stm32_switches stm32_pwm_inputs hal_adc_inputs) if(DEBUG) target_compile_definitions(board_lib PRIVATE DEBUG) diff --git a/radio/src/storage/yaml/CMakeLists.txt b/radio/src/storage/yaml/CMakeLists.txt index 54a77ed4f..930aa17ac 100644 --- a/radio/src/storage/yaml/CMakeLists.txt +++ b/radio/src/storage/yaml/CMakeLists.txt @@ -108,4 +108,4 @@ add_custom_target(yaml_data ${RADIO_DIRECTORY}/util/generate_yaml.py ) -add_dependencies(yaml_data hal_settings hal_keys_lock) +add_dependencies(yaml_data hal_settings hal_pwm_sticks hal_keys_lock) diff --git a/radio/src/targets/c14/hal.h b/radio/src/targets/c14/hal.h index 3dd8bc884..004f2aa0c 100644 --- a/radio/src/targets/c14/hal.h +++ b/radio/src/targets/c14/hal.h @@ -22,6 +22,7 @@ #pragma once #include "hal_settings.h" +#include "hal_pwm_sticks.h" /* @@ -57,26 +58,6 @@ UART5: TELEMETRY_USART */ - -#define KEYS_GPIO_REG_ENTER GPIOC -#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_5 -#define KEYS_GPIO_REG_PAGEDN GPIOA -#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_8 -#define KEYS_GPIO_REG_EXIT GPIOG -#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_14 - -#define KEYS_GPIO_REG_SYS GPIOC -#define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_4 -#define KEYS_GPIO_REG_PAGEUP GPIOC -#define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_13 -#define KEYS_GPIO_REG_MDL GPIOA -#define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_10 - -#define KEYS_GPIO_REG_UP GPIOG -#define KEYS_GPIO_PIN_UP LL_GPIO_PIN_2 -#define KEYS_GPIO_REG_DOWN GPIOG -#define KEYS_GPIO_PIN_DOWN LL_GPIO_PIN_3 - // Rotary encoder simulated via KEY_UP (PG.02) and KEY_DOWN (PG.03) buttons #define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_GPIO GPIOG @@ -86,111 +67,6 @@ UART5: TELEMETRY_USART #define ROTARY_ENCODER_TIMER_IRQn TIM17_IRQn #define ROTARY_ENCODER_TIMER_IRQHandler TIM17_IRQHandler -// Direct switches -#define SWITCHES_GPIO_REG_E GPIOF -#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_8 - -#define SWITCHES_GPIO_REG_F GPIOF -#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_6 - -// Trims -#define TRIMS_GPIO_REG_LHL -#define TRIMS_GPIO_PIN_LHL - -#define TRIMS_GPIO_REG_LHR -#define TRIMS_GPIO_PIN_LHR - -#define TRIMS_GPIO_REG_LVD -#define TRIMS_GPIO_PIN_LVD - -#define TRIMS_GPIO_REG_LVU -#define TRIMS_GPIO_PIN_LVU - -#define TRIMS_GPIO_REG_RHL -#define TRIMS_GPIO_PIN_RHL - -#define TRIMS_GPIO_REG_RHR -#define TRIMS_GPIO_PIN_RHR - -#define TRIMS_GPIO_REG_RVD -#define TRIMS_GPIO_PIN_RVD - -#define TRIMS_GPIO_REG_RVU -#define TRIMS_GPIO_PIN_RVU - - -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_1 // PA.01 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_0 // PA.00 -#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03 -#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 - -#define ADC_GPIO_PIN_SWA LL_GPIO_PIN_2 // PC.02 -#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_3 // PC.03 -#define ADC_GPIO_PIN_SWC LL_GPIO_PIN_9 // PF.09 -#define ADC_GPIO_PIN_SWD LL_GPIO_PIN_7 // PF.07 - -//S1,S2 -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 VRA -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 VRB -//LS,LR -#define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_0 // PB.00 VRC/LS -#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_7 // PA.07 VRD/RS - -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_1 // PC.01 - -#define ADC_GPIOA_PINS \ - (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_STICK_LH | \ - ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) - -#define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SLIDER1) - -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_SWA | ADC_GPIO_PIN_SWB | ADC_GPIO_PIN_BATT) - -#define ADC_GPIOF_PINS \ - (ADC_GPIO_PIN_SWC | ADC_GPIO_PIN_SWD ) - -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_14 // ADC12_INP14 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_15 // ADC12_INP15 -#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_16 // ADC12_INP16 -#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_17 // ADC12_INP17 - -// Each ADC cannot map more than 8 channels, otherwise it will cause problems -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_3 // ADC12_INP3 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_5 // ADC12_INP5 -#define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_9 // ADC12_INP9 -#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_7 // ADC12_INP7 - -// Analog switches -#define ADC_CHANNEL_SWA LL_ADC_CHANNEL_0 // ADC3_INP0 -#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_1 // ADC3_INP1 -#define ADC_CHANNEL_SWC LL_ADC_CHANNEL_2 // ADC3_INP2 -#define ADC_CHANNEL_SWD LL_ADC_CHANNEL_3 // ADC3_INP3 - -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_11 // ADC123_INP11 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC12_IN16 - -#define ADC_MAIN ADC1 -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMAMUX1_REQ_ADC1 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_64CYCLES_5 - -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS \ -{ \ - ADC_CHANNEL_SWA, ADC_CHANNEL_SWB, ADC_CHANNEL_SWC, ADC_CHANNEL_SWD, \ - ADC_CHANNEL_BATT, ADC_CHANNEL_RTC_BAT \ -} - -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMAMUX1_REQ_ADC3 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_64CYCLES_5 - #define ADC_VREF_PREC2 329 #define PWM_STICKS @@ -201,12 +77,6 @@ UART5: TELEMETRY_USART #define PWM_IRQHandler TIM5_IRQHandler #define PWM_IRQn TIM5_IRQn -#define PWM_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - -#define STICK_PWM_CHANNEL_LH 0 -#define STICK_PWM_CHANNEL_LV 1 -#define STICK_PWM_CHANNEL_RV 2 -#define STICK_PWM_CHANNEL_RH 3 #define USE_EXTI9_5_IRQ // used for I2C port extender interrupt #define EXTI9_5_IRQ_Priority 5 diff --git a/radio/src/targets/common/arm/stm32/CMakeLists.txt b/radio/src/targets/common/arm/stm32/CMakeLists.txt index 03c0d6138..ed1b4b013 100644 --- a/radio/src/targets/common/arm/stm32/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/CMakeLists.txt @@ -128,7 +128,7 @@ if(NOT NATIVE_BUILD) ${STM32_DRIVER_DIR}/stm32_i2c_driver.cpp ) - add_dependencies(stm32_drivers hal_settings) + add_dependencies(stm32_drivers hal_settings hal_pwm_sticks) set(FIRMWARE_SRC ${FIRMWARE_SRC} $) set(FIRMWARE_SRC ${FIRMWARE_SRC} $) diff --git a/radio/src/targets/gx15/hal.h b/radio/src/targets/gx15/hal.h index c556d79cf..ea19484da 100644 --- a/radio/src/targets/gx15/hal.h +++ b/radio/src/targets/gx15/hal.h @@ -65,135 +65,6 @@ TIM17: ROTARY_ENCODER_TIMER #include "hal_settings.h" -// Keys -#define KEYS_GPIO_REG_PAGEDN GPIOA -#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_8 // PA.08 -#define KEYS_GPIO_REG_PAGEUP GPIOG -#define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PG.07 -#define KEYS_GPIO_REG_SYS GPIOB -#define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_2 // PB.02 -#define KEYS_GPIO_REG_ENTER GPIOG -#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_12 // PG.12 -#define KEYS_GPIO_REG_MDL GPIOE -#define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_3 // PE.03 -#define KEYS_GPIO_REG_EXIT GPIOG -#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_3 // PG.03 -#define KEYS_GPIO_REG_TELE GPIOG -#define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_2 // PG.02 - -// Trims -#define TRIMS_GPIO_REG_LHL -#define TRIMS_GPIO_PIN_LHL - -#define TRIMS_GPIO_REG_LHR -#define TRIMS_GPIO_PIN_LHR - -#define TRIMS_GPIO_REG_LVD -#define TRIMS_GPIO_PIN_LVD - -#define TRIMS_GPIO_REG_LVU -#define TRIMS_GPIO_PIN_LVU - -#define TRIMS_GPIO_REG_RHL -#define TRIMS_GPIO_PIN_RHL - -#define TRIMS_GPIO_REG_RHR -#define TRIMS_GPIO_PIN_RHR - -#define TRIMS_GPIO_REG_RVD -#define TRIMS_GPIO_PIN_RVD - -#define TRIMS_GPIO_REG_RVU -#define TRIMS_GPIO_PIN_RVU - -#define TRIMS_GPIO_REG_RSD -#define TRIMS_GPIO_PIN_RSD - -#define TRIMS_GPIO_REG_RSU -#define TRIMS_GPIO_PIN_RSU - -#define TRIMS_GPIO_REG_LSD GPIOH -#define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_15 - -#define TRIMS_GPIO_REG_LSU GPIOH -#define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13 - -// function switches -//SW1 -#define SWITCHES_GPIO_REG_K -#define SWITCHES_GPIO_PIN_K PCA95XX_P0 -#define SWITCHES_K_CFS_IDX 0 -#define FUNCTION_SWITCH_1 SK -//SW2 -#define SWITCHES_GPIO_REG_L -#define SWITCHES_GPIO_PIN_L PCA95XX_P1 -#define SWITCHES_L_CFS_IDX 1 -#define FUNCTION_SWITCH_2 SL -//SW3 -#define SWITCHES_GPIO_REG_M -#define SWITCHES_GPIO_PIN_M PCA95XX_P2 -#define SWITCHES_M_CFS_IDX 2 -#define FUNCTION_SWITCH_3 SM -//SW4 -#define SWITCHES_GPIO_REG_N -#define SWITCHES_GPIO_PIN_N PCA95XX_P3 -#define SWITCHES_N_CFS_IDX 3 -#define FUNCTION_SWITCH_4 SN -//SW5 -#define SWITCHES_GPIO_REG_O -#define SWITCHES_GPIO_PIN_O PCA95XX_P4 -#define SWITCHES_O_CFS_IDX 4 -#define FUNCTION_SWITCH_5 SO -//SW6 -#define SWITCHES_GPIO_REG_P -#define SWITCHES_GPIO_PIN_P PCA95XX_P5 -#define SWITCHES_P_CFS_IDX 5 -#define FUNCTION_SWITCH_6 SP - -// Extender Switches -#define SWITCHES_A_3POS -#define SWITCHES_GPIO_REG_A_H -#define SWITCHES_GPIO_PIN_A_H PCA95XX_P15 -#define SWITCHES_GPIO_REG_A_L -#define SWITCHES_GPIO_PIN_A_L PCA95XX_P14 -#define SWITCHES_B_3POS -#define SWITCHES_GPIO_REG_B_H -#define SWITCHES_GPIO_PIN_B_H PCA95XX_P13 -#define SWITCHES_GPIO_REG_B_L -#define SWITCHES_GPIO_PIN_B_L PCA95XX_P12 -#define SWITCHES_C_3POS -#define SWITCHES_GPIO_REG_C_H -#define SWITCHES_GPIO_PIN_C_H PCA95XX_P11 -#define SWITCHES_GPIO_REG_C_L -#define SWITCHES_GPIO_PIN_C_L PCA95XX_P10 -#define SWITCHES_D_3POS -#define SWITCHES_GPIO_REG_D_H -#define SWITCHES_GPIO_PIN_D_H PCA95XX_P7 -#define SWITCHES_GPIO_REG_D_L -#define SWITCHES_GPIO_PIN_D_L PCA95XX_P6 -#define SWITCHES_E_3POS -#define SWITCHES_GPIO_REG_E_H -#define SWITCHES_GPIO_PIN_E_H PCA95XX_P16 -#define SWITCHES_GPIO_REG_E_L -#define SWITCHES_GPIO_PIN_E_L PCA95XX_P17 -#define SWITCHES_F_2POS -#define SWITCHES_GPIO_REG_F -#define SWITCHES_GPIO_PIN_F PCA95XX_P1 -#define SWITCHES_G_3POS -#define SWITCHES_GPIO_REG_G_H -#define SWITCHES_GPIO_PIN_G_H PCA95XX_P4 -#define SWITCHES_GPIO_REG_G_L -#define SWITCHES_GPIO_PIN_G_L PCA95XX_P5 -#define SWITCHES_H_2POS -#define SWITCHES_GPIO_REG_H -#define SWITCHES_GPIO_PIN_H PCA95XX_P0 -#define SWITCHES_I_2POS -#define SWITCHES_GPIO_REG_I -#define SWITCHES_GPIO_PIN_I PCA95XX_P2 -#define SWITCHES_J_2POS -#define SWITCHES_GPIO_REG_J -#define SWITCHES_GPIO_PIN_J PCA95XX_P3 - // Expanders #define IO_INT_GPIO GPIO_PIN(GPIOB, 3) #define IO_RESET_GPIO GPIO_PIN(GPIOG, 10) @@ -202,71 +73,8 @@ TIM17: ROTARY_ENCODER_TIMER #define EXTI3_IRQ_Priority 9 #endif -// ADC -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_6 // PA.06 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PC.03 -#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_4 // PC.04 -#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_5 // PC.05 - -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_1 // PC.01 POT1 -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 POT2 -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_3 // PH.03 -#define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_2 // PH.02 VRC/LS -#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_5 // PA.05 VRD/RS - -#define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_5 // PA.05,ADC1_CH19 -#define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_5 // PH.05,ADC3_CH16 - -#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_SLIDER2|ADC_GPIO_PIN_EXT1) -#define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2) -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_POT1) -#define ADC_GPIOH_PINS (ADC_GPIO_PIN_BATT | ADC_GPIO_PIN_SLIDER1|ADC_GPIO_PIN_EXT2) - - -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC12_INP3 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_13 // ADC12_INP13 -#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_4 // ADC12_INP4 -#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_8 // ADC12_INP8 - -// Each ADC cannot map more than 8 channels, otherwise it will cause problems -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_11 // ADC12_INP11 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_5 // ADC12_INP5 -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_14 // ADC3_INP14 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC3_INP17 -#define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_13 // ADC3_INP13 -#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_19 // ADC12_INP19 - -#define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_19 // ADC1_IN19 -#define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_16 // ADC3_IN16 - -#define ADC_MAIN ADC1 -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMAMUX1_REQ_ADC1 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 - -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS { ADC_CHANNEL_SLIDER1, ADC_CHANNEL_BATT , ADC_CHANNEL_RTC_BAT,ADC_CHANNEL_EXT2 } -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMAMUX1_REQ_ADC3 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 #define ADC_VREF_PREC2 330 -#define ADC_DIRECTION { \ - 0,-1,0,-1, /* gimbals */ \ - -1,-1, /* pots */ \ - 0,-1, /* sliders */ \ - 0,0, /* ext */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - 0 /* lux sensor */ \ -} - #define USE_EXTI9_5_IRQ // used for I2C port extender interrupt #define EXTI9_5_IRQ_Priority 5 diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index bff3139df..d31f34d17 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -70,7 +70,7 @@ #define PWM_GPIO_AF GPIO_AF2 #define PWM_IRQHandler TIM5_IRQHandler #define PWM_IRQn TIM5_IRQn - #define PWM_GPIOA_PINS (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | LL_GPIO_PIN_3) + #include "hal_pwm_sticks.h" #endif // VBat divider is /4 on F42x and F43x devices #if defined(RADIO_TX16S) || defined(RADIO_T15) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_T18) diff --git a/radio/src/targets/simu/CMakeLists.txt b/radio/src/targets/simu/CMakeLists.txt index acf263823..74578830d 100644 --- a/radio/src/targets/simu/CMakeLists.txt +++ b/radio/src/targets/simu/CMakeLists.txt @@ -47,7 +47,7 @@ add_library(simu_drivers OBJECT EXCLUDE_FROM_ALL ${SIMU_DRIVERS} ) -add_dependencies(simu_drivers simu_keys simu_switches hal_settings hal_keys hal_keys_lock hal_adc_inputs lua_inputs lua_mixsrc lua_keys yaml_inputs) +add_dependencies(simu_drivers simu_keys simu_switches hal_settings hal_pwm_sticks hal_keys hal_keys_lock hal_adc_inputs lua_inputs lua_mixsrc lua_keys yaml_inputs) get_property(SIMU_SRC_OPTIONS TARGET radiolib_native diff --git a/radio/src/targets/t15pro/hal.h b/radio/src/targets/t15pro/hal.h index dabf0f06e..83be0e19c 100644 --- a/radio/src/targets/t15pro/hal.h +++ b/radio/src/targets/t15pro/hal.h @@ -68,93 +68,8 @@ USART6: EXTMODULE_USART #include "hal_settings.h" -// Keys -#define KEYS_GPIO_REG_PAGEDN GPIOI -#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_4 -#define KEYS_GPIO_REG_SYS GPIOI -#define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_5 -#define KEYS_GPIO_REG_ENTER GPIOI -#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_2 -#define KEYS_GPIO_REG_MDL GPIOE -#define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_3 -#define KEYS_GPIO_REG_EXIT GPIOI -#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_8 -#define KEYS_GPIO_REG_TELE GPIOE -#define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_4 - -// Trims -#define TRIMS_GPIO_REG_LHL GPIOI -#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_10 - -#define TRIMS_GPIO_REG_LHR GPIOI -#define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_9 - -#define TRIMS_GPIO_REG_LVD GPIOB -#define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_13 - -#define TRIMS_GPIO_REG_LVU GPIOB -#define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_14 - -#define TRIMS_GPIO_REG_RHL GPIOG -#define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_2 - -#define TRIMS_GPIO_REG_RHR GPIOG -#define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_3 - -#define TRIMS_GPIO_REG_RVD GPIOB -#define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_12 - -#define TRIMS_GPIO_REG_RVU GPIOB -#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_15 - -// ADC -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 ADC1_INP16 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 ADC12_INP15 -#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_1 // PA.01 ADC1_INP17 -#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 ADC12_INP14 - -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_3 // PC.03 POT2 ADC12_INP13 -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_2 // PC.02 POT1 ADC123_INP12 -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05 ADC12_INP8 - -#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV, ADC_GPIO_PIN_STICK_RH, ADC_GPIO_PIN_STICK_RV) -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_BATT ) - -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_16 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_15 -#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_17 -#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_14 - -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_13 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_12 -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_8 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC3 IMP17 - -#define ADC_MAIN ADC1 -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMAMUX1_REQ_ADC1 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 - -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BAT } -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMAMUX1_REQ_ADC3 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 - #define ADC_VREF_PREC2 330 -#define ADC_DIRECTION { \ -0,-1,0,-1, /* gimbals */ \ -1,1 /* pots */ \ -} - - // Power #define PWR_SWITCH_GPIO GPIO_PIN(GPIOI, 3) #define PWR_ON_GPIO GPIO_PIN(GPIOD, 3) diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 80b208933..1816c4705 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -173,7 +173,7 @@ #define PWM_GPIO_AF GPIO_AF2 #define PWM_IRQn TIM5_IRQn #define PWM_IRQHandler TIM5_IRQHandler - #define PWM_GPIOA_PINS (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | LL_GPIO_PIN_3) + #include "hal_pwm_sticks.h" #elif defined(RADIO_TLITE) || defined(RADIO_LR3PRO) #define ADC_VREF_PREC2 330 #elif defined(RADIO_T14) diff --git a/radio/src/targets/tx16smk3/hal.h b/radio/src/targets/tx16smk3/hal.h index c16ad9061..d0b17b872 100644 --- a/radio/src/targets/tx16smk3/hal.h +++ b/radio/src/targets/tx16smk3/hal.h @@ -74,59 +74,6 @@ USART6: INTMODULE_USART #include "hal_settings.h" -// Keys -#define KEYS_GPIO_REG_PAGEDN GPIOA -#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_8 // PA.08 -#define KEYS_GPIO_REG_PAGEUP GPIOG -#define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PG.07 -#define KEYS_GPIO_REG_SYS GPIOB -#define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_2 // PB.02 -#define KEYS_GPIO_REG_ENTER GPIOG -#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_12 // PG.12 -#define KEYS_GPIO_REG_MDL GPIOE -#define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_3 // PE.03 -#define KEYS_GPIO_REG_EXIT GPIOG -#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_3 // PG.03 -#define KEYS_GPIO_REG_TELE GPIOI -#define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_15 // PI.15 - -// Trims -#define TRIMS_GPIO_REG_LHL -#define TRIMS_GPIO_PIN_LHL - -#define TRIMS_GPIO_REG_LHR -#define TRIMS_GPIO_PIN_LHR - -#define TRIMS_GPIO_REG_LVD -#define TRIMS_GPIO_PIN_LVD - -#define TRIMS_GPIO_REG_LVU -#define TRIMS_GPIO_PIN_LVU - -#define TRIMS_GPIO_REG_RHL -#define TRIMS_GPIO_PIN_RHL - -#define TRIMS_GPIO_REG_RHR -#define TRIMS_GPIO_PIN_RHR - -#define TRIMS_GPIO_REG_RVD -#define TRIMS_GPIO_PIN_RVD - -#define TRIMS_GPIO_REG_RVU -#define TRIMS_GPIO_PIN_RVU - -#define TRIMS_GPIO_REG_RSD -#define TRIMS_GPIO_PIN_RSD - -#define TRIMS_GPIO_REG_RSU -#define TRIMS_GPIO_PIN_RSU - -#define TRIMS_GPIO_REG_LSD GPIOH -#define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_15 - -#define TRIMS_GPIO_REG_LSU GPIOH -#define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13 - // Expanders #define IO_INT_GPIO GPIO_PIN(GPIOD, 3) #define IO_RESET_GPIO GPIO_PIN(GPIOG, 10) @@ -135,77 +82,8 @@ USART6: INTMODULE_USART #define EXTI3_IRQ_Priority 9 #endif -// ADC -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_6 // PA.06 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PC.03 -#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_4 // PC.04 -#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_5 // PC.05 - -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_1 // PC.01 POT1 -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 POT2 -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_3 // PH.03 - -#define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_2 // PH.02 VRC/LS -#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_7 // PA.07 VRD/RS - -#define ADC_GPIO_PIN_LUX LL_GPIO_PIN_0 // PB.00 Light Sensor - -#define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_5 // PA.05,ADC1_CH19 -#define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_5 // PH.05,ADC3_CH16 - -#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_SLIDER2|ADC_GPIO_PIN_EXT1) -#define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_LUX) -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_POT1) -#define ADC_GPIOH_PINS (ADC_GPIO_PIN_BATT | ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_EXT2) - - -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC12_INP3 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_13 // ADC12_INP13 -#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_4 // ADC12_INP4 -#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_8 // ADC12_INP8 - -// Each ADC cannot map more than 8 channels, otherwise it will cause problems -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_11 // ADC12_INP11 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_5 // ADC12_INP5 -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_14 // ADC3_INP14 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC3_INP17 -#define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_13 // ADC3_INP13 -#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_7 // ADC12_INP7 - -#define ADC_CHANNEL_LUX LL_ADC_CHANNEL_9 // ADC12_INP9 -> Light Sensor - -#define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_19 // ADC1_IN19 -#define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_16 // ADC3_IN16 - -#define ADC_MAIN ADC1 -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMAMUX1_REQ_ADC1 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 - -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS { ADC_CHANNEL_SLIDER1, ADC_CHANNEL_BATT, ADC_CHANNEL_RTC_BAT, ADC_CHANNEL_EXT2 } -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMAMUX1_REQ_ADC3 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 - #define ADC_VREF_PREC2 330 -#define ADC_DIRECTION { \ - 0,-1,0,-1, /* gimbals */ \ - -1,-1, /* pots */ \ - 0,-1, /* sliders */ \ - 0,0, /* ext */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - 0 /* lux sensor */ \ - } - #define USE_EXTI9_5_IRQ // used for I2C port extender interrupt #define EXTI9_5_IRQ_Priority 5 diff --git a/radio/util/hw_defs/hal_pwm_sticks.jinja b/radio/util/hw_defs/hal_pwm_sticks.jinja new file mode 100644 index 000000000..0f82de605 --- /dev/null +++ b/radio/util/hw_defs/hal_pwm_sticks.jinja @@ -0,0 +1,11 @@ +// +// WARNING: DO NOT EDIT THIS FILE +// This file has been generated from the target's JSON hardware description +// + +#pragma once + +{% set pwm_sticks = adc_inputs.inputs | selectattr('type', '==', 'STICK') | selectattr('pwm_channel', 'ne', none) | list %} +{% for gpio, inputs in pwm_sticks | groupby('gpio') %} +#define PWM_{{ gpio }}_PINS ({{ inputs | map(attribute='pin') | join(' | ') }}) +{% endfor %}