From 329b753df5f9f5b25aa1f0add7d552ac98b8e3c0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 2 Apr 2018 20:37:34 +0200 Subject: [PATCH] XLite REV 0.2 support (#5785) XLite REV 0.2 support --- radio/src/dataconstants.h | 28 ++++++++------ radio/src/datastructs.h | 2 +- radio/src/targets/taranis/board.h | 4 +- radio/src/targets/taranis/hal.h | 38 +++++++++++++------ radio/src/targets/taranis/keys_driver.cpp | 3 +- .../src/targets/taranis/telemetry_driver.cpp | 8 ++-- 6 files changed, 49 insertions(+), 34 deletions(-) diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 5935066d0..916567281 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -529,15 +529,7 @@ enum SwitchSources { SWSRC_FIRST_SWITCH, -#if defined(PCBXLITE) - SWSRC_SA0 = SWSRC_FIRST_SWITCH, - SWSRC_SA1, - SWSRC_SA2, - SWSRC_SB0, - SWSRC_SB1, - SWSRC_SB2, - SWSRC_LAST_SWITCH = SWSRC_SB2, -#elif defined(PCBTARANIS) || defined(PCBHORUS) +#if defined(PCBTARANIS) || defined(PCBHORUS) SWSRC_SA0 = SWSRC_FIRST_SWITCH, SWSRC_SA1, SWSRC_SA2, @@ -555,18 +547,21 @@ enum SwitchSources { SWSRC_SE1, SWSRC_SE2, #endif +#if !defined(PCBXLITE) SWSRC_SF0, SWSRC_SF1, SWSRC_SF2, +#endif #if !defined(PCBX7) && !defined(PCBXLITE) SWSRC_SG0, SWSRC_SG1, SWSRC_SG2, #endif +#if !defined(PCBXLITE) SWSRC_SH0, SWSRC_SH1, SWSRC_SH2, - SWSRC_TRAINER = SWSRC_SH2, +#endif #if defined(PCBX9E) SWSRC_SI0, SWSRC_SI1, @@ -598,11 +593,18 @@ enum SwitchSources { SWSRC_SR0, SWSRC_SR1, SWSRC_SR2, +#endif +#if defined(PCBX9E) + SWSRC_TRAINER = SWSRC_SH2, SWSRC_LAST_SWITCH = SWSRC_SR2, +#elif defined(PCBXLITE) + SWSRC_TRAINER = SWSRC_SD2, + SWSRC_LAST_SWITCH = SWSRC_SD2, #else + SWSRC_TRAINER = SWSRC_SH2, SWSRC_LAST_SWITCH = SWSRC_SH2, #endif -#else +#else // neither Taranis nor Horus SWSRC_ID0 = SWSRC_FIRST_SWITCH, SWSRC_ID1, SWSRC_ID2, @@ -803,7 +805,9 @@ enum MixSources { #if defined(PCBXLITE) MIXSRC_SA = MIXSRC_FIRST_SWITCH, LUA_EXPORT("sa", "Switch A") MIXSRC_SB, LUA_EXPORT("sb", "Switch B") - MIXSRC_LAST_SWITCH = MIXSRC_SB, + MIXSRC_SC, LUA_EXPORT("sc", "Switch C") + MIXSRC_SD, LUA_EXPORT("sd", "Switch D") + MIXSRC_LAST_SWITCH = MIXSRC_SD, #elif defined(PCBTARANIS) || defined(PCBHORUS) MIXSRC_SA = MIXSRC_FIRST_SWITCH, LUA_EXPORT("sa", "Switch A") MIXSRC_SB, LUA_EXPORT("sb", "Switch B") diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 63d7c5815..9135efe84 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -1183,7 +1183,7 @@ static inline void check_struct() CHKSIZE(TrainerData, 16); #if defined(PCBXLITE) - CHKSIZE(RadioData, 838); + CHKSIZE(RadioData, 844); CHKSIZE(ModelData, 6025); #elif defined(PCBX7) CHKSIZE(RadioData, 850); diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index cbc194b72..71b467282 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -298,14 +298,12 @@ enum EnumSwitchesPositions SW_SB0, SW_SB1, SW_SB2, -#if !defined(PCBXLITE) SW_SC0, SW_SC1, SW_SC2, SW_SD0, SW_SD1, SW_SD2, -#endif #if !defined(PCBX7) && !defined(PCBXLITE) SW_SE0, SW_SE1, @@ -360,7 +358,7 @@ enum EnumSwitchesPositions #endif }; #if defined(PCBXLITE) - #define NUM_SWITCHES 2 + #define NUM_SWITCHES 4 #elif defined(PCBX7) #define NUM_SWITCHES 6 #elif defined(PCBX9E) diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index f501b16a7..5aef2e054 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -183,10 +183,10 @@ #define SWITCHES_GPIO_REG_B_L GPIOG->IDR #define SWITCHES_GPIO_PIN_B_L GPIO_Pin_10 // PG.10 #elif defined(PCBXLITE) - #define SWITCHES_GPIO_REG_B_H GPIOE->IDR - #define SWITCHES_GPIO_PIN_B_H GPIO_Pin_2 // PE.02 - #define SWITCHES_GPIO_REG_B_L GPIOE->IDR - #define SWITCHES_GPIO_PIN_B_L GPIO_Pin_3 // PE.03 + #define SWITCHES_GPIO_REG_B_H GPIOA->IDR + #define SWITCHES_GPIO_PIN_B_H GPIO_Pin_6 // PA.06 + #define SWITCHES_GPIO_REG_B_L GPIOA->IDR + #define SWITCHES_GPIO_PIN_B_L GPIO_Pin_5 // PA.05 #elif defined(PCBX7) #define SWITCHES_GPIO_REG_B_L GPIOE->IDR #define SWITCHES_GPIO_PIN_B_L GPIO_Pin_15 // PE.15 @@ -205,7 +205,10 @@ #define SWITCHES_GPIO_REG_C_L GPIOF->IDR #define SWITCHES_GPIO_PIN_C_L GPIO_Pin_14 // PF.14 #elif defined(PCBXLITE) - // no SWC + #define SWITCHES_GPIO_REG_C_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_C_H GPIO_Pin_2 // PE.02 + #define SWITCHES_GPIO_REG_C_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_C_L GPIO_Pin_3 // PE.03 #elif defined(PCBX7) #define SWITCHES_GPIO_REG_C_L GPIOD->IDR #define SWITCHES_GPIO_PIN_C_L GPIO_Pin_11 // PD.11 @@ -229,7 +232,10 @@ #define SWITCHES_GPIO_REG_D_L GPIOE->IDR #define SWITCHES_GPIO_PIN_D_L GPIO_Pin_13 // PE.13 #elif defined(PCBXLITE) - // no SWD + #define SWITCHES_GPIO_REG_D_H GPIOB->IDR + #define SWITCHES_GPIO_PIN_D_H GPIO_Pin_4 // PB.04 + #define SWITCHES_GPIO_REG_D_L GPIOB->IDR + #define SWITCHES_GPIO_PIN_D_L GPIO_Pin_5 // PB.05 #elif defined(PCBX7) #define SWITCHES_GPIO_REG_D_L GPIOE->IDR #define SWITCHES_GPIO_PIN_D_L GPIO_Pin_1 // PE.01 @@ -360,7 +366,8 @@ #define KEYS_GPIOE_PINS (KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_MINUS | TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L) #elif defined(PCBXLITE) #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE) - #define KEYS_GPIOB_PINS (GPIO_Pin_0 | GPIO_Pin_1) + #define KEYS_GPIOA_PINS (GPIO_Pin_5 | GPIO_Pin_6) + #define KEYS_GPIOB_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5) #define KEYS_GPIOC_PINS (GPIO_Pin_4 | GPIO_Pin_5) #define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14) #elif defined(PCBX7) @@ -728,6 +735,13 @@ #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 #define TELEMETRY_DIR_GPIO GPIOD #define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04 +#if defined(PCBXLITE) +#define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN +#define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN +#else +#define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN +#define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN +#endif #define TELEMETRY_GPIO GPIOD #define TELEMETRY_TX_GPIO_PIN GPIO_Pin_5 // PD.05 #define TELEMETRY_RX_GPIO_PIN GPIO_Pin_6 // PD.06 @@ -834,12 +848,12 @@ #define BACKLIGHT_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) #define BACKLIGHT_TIMER TIM1 #define BACKLIGHT_GPIO GPIOA - #define BACKLIGHT_GPIO_PIN GPIO_Pin_10 // PA.10 - #define BACKLIGHT_GPIO_PinSource GPIO_PinSource10 + #define BACKLIGHT_GPIO_PIN GPIO_Pin_8 // PA.08 + #define BACKLIGHT_GPIO_PinSource GPIO_PinSource8 #define BACKLIGHT_GPIO_AF GPIO_AF_TIM1 - #define BACKLIGHT_CCMR2 TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 // Channel 3, PWM - #define BACKLIGHT_CCER TIM_CCER_CC3E - #define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR3 + #define BACKLIGHT_CCMR1 TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 // Channel 1, PWM + #define BACKLIGHT_CCER TIM_CCER_CC1E + #define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR1 #elif defined(PCBX7) #define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD #define BACKLIGHT_RCC_APB1Periph RCC_APB1Periph_TIM4 diff --git a/radio/src/targets/taranis/keys_driver.cpp b/radio/src/targets/taranis/keys_driver.cpp index ea0d389da..a6d038d52 100644 --- a/radio/src/targets/taranis/keys_driver.cpp +++ b/radio/src/targets/taranis/keys_driver.cpp @@ -176,11 +176,10 @@ uint32_t switchState(uint8_t index) switch (index) { ADD_3POS_CASE(A, 0); ADD_3POS_CASE(B, 1); -#if !defined(PCBXLITE) ADD_3POS_CASE(C, 2); ADD_3POS_CASE(D, 3); -#endif #if defined(PCBXLITE) + // no SWF, SWG and SWH on XLITE #elif defined(PCBX7) ADD_2POS_CASE(F); ADD_2POS_CASE(H); diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index cc326f1f7..6b19bcb51 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -79,14 +79,14 @@ void telemetryPortInit(uint32_t baudrate, uint8_t mode) void telemetryPortSetDirectionOutput() { - TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN; // output enable - TELEMETRY_USART->CR1 &= ~USART_CR1_RE; // turn off receiver + TELEMETRY_DIR_OUTPUT(); + TELEMETRY_USART->CR1 &= ~USART_CR1_RE; // turn off receiver } void telemetryPortSetDirectionInput() { - TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN; // output disable - TELEMETRY_USART->CR1 |= USART_CR1_RE; // turn on receiver + TELEMETRY_DIR_INPUT(); + TELEMETRY_USART->CR1 |= USART_CR1_RE; // turn on receiver } void sportSendBuffer(uint8_t * buffer, uint32_t count)