Skip to content

Commit 4fa856b

Browse files
committed
TFT Presets, Generic options, Sanity checks
1 parent 87b07d6 commit 4fa856b

File tree

6 files changed

+194
-146
lines changed

6 files changed

+194
-146
lines changed

Marlin/Configuration.h

Lines changed: 78 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,22 +2205,86 @@
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+
2285+
// DOGM upscaling to fit
2286+
#define GRAPHICAL_TFT_UPSCALE 2 // :[ 2, 3 ]
2287+
#endif
22242288

22252289
/**
22262290
* 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: 35 additions & 39 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,69 +831,71 @@
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
843836
#define GRAPHICAL_TFT_UPSCALE 3
844837
#elif ENABLED(MKS_ROBIN_TFT24)
845838
// Most common: ST7789
846839
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
847-
#define TFT_WIDTH 320
848-
#define TFT_HEIGHT 240
840+
#define TFT_RES_320x240
849841
#define TFT_INTERFACE_FSMC
850842
#define GRAPHICAL_TFT_UPSCALE 2
851843
#elif ENABLED(MKS_ROBIN_TFT28)
852844
// Most common: ST7789
853845
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
854-
#define TFT_WIDTH 320
855-
#define TFT_HEIGHT 240
846+
#define TFT_RES_320x240
856847
#define TFT_INTERFACE_FSMC
857848
#define GRAPHICAL_TFT_UPSCALE 2
858849
#elif ENABLED(MKS_ROBIN_TFT32)
859850
// Most common: ST7789
860851
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
861-
#define TFT_WIDTH 320
862-
#define TFT_HEIGHT 240
852+
#define TFT_RES_320x240
863853
#define TFT_INTERFACE_FSMC
864854
#define GRAPHICAL_TFT_UPSCALE 2
865855
#elif ENABLED(MKS_ROBIN_TFT35)
866856
// Most common: ILI9488
867857
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
868-
#define TFT_WIDTH 480
869-
#define TFT_HEIGHT 320
858+
#define TFT_RES_480x320
870859
#define TFT_INTERFACE_FSMC
871860
#define GRAPHICAL_TFT_UPSCALE 3
872861
#elif ENABLED(MKS_ROBIN_TFT43)
873862
#define TFT_DEFAULT_ORIENTATION 0
874863
#define TFT_DRIVER SSD1963
875-
#define TFT_WIDTH 480
876-
#define TFT_HEIGHT 272
864+
#define TFT_RES_480x272
877865
#define TFT_INTERFACE_FSMC
878866
#define GRAPHICAL_TFT_UPSCALE 2
879867
#elif ENABLED(MKS_ROBIN_TFT_V1_1R)
880868
// ILI9328 or R61505
881869
#define TFT_DEFAULT_ORIENTATION (TFT_INVERT_X | TFT_INVERT_Y | TFT_EXCHANGE_XY)
882-
#define TFT_WIDTH 320
883-
#define TFT_HEIGHT 240
870+
#define TFT_RES_320x240
884871
#define TFT_INTERFACE_FSMC
885872
#define GRAPHICAL_TFT_UPSCALE 2
886873
#elif EITHER(TFT_TRONXY_X5SA, ANYCUBIC_TFT35)
887874
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
888875
#define TFT_DRIVER ILI9488
889-
#define TFT_WIDTH 480
890-
#define TFT_HEIGHT 320
876+
#define TFT_RES_480x320
891877
#define TFT_INTERFACE_FSMC
892878
#define GRAPHICAL_TFT_UPSCALE 3
893879
#elif ENABLED(LONGER_LK_TFT28)
894880
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
895-
#define TFT_WIDTH 320
896-
#define TFT_HEIGHT 240
881+
#define TFT_RES_320x240
897882
#define TFT_INTERFACE_FSMC
898883
#define GRAPHICAL_TFT_UPSCALE 2
899884
#elif ENABLED(TFT_GENERIC)
900885
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
901886
#endif
902887

888+
#if ENABLED(TFT_RES_320x240)
889+
#define TFT_WIDTH 320
890+
#define TFT_HEIGHT 240
891+
#elif ENABLED(TFT_RES_480x272)
892+
#define TFT_WIDTH 480
893+
#define TFT_HEIGHT 272
894+
#elif ENABLED(TFT_RES_480x320)
895+
#define TFT_WIDTH 480
896+
#define TFT_HEIGHT 320
897+
#endif
898+
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

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

0 commit comments

Comments
 (0)