Skip to content

Commit e60ffdb

Browse files
committed
TFT Presets, Generic options, Sanity checks
1 parent 9a23fb5 commit e60ffdb

25 files changed

+280
-271
lines changed

Marlin/Configuration.h

Lines changed: 75 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,22 +2205,83 @@
22052205
//=============================================================================
22062206

22072207
/**
2208-
* TFT Type - Select your Display type
2209-
*
2210-
* Available options are:
2211-
* MKS_TS35_V2_0,
2212-
* MKS_ROBIN_TFT24, MKS_ROBIN_TFT28, MKS_ROBIN_TFT32, MKS_ROBIN_TFT35,
2213-
* MKS_ROBIN_TFT43, MKS_ROBIN_TFT_V1_1R
2214-
* TFT_TRONXY_X5SA, ANYCUBIC_TFT35, LONGER_LK_TFT28
2215-
* TFT_GENERIC
2216-
*
2217-
* For TFT_GENERIC, you need to configure these 3 options:
2218-
* Driver: TFT_DRIVER
2219-
* Current Drivers are: AUTO, ST7735, ST7789, ST7796, R61505, ILI9328, ILI9341, ILI9488
2220-
* Resolution: TFT_WIDTH and TFT_HEIGHT
2221-
* Interface: TFT_INTERFACE_FSMC or TFT_INTERFACE_SPI
2208+
* Specific TFT Model Presets. Enable one of the following options
2209+
* or enable TFT_GENERIC and set sub-options.
22222210
*/
2211+
2212+
//
2213+
// 480x320, 3.5", SPI Display From MKS
2214+
// Normally used in MKS Robin Nano V2
2215+
//
2216+
//#define MKS_TS35_V2_0
2217+
2218+
//
2219+
// 320x240, 2.4", FSMC Display From MKS
2220+
// Normally used in MKS Robin Nano V1.2
2221+
//
2222+
//#define MKS_ROBIN_TFT24
2223+
2224+
//
2225+
// 320x240, 2.8", FSMC Display From MKS
2226+
// Normally used in MKS Robin Nano V1.2
2227+
//
2228+
//#define MKS_ROBIN_TFT28
2229+
2230+
//
2231+
// 320x240, 3.2", FSMC Display From MKS
2232+
// Normally used in MKS Robin Nano V1.2
2233+
//
2234+
//#define MKS_ROBIN_TFT32
2235+
2236+
//
2237+
// 480x320, 3.5", FSMC Display From MKS
2238+
// Normally used in MKS Robin Nano V1.2
2239+
//
2240+
//#define MKS_ROBIN_TFT35
2241+
2242+
//
2243+
// 480x272, 4.3", FSMC Display From MKS
2244+
//
2245+
//#define MKS_ROBIN_TFT43
2246+
2247+
//
2248+
// 320x240, 3.2", FSMC Display From MKS
2249+
// Normally used in MKS Robin
2250+
//
2251+
//#define MKS_ROBIN_TFT_V1_1R
2252+
2253+
//
2254+
// 480x320, 3.5", FSMC Stock Display from TronxXY
2255+
//
2256+
//#define TFT_TRONXY_X5SA
2257+
2258+
//
2259+
// 480x320, 3.5", FSMC Stock Display from AnyCubic
2260+
//
2261+
//#define ANYCUBIC_TFT35
2262+
2263+
//
2264+
// 320x240, 2.8", FSMC Stock Display from Longer/Alfawise
2265+
//
2266+
//#define LONGER_LK_TFT28
2267+
2268+
//
2269+
// Generic TFT with detailed options
2270+
//
22232271
//#define TFT_GENERIC
2272+
#if ENABLED(TFT_GENERIC)
2273+
// :[ 'AUTO', 'ST7735', 'ST7789', 'ST7796', 'R61505', 'ILI9328', 'ILI9341', 'ILI9488' ]
2274+
#define TFT_DRIVER AUTO
2275+
2276+
// Interface. Enable one of the following options:
2277+
//#define TFT_INTERFACE_FSMC
2278+
//#define TFT_INTERFACE_SPI
2279+
2280+
// TFT Resolution. Enable one of the following options:
2281+
//#define TFT_RES_320x240
2282+
//#define TFT_RES_480x272
2283+
//#define TFT_RES_480x320
2284+
#endif
22242285

