diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 3827034d2..821fa0078 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -143,7 +143,7 @@ elseif(PCB STREQUAL XLITES) set(STATUS_LEDS YES) endif() -if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES) +if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES OR PCB STREQUAL X3) add_definitions(-DINTERNAL_MODULE_SERIAL) if(PXX_FREQUENCY STREQUAL HIGH) add_definitions(-DPXX_FREQUENCY_HIGH) @@ -159,7 +159,6 @@ else() set(TARGET_SRC ${TARGET_SRC} intmodule_pulses_driver.cpp - trainer_driver.cpp ) set(PULSES_SRC ${PULSES_SRC} @@ -167,6 +166,13 @@ else() ) endif() +if(NOT PCB STREQUAL XLITE AND NOT PCB STREQUAL XLITES) + set(TARGET_SRC + ${TARGET_SRC} + trainer_driver.cpp + ) +endif() + if(PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES) add_definitions(-DBLUETOOTH) set(TARGET_SRC diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 9b9535baa..bb2172cfa 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -366,7 +366,7 @@ enum EnumSwitchesPositions #elif defined(PCBX7) #define NUM_SWITCHES 6 #elif defined(PCBX3) - #define NUM_SWITCHES 4 + #define NUM_SWITCHES 5 #elif defined(PCBX9E) #define NUM_SWITCHES 18 // yes, it's a lot! #else @@ -583,7 +583,7 @@ uint8_t telemetryGetByte(uint8_t * byte); extern uint32_t telemetryErrors; // PCBREV driver -#if defined(PCBXLITE) +#if defined(PCBXLITE) || defined(PCBX3) #define HAS_SPORT_UPDATE_CONNECTOR() true #elif defined(PCBX7) #define IS_PCBREV_40() (GPIO_ReadInputDataBit(PCBREV_GPIO, PCBREV_GPIO_PIN) == Bit_SET) diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 816f0e940..069d146f7 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -681,10 +681,10 @@ #endif // Internal Module -#if defined(PCBXLITE) +#if defined(PCBXLITE) || defined(PCBX3) #define INTMODULE_RCC_APB1Periph RCC_APB1Periph_TIM3 #define INTMODULE_RCC_APB2Periph RCC_APB2Periph_USART1 - #if defined(PCBXLITES) + #if defined(PCBXLITES) || defined(PCBX3) #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA2) #define INTMODULE_PWR_GPIO GPIOA #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_15 // PA.15 @@ -799,16 +799,38 @@ #define EXTMODULE_TIMER_DMA_STREAM DMA2_Stream1 #define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream1_IRQn #define EXTMODULE_TIMER_DMA_STREAM_IRQHandler DMA2_Stream1_IRQHandler - #define EXTMODULE_TIMER_DMA_FLAG_TC DMA_IT_TCIF1 + #define EXTMODULE_TIMER_DMA_FLAG_TC DMA_IT_TCIF1 #define EXTMODULE_TIMER_OUTPUT_ENABLE TIM_CCER_CC1NE #define EXTMODULE_TIMER_OUTPUT_POLARITY TIM_CCER_CC1NP - #define EXTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) + #define EXTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) #endif // Trainer Port #if defined(PCBXLITE) #define TRAINER_RCC_AHB1Periph 0 #define TRAINER_RCC_APB1Periph 0 +#elif defined(PCBX3) + #define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD) + #define TRAINER_RCC_APB1Periph RCC_APB1Periph_TIM4 + #define TRAINER_GPIO GPIOD + #define TRAINER_IN_GPIO_PIN GPIO_Pin_13 // PD.13 + #define TRAINER_IN_GPIO_PinSource GPIO_PinSource13 + #define TRAINER_OUT_GPIO_PIN GPIO_Pin_12 // PD.12 + #define TRAINER_OUT_GPIO_PinSource GPIO_PinSource12 + #define TRAINER_DETECT_GPIO GPIOD + #define TRAINER_DETECT_GPIO_PIN GPIO_Pin_11 // PD.11 + #define TRAINER_TIMER TIM4 + #define TRAINER_TIMER_IRQn TIM4_IRQn + #define TRAINER_GPIO_AF GPIO_AF_TIM4 + #define TRAINER_DMA DMA1 + #define TRAINER_DMA_CHANNEL DMA_Channel_5 + #define TRAINER_DMA_STREAM DMA1_Stream2 + #define TRAINER_DMA_IRQn DMA1_Stream2_IRQn + #define TRAINER_DMA_IRQHandler DMA1_Stream2_IRQHandler + #define TRAINER_DMA_FLAG_TC DMA_IT_TCIF2 + #define TRAINER_TIMER_IRQn TIM4_IRQn + #define TRAINER_TIMER_IRQHandler TIM4_IRQHandler + #define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) #else #define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC) #define TRAINER_RCC_APB1Periph RCC_APB1Periph_TIM3 @@ -969,7 +991,7 @@ #define BACKLIGHT_GPIO_PinSource_2 GPIO_PinSource13 #define BACKLIGHT_GPIO_AF_1 GPIO_AF_TIM4 #define BACKLIGHT_GPIO_AF_2 GPIO_AF_TIM4 -#elif defined(PCBXLITES) +#elif defined(PCBXLITES) || defined(PCBX3) #define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOA #define BACKLIGHT_RCC_APB1Periph 0 #define BACKLIGHT_RCC_APB2Periph RCC_APB2Periph_TIM1 @@ -1042,7 +1064,7 @@ #define LCD_DMA_FLAG_INT DMA_HIFCR_CTCIF7 #define LCD_SPI SPI3 #define LCD_GPIO_AF GPIO_AF_SPI3 -#elif defined(PCBXLITE) +#elif defined(PCBXLITE) || defined(PCBX3) #define LCD_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define LCD_RCC_APB1Periph RCC_APB1Periph_SPI3 #define LCD_SPI_GPIO GPIOC @@ -1063,7 +1085,7 @@ #define LCD_DMA_FLAG_INT DMA_HIFCR_CTCIF7 #define LCD_SPI SPI3 #define LCD_GPIO_AF GPIO_AF_SPI3 -#elif defined(PCBX9DP) || defined(PCBX7) || defined(PCBX3) +#elif defined(PCBX9DP) || defined(PCBX7) #define LCD_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define LCD_RCC_APB1Periph RCC_APB1Periph_SPI3 #define LCD_SPI_GPIO GPIOC @@ -1203,7 +1225,7 @@ #endif // Haptic -#if defined(PCBXLITE) +#if defined(PCBXLITE) || defined(PCBX3) #define HAPTIC_PWM #define HAPTIC_RCC_AHB1Periph RCC_AHB1Periph_GPIOB #define HAPTIC_RCC_APB1Periph RCC_APB1Periph_TIM2