Support for TFT & Touch Screens (#18130)

This commit is contained in:
Alexander Gavrilenko
2020-07-30 09:43:19 +03:00
committed by GitHub
parent bba157e5bd
commit 117df87d19
176 changed files with 14747 additions and 303 deletions

View File

@ -255,7 +255,7 @@
#define IS_ULTIPANEL
#endif
// LVGL UI, SPI or FSMC
// FSMC/SPI TFT Panels (LVGL)
#if EITHER(TFT_LVGL_UI_SPI, TFT_LVGL_UI_FSMC)
#define HAS_TFT_LVGL_UI 1
#endif
@ -273,6 +273,27 @@
#define DELAYED_BACKLIGHT_INIT
#endif
// FSMC/SPI TFT Panels (HAL STM32)
#if EITHER(TFT_320x240, TFT_480x320)
#define HAS_FSMC_TFT 1
#elif EITHER(TFT_320x240_SPI, TFT_480x320_SPI)
#define HAS_SPI_TFT 1
#endif
#if HAS_FSMC_TFT || HAS_SPI_TFT
#define HAS_GRAPHICAL_TFT 1
#define IS_ULTIPANEL
#endif
// Fewer lines with touch buttons on-screen
#if EITHER(TFT_320x240, TFT_320x240_SPI)
#define HAS_UI_320x240 1
#define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7)
#elif EITHER(TFT_480x320, TFT_480x320_SPI)
#define HAS_UI_480x320 1
#define LCD_HEIGHT TERN(TOUCH_SCREEN, 6, 7)
#endif
/**
* I2C Panels
*/
@ -329,7 +350,7 @@
#endif
#ifndef STD_ENCODER_PULSES_PER_STEP
#if ENABLED(TOUCH_BUTTONS)
#if ENABLED(TOUCH_SCREEN)
#define STD_ENCODER_PULSES_PER_STEP 2
#else
#define STD_ENCODER_PULSES_PER_STEP 5
@ -398,13 +419,14 @@
// Aliases for LCD features
#if EITHER(ULTRA_LCD, EXTENSIBLE_UI)
#define HAS_DISPLAY 1
#if ENABLED(ULTRA_LCD)
#define HAS_SPI_LCD 1
#if ENABLED(DOGLCD)
#define HAS_GRAPHICAL_LCD 1
#else
#define HAS_CHARACTER_LCD 1
#endif
#endif
#if ENABLED(ULTRA_LCD)
#define HAS_SPI_LCD 1
#if ENABLED(DOGLCD)
#define HAS_GRAPHICAL_LCD 1
#elif DISABLED(HAS_GRAPHICAL_TFT)
#define HAS_CHARACTER_LCD 1
#endif
#endif

View File

@ -251,6 +251,17 @@
#define EARLY_WATCHDOG 1
#endif
// Full Touch Screen needs 'tft/xpt2046'
#if ENABLED(TOUCH_SCREEN)
#define HAS_TFT_XPT2046 1
#endif
// Touch Screen or "Touch Buttons" need XPT2046 pins
// but they use different components
#if EITHER(HAS_TFT_XPT2046, HAS_TOUCH_XPT2046)
#define NEED_TOUCH_PINS 1
#endif
// Extensible UI pin mapping for RepRapDiscount
#if ENABLED(TOUCH_UI_FTDI_EVE) && ANY(AO_EXP1_PINMAP, AO_EXP2_PINMAP, CR10_TFT_PINMAP)
#define TOUCH_UI_ULTIPANEL 1

View File

@ -373,7 +373,7 @@
#endif
#if ANY(LCD_USE_DMA_FSMC, FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT) || !PIN_EXISTS(SD_DETECT)
#if ANY(HAS_GRAPHICAL_TFT, LCD_USE_DMA_FSMC, FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT) || !PIN_EXISTS(SD_DETECT)
#define NO_LCD_REINIT 1 // Suppress LCD re-initialization
#endif

View File

@ -513,6 +513,8 @@
#error "[XYZ]_HOME_BUMP_MM is now HOMING_BUMP_MM. Please update Configuration_adv.h."
#elif defined(DIGIPOT_I2C)
#error "DIGIPOT_I2C is now DIGIPOT_MCP4451 (or DIGIPOT_MCP4018). Please update Configuration_adv.h."
#elif defined(TOUCH_BUTTONS)
#error "TOUCH_BUTTONS is now TOUCH_SCREEN. Please update your Configuration.h."
#endif
#ifdef FIL_RUNOUT_INVERTING
@ -687,8 +689,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#elif PROGRESS_MSG_EXPIRE < 0
#error "PROGRESS_MSG_EXPIRE must be greater than or equal to 0."
#endif
#elif ENABLED(LCD_SET_PROGRESS_MANUALLY) && NONE(HAS_GRAPHICAL_LCD, EXTENSIBLE_UI)
#error "LCD_SET_PROGRESS_MANUALLY requires LCD_PROGRESS_BAR, Graphical LCD, or EXTENSIBLE_UI."
#elif ENABLED(LCD_SET_PROGRESS_MANUALLY) && NONE(HAS_GRAPHICAL_LCD, HAS_GRAPHICAL_TFT, EXTENSIBLE_UI)
#error "LCD_SET_PROGRESS_MANUALLY requires LCD_PROGRESS_BAR, Graphical LCD, TFT, or EXTENSIBLE_UI."
#endif
#if !HAS_LCD_MENU && ENABLED(SD_REPRINT_LAST_SELECTED_FILE)
@ -2224,6 +2226,8 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
+ ENABLED(DGUS_LCD_UI_HIPRECY) \
+ ENABLED(MALYAN_LCD) \
+ ENABLED(TOUCH_UI_FTDI_EVE) \
+ ENABLED(TFT_320x240) \
+ ENABLED(TFT_320x240_SPI) \
+ ENABLED(FSMC_GRAPHICAL_TFT) \
+ ENABLED(TFT_LVGL_UI_FSMC) \
+ ENABLED(TFT_LVGL_UI_SPI)
@ -3043,18 +3047,18 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
/**
* Touch Buttons
*/
#if ENABLED(TOUCH_BUTTONS)
#if ENABLED(TOUCH_SCREEN)
#ifndef XPT2046_X_CALIBRATION
#error "XPT2046_X_CALIBRATION must be defined with TOUCH_BUTTONS."
#error "XPT2046_X_CALIBRATION must be defined with TOUCH_SCREEN."
#endif
#ifndef XPT2046_Y_CALIBRATION
#error "XPT2046_Y_CALIBRATION must be defined with TOUCH_BUTTONS."
#error "XPT2046_Y_CALIBRATION must be defined with TOUCH_SCREEN."
#endif
#ifndef XPT2046_X_OFFSET
#error "XPT2046_X_OFFSET must be defined with TOUCH_BUTTONS."
#error "XPT2046_X_OFFSET must be defined with TOUCH_SCREEN."
#endif
#ifndef XPT2046_Y_OFFSET
#error "XPT2046_Y_OFFSET must be defined with TOUCH_BUTTONS."
#error "XPT2046_Y_OFFSET must be defined with TOUCH_SCREEN."
#endif
#endif