22252286
/**
22262287
* TFT UI - User Interface Selection. Enable one of the following options:

Marlin/src/core/macros.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@
170170
#define _DO_12(W,C,A,V...) (_##W##_1(A) C _DO_11(W,C,V))
171171
#define __DO_N(W,C,N,V...) _DO_##N(W,C,V)
172172
#define _DO_N(W,C,N,V...) __DO_N(W,C,N,V)
173-
#define DO(W,C,V...) _DO_N(W,C,NUM_ARGS(V),V)
173+
#define DO(W,C,V...) (_DO_N(W,C,NUM_ARGS(V),V))
174174

175175
// Macros to support option testing
176176
#define _CAT(a,V...) a##V
@@ -186,6 +186,7 @@
186186
#define _DIS_1(O) NOT(_ENA_1(O))
187187
#define ENABLED(V...) DO(ENA,&&,V)
188188
#define DISABLED(V...) DO(DIS,&&,V)
189+
#define COUNT_ENABLED(V...) DO(ENA,+,V)
189190

190191
#define TERN(O,A,B) _TERN(_ENA_1(O),B,A) // OPTION converted to '0' or '1'
191192
#define TERN0(O,A) _TERN(_ENA_1(O),0,A) // OPTION converted to A or '0'
@@ -200,6 +201,7 @@
200201
#define ALL(V...) ENABLED(V)
201202
#define BOTH(V1,V2) ALL(V1,V2)
202203
#define EITHER(V1,V2) ANY(V1,V2)
204+
#define MANY(V...) (COUNT_ENABLED(V) > 1)
203205

204206
// Macros to support pins/buttons exist testing
205207
#define PIN_EXISTS(PN) (defined(PN##_PIN) && PN##_PIN >= 0)

Marlin/src/inc/Conditionals_LCD.h

Lines changed: 49 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -311,31 +311,25 @@
311311
#define IS_ULTIPANEL
312312
#endif
313313

314-
// Compatibility
315-
#if ENABLED(FSMC_GRAPHICAL_TFT)
316-
#define TFT_CLASSIC_UI
317-
#define TFT_INTERFACE_FSMC
318-
#define TFT_GENERIC
319-
#elif ENABLED(SPI_GRAPHICAL_TFT)
320-
#define TFT_CLASSIC_UI
321-
#define TFT_INTERFACE_SPI
314+
// TFT Compatibility
315+
#if ANY(FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT, TFT_320x240, TFT_480x320, TFT_320x240_SPI, TFT_480x320_SPI, TFT_LVGL_UI_FSMC, TFT_LVGL_UI_SPI)
316+
#define IS_LEGACY_TFT
322317
#define TFT_GENERIC
323-
#elif EITHER(TFT_320x240, TFT_480x320)
324-
#define TFT_COLOR_UI
318+
#warning "Don't forget to update your TFT settings in Configuration.h."
319+
#endif
320+
321+
#if ANY(FSMC_GRAPHICAL_TFT, TFT_320x240, TFT_480x320, TFT_LVGL_UI_FSMC)
325322
#define TFT_INTERFACE_FSMC
326-
#define TFT_GENERIC
327-
#elif EITHER(TFT_320x240_SPI, TFT_480x320_SPI)
328-
#define TFT_COLOR_UI
323+
#elif ANY(SPI_GRAPHICAL_TFT, TFT_320x240_SPI, TFT_480x320_SPI, TFT_LVGL_UI_SPI)
329324
#define TFT_INTERFACE_SPI
330-
#define TFT_GENERIC
331-
#elif ENABLED(TFT_LVGL_UI_FSMC)
332-
#define TFT_LVGL_UI
333-
#define TFT_INTERFACE_FSMC
334-
#define TFT_GENERIC
335-
#elif ENABLED(TFT_LVGL_UI_SPI)
325+
#endif
326+
327+
#if EITHER(FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT)
328+
#define TFT_CLASSIC_UI
329+
#elif ANY(TFT_320x240, TFT_480x320, TFT_320x240_SPI, TFT_480x320_SPI)
330+
#define TFT_COLOR_UI
331+
#elif EITHER(TFT_LVGL_UI_FSMC, TFT_LVGL_UI_SPI)
336332
#define TFT_LVGL_UI
337-
#define TFT_INTERFACE_SPI
338-
#define TFT_GENERIC
339333
#endif
340334

341335
// FSMC/SPI TFT Panels (LVGL)
@@ -837,83 +831,85 @@
837831
#if ENABLED(MKS_TS35_V2_0)
838832
// Most common: ST7796
839833
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY)
840-
#define TFT_WIDTH 480
841-
#define TFT_HEIGHT 320
834+
#define TFT_RES_480x320
842835
#define TFT_INTERFACE_SPI
843-
#define GRAPHICAL_TFT_UPSCALE 3
844836
#elif ENABLED(MKS_ROBIN_TFT24)
845837
// Most common: ST7789
846838
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
847-
#define TFT_WIDTH 320
848-
#define TFT_HEIGHT 240
839+
#define TFT_RES_320x240
849840
#define TFT_INTERFACE_FSMC
850-
#define GRAPHICAL_TFT_UPSCALE 2
851841
#elif ENABLED(MKS_ROBIN_TFT28)
852842
// Most common: ST7789
853843
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
854-
#define TFT_WIDTH 320
855-
#define TFT_HEIGHT 240
844+
#define TFT_RES_320x240
856845
#define TFT_INTERFACE_FSMC
857-
#define GRAPHICAL_TFT_UPSCALE 2
858846
#elif ENABLED(MKS_ROBIN_TFT32)
859847
// Most common: ST7789
860848
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
861-
#define TFT_WIDTH 320
862-
#define TFT_HEIGHT 240
849+
#define TFT_RES_320x240
863850
#define TFT_INTERFACE_FSMC
864-
#define GRAPHICAL_TFT_UPSCALE 2
865851
#elif ENABLED(MKS_ROBIN_TFT35)
866852
// Most common: ILI9488
867853
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
868-
#define TFT_WIDTH 480
869-
#define TFT_HEIGHT 320
854+
#define TFT_RES_480x320
870855
#define TFT_INTERFACE_FSMC
871-
#define GRAPHICAL_TFT_UPSCALE 3
872856
#elif ENABLED(MKS_ROBIN_TFT43)
873857
#define TFT_DEFAULT_ORIENTATION 0
874858
#define TFT_DRIVER SSD1963
875-
#define TFT_WIDTH 480
876-
#define TFT_HEIGHT 272
859+
#define TFT_RES_480x272
877860
#define TFT_INTERFACE_FSMC
878-
#define GRAPHICAL_TFT_UPSCALE 2
879861
#elif ENABLED(MKS_ROBIN_TFT_V1_1R)
880862
// ILI9328 or R61505
881-
#define TFT_DEFAULT_ORIENTATION (TFT_INVERT_X | TFT_INVERT_Y | TFT_EXCHANGE_XY)
882-
#define TFT_WIDTH 320
883-
#define TFT_HEIGHT 240
863+
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
864+
#define TFT_RES_320x240
884865
#define TFT_INTERFACE_FSMC
885-
#define GRAPHICAL_TFT_UPSCALE 2
886866
#elif EITHER(TFT_TRONXY_X5SA, ANYCUBIC_TFT35)
887867
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
888868
#define TFT_DRIVER ILI9488
889-
#define TFT_WIDTH 480
890-
#define TFT_HEIGHT 320
869+
#define TFT_RES_480x320
891870
#define TFT_INTERFACE_FSMC
892-
#define GRAPHICAL_TFT_UPSCALE 3
893871
#elif ENABLED(LONGER_LK_TFT28)
894872
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
895-
#define TFT_WIDTH 320
896-
#define TFT_HEIGHT 240
873+
#define TFT_RES_320x240
897874
#define TFT_INTERFACE_FSMC
898-
#define GRAPHICAL_TFT_UPSCALE 2
899875
#elif ENABLED(TFT_GENERIC)
900876
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
877+
#if NONE(TFT_RES_320x240, TFT_RES_480x272, TFT_RES_480x320)
878+
#define TFT_RES_320x240
879+
#endif
880+
#if NONE(TFT_INTERFACE_FSMC, TFT_INTERFACE_SPI)
881+
#define TFT_INTERFACE_SPI
882+
#endif
883+
#endif
884+
885+
#if ENABLED(TFT_RES_320x240)
886+
#define TFT_WIDTH 320
887+
#define TFT_HEIGHT 240
888+
#define GRAPHICAL_TFT_UPSCALE 2
889+
#elif ENABLED(TFT_RES_480x272)
890+
#define TFT_WIDTH 480
891+
#define TFT_HEIGHT 272
892+
#define GRAPHICAL_TFT_UPSCALE 2
893+
#elif ENABLED(TFT_RES_480x320)
894+
#define TFT_WIDTH 480
895+
#define TFT_HEIGHT 320
896+
#define GRAPHICAL_TFT_UPSCALE 3
901897
#endif
902898

903899
// FSMC/SPI TFT Panels using standard HAL/tft/tft_(fsmc|spi).h
904900
#if ENABLED(TFT_INTERFACE_FSMC)
905901
#define HAS_FSMC_TFT 1
906902
#if ENABLED(TFT_CLASSIC_UI)
907-
#define FSMC_GRAPHICAL_TFT
903+
#define HAS_FSMC_GRAPHICAL_TFT 1
908904
#elif ENABLED(TFT_LVGL_UI)
909-
#define TFT_LVGL_UI_FSMC
905+
#define HAS_TFT_LVGL_UI_FSMC 1
910906
#endif
911907
#elif ENABLED(TFT_INTERFACE_SPI)
912908
#define HAS_SPI_TFT 1
913909
#if ENABLED(TFT_CLASSIC_UI)
914-
#define SPI_GRAPHICAL_TFT
910+
#define HAS_SPI_GRAPHICAL_TFT 1
915911
#elif ENABLED(TFT_LVGL_UI)
916-
#define TFT_LVGL_UI_SPI
912+
#define HAS_TFT_LVGL_UI_SPI 1
917913
#endif
918914
#endif
919915

Marlin/src/inc/Conditionals_adv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148

149149
#if ANY(MARLIN_BRICKOUT, MARLIN_INVADERS, MARLIN_SNAKE, MARLIN_MAZE)
150150
#define HAS_GAMES 1
151-
#if (1 < ENABLED(MARLIN_BRICKOUT) + ENABLED(MARLIN_INVADERS) + ENABLED(MARLIN_SNAKE) + ENABLED(MARLIN_MAZE))
151+
#if MANY(MARLIN_BRICKOUT, MARLIN_INVADERS, MARLIN_SNAKE, MARLIN_MAZE)
152152
#define HAS_GAME_MENU 1
153153
#endif
154154
#endif

Marlin/src/inc/Conditionals_post.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@
383383

384384
#endif
385385

386-
#if ANY(HAS_GRAPHICAL_TFT, LCD_USE_DMA_FSMC, FSMC_GRAPHICAL_TFT, SPI_GRAPHICAL_TFT) || !PIN_EXISTS(SD_DETECT)
386+
#if ANY(HAS_GRAPHICAL_TFT, LCD_USE_DMA_FSMC, HAS_FSMC_GRAPHICAL_TFT, HAS_SPI_GRAPHICAL_TFT) || !PIN_EXISTS(SD_DETECT)
387387
#define NO_LCD_REINIT 1 // Suppress LCD re-initialization
388388
#endif
389389

0 commit comments

Comments
 (0)