From e1baade1f7e02f0507c83e996568d34f9c7d79c2 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 5 Jun 2024 12:14:20 +0200 Subject: [PATCH] feat: Jumper T15 IPS screen support (#5115) --- radio/src/gui/colorlcd/radio_version.cpp | 7 ++++++- radio/src/targets/horus/board.h | 4 ++++ radio/src/targets/horus/hal.h | 12 ++++++++---- radio/src/targets/horus/lcd_st7796s_driver.cpp | 6 ++++++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 7d38e02b685..52dfaa1f731 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -24,7 +24,6 @@ #include "options.h" #include "libopenui.h" #include "fw_version.h" -#include "hal/module_port.h" #if defined(CROSSFIRE) #include "mixer_scheduler.h" @@ -360,6 +359,12 @@ void RadioVersionPage::build(FormWindow * window) version += options[i]; } +#if defined(RADIO_T15) && !defined(SIMU) + version += nl; + version += "PCBREV: "; + version += version += '0' + static_cast(hardwareOptions.pcbrev); +#endif + #if (defined(PCBNV14) || defined(PCBPL18)) && !defined(SIMU) version += nl; version += "LCD: "; diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index fad9138271d..103879b124f 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -72,6 +72,10 @@ enum { // X10 PCBREV_X10_STD = 0, PCBREV_X10_EXPRESS = 3, + + //T15 + PCBREV_T15_STD = 0, + PCBREV_T15_IPS = 1, }; #if defined(SIMU) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 21af641644e..721a9dedff7 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -555,8 +555,13 @@ #endif // PCBREV -#if defined(MANUFACTURER_FRSKY) -#if defined(PCBX10) +#if defined(RADIO_T15) + #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOA + #define PCBREV_GPIO GPIOH + #define PCBREV_GPIO_PIN (GPIO_Pin_7 | GPIO_Pin_8) // PH.07 | PH.08 + #define PCBREV_VALUE() (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_7) + (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_8) << 1)) + #define LL_PCBREV_VALUE() (LL_GPIO_IsInputPinSet(PCBREV_GPIO, GPIO_PIN_7) + (LL_GPIO_IsInputPinSet(PCBREV_GPIO, GPIO_PIN_8) << 1)) +#elif defined(PCBX10) && defined(MANUFACTURER_FRSKY) #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOA #define PCBREV_GPIO GPIOH #define PCBREV_GPIO_PIN (GPIO_Pin_7 | GPIO_Pin_8) // PH.07 | PH.08 @@ -564,12 +569,11 @@ #define PCBREV_TOUCH_GPIO_PIN GPIO_Pin_6 // PA.06 #define PCBREV_TOUCH_GPIO_PULL_UP #define PCBREV_VALUE() ((GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_7) + (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_8) << 1)) * GPIO_ReadInputDataBit(PCBREV_TOUCH_GPIO, GPIO_Pin_6)) -#else +#elif defined(MANUFACTURER_FRSKY) #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOI #define PCBREV_GPIO GPIOI #define PCBREV_GPIO_PIN GPIO_Pin_11 // PI.11 #define PCBREV_VALUE() GPIO_ReadInputDataBit(PCBREV_GPIO, PCBREV_GPIO_PIN) -#endif #else #define PCBREV_RCC_AHB1Periph 0 #endif diff --git a/radio/src/targets/horus/lcd_st7796s_driver.cpp b/radio/src/targets/horus/lcd_st7796s_driver.cpp index 3fb71d3093e..19a867ea439 100644 --- a/radio/src/targets/horus/lcd_st7796s_driver.cpp +++ b/radio/src/targets/horus/lcd_st7796s_driver.cpp @@ -28,6 +28,7 @@ #include "debug.h" #include "lcd.h" #include "lcd_st7796s_driver.h" +#include "hal.h" static LTDC_HandleTypeDef hltdc; static void* initialFrameBuffer = nullptr; @@ -302,6 +303,11 @@ void LCD_ST7796S_Init(void) { delay_ms(120); +#if defined(RADIO_T15) + if (LL_PCBREV_VALUE() == 1) // 0: TFT, 1: IPS + lcdWriteCommand( 0x21 ); +#endif + LCD_ST7796S_On(); }