Skip to content

Commit 76d4a39

Browse files
ellenspthinkyhead
authored andcommitted
🩹 Fallback ID for MKS TS35 V2.0 (MarlinFirmware#22031)
1 parent c515bfb commit 76d4a39

File tree

6 files changed

+109
-55
lines changed

6 files changed

+109
-55
lines changed

Marlin/src/HAL/STM32/tft/tft_spi.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,20 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) {
125125
WRITE(TFT_CS_PIN, LOW);
126126
}
127127

128+
#ifdef TFT_DEFAULT_DRIVER
129+
#include "../../../lcd/tft_io/tft_ids.h"
130+
#endif
131+
128132
uint32_t TFT_SPI::GetID() {
129133
uint32_t id;
130134
id = ReadID(LCD_READ_ID);
131-
132-
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
135+
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) {
133136
id = ReadID(LCD_READ_ID4);
137+
#ifdef TFT_DEFAULT_DRIVER
138+
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
139+
id = TFT_DEFAULT_DRIVER;
140+
#endif
141+
}
134142
return id;
135143
}
136144

Marlin/src/HAL/STM32F1/tft/tft_spi.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,20 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) {
9090
TFT_CS_L;
9191
}
9292

93+
#ifdef TFT_DEFAULT_DRIVER
94+
#include "../../../lcd/tft_io/tft_ids.h"
95+
#endif
96+
9397
uint32_t TFT_SPI::GetID() {
9498
uint32_t id;
9599
id = ReadID(LCD_READ_ID);
96-
97-
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
100+
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) {
98101
id = ReadID(LCD_READ_ID4);
102+
#ifdef TFT_DEFAULT_DRIVER
103+
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
104+
id = TFT_DEFAULT_DRIVER;
105+
#endif
106+
}
99107
return id;
100108
}
101109

Marlin/src/inc/Conditionals_LCD.h

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,52 +1166,53 @@
11661166
* - TFT_COLOR
11671167
* - GRAPHICAL_TFT_UPSCALE
11681168
*/
1169-
#if ENABLED(MKS_TS35_V2_0) // Most common: ST7796
1169+
#if ENABLED(MKS_TS35_V2_0) // ST7796
1170+
#define TFT_DEFAULT_DRIVER ST7796
11701171
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY)
11711172
#define TFT_RES_480x320
11721173
#define TFT_INTERFACE_SPI
1173-
#elif ENABLED(MKS_ROBIN_TFT24) // Most common: ST7789
1174+
#elif ENABLED(ANET_ET5_TFT35) // ST7796
1175+
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY)
1176+
#define TFT_RES_480x320
1177+
#define TFT_INTERFACE_FSMC
1178+
#elif ENABLED(ANET_ET4_TFT28) // ST7789
11741179
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
11751180
#define TFT_RES_320x240
11761181
#define TFT_INTERFACE_FSMC
1177-
#elif ENABLED(MKS_ROBIN_TFT28) // Most common: ST7789
1182+
#elif ENABLED(MKS_ROBIN_TFT24) // ST7789
11781183
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
11791184
#define TFT_RES_320x240
11801185
#define TFT_INTERFACE_FSMC
1181-
#elif ENABLED(MKS_ROBIN_TFT32) // Most common: ST7789
1186+
#elif ENABLED(MKS_ROBIN_TFT28) // ST7789
11821187
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
11831188
#define TFT_RES_320x240
11841189
#define TFT_INTERFACE_FSMC
1185-
#elif ENABLED(MKS_ROBIN_TFT35) // Most common: ILI9488
1190+
#elif ENABLED(MKS_ROBIN_TFT32) // ST7789
1191+
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
1192+
#define TFT_RES_320x240
1193+
#define TFT_INTERFACE_FSMC
1194+
#elif ENABLED(MKS_ROBIN_TFT35) // ILI9488
11861195
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
11871196
#define TFT_RES_480x320
11881197
#define TFT_INTERFACE_FSMC
11891198
#elif ENABLED(MKS_ROBIN_TFT43)
1190-
#define TFT_DEFAULT_ORIENTATION 0
11911199
#define TFT_DRIVER SSD1963
1200+
#define TFT_DEFAULT_ORIENTATION 0
11921201
#define TFT_RES_480x272
11931202
#define TFT_INTERFACE_FSMC
11941203
#elif ENABLED(MKS_ROBIN_TFT_V1_1R) // ILI9328 or R61505
11951204
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
11961205
#define TFT_RES_320x240
11971206
#define TFT_INTERFACE_FSMC
11981207
#elif EITHER(TFT_TRONXY_X5SA, ANYCUBIC_TFT35) // ILI9488
1199-
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
12001208
#define TFT_DRIVER ILI9488
1209+
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
12011210
#define TFT_RES_480x320
12021211
#define TFT_INTERFACE_FSMC
12031212
#elif ENABLED(LONGER_LK_TFT28)
12041213
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
12051214
#define TFT_RES_320x240
12061215
#define TFT_INTERFACE_FSMC
1207-
#elif ENABLED(ANET_ET4_TFT28) // ST7789
1208-
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
1209-
#define TFT_RES_320x240
1210-
#define TFT_INTERFACE_FSMC
1211-
#elif ENABLED(ANET_ET5_TFT35) // ST7796
1212-
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY)
1213-
#define TFT_RES_480x320
1214-
#define TFT_INTERFACE_FSMC
12151216
#elif ENABLED(BIQU_BX_TFT70) // RGB
12161217
#define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY)
12171218
#define TFT_RES_1024x600

Marlin/src/lcd/tft_io/tft_ids.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Marlin 3D Printer Firmware
3+
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4+
*
5+
* Based on Sprinter and grbl.
6+
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
7+
*
8+
* This program is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU General Public License as published by
10+
* the Free Software Foundation, either version 3 of the License, or
11+
* (at your option) any later version.
12+
*
13+
* This program is distributed in the hope that it will be useful,
14+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16+
* GNU General Public License for more details.
17+
*
18+
* You should have received a copy of the GNU General Public License
19+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
20+
*
21+
*/
22+
#pragma once
23+
24+
#define LTDC_RGB 0xABAB
25+
#define SSD1963 0x5761
26+
#define ST7735 0x89F0
27+
#define ST7789 0x8552
28+
#define ST7796 0x7796
29+
#define R61505 0x1505
30+
#define ILI9328 0x9328
31+
#define ILI9341 0x9341
32+
#define ILI9488 0x9488
33+
#define ILI9488_ID1 0x8066 // Some ILI9488 have 0x8066 in the 0x04
34+
#define LERDGE_ST7796 0xFFFE
35+
#define AUTO 0xFFFF

Marlin/src/lcd/tft_io/tft_io.cpp

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,37 @@
2020
*
2121
*/
2222

23-
#include "tft_io.h"
23+
#include "../../inc/MarlinConfigPre.h"
2424

2525
#if HAS_SPI_TFT || HAS_FSMC_TFT || HAS_LTDC_TFT
2626

27-
#include "st7735.h"
28-
#include "st7789v.h"
29-
#include "st7796s.h"
30-
#include "r65105.h"
31-
#include "ili9328.h"
32-
#include "ili9341.h"
33-
#include "ili9488.h"
34-
#include "ssd1963.h"
27+
#include "tft_io.h"
28+
#include "tft_ids.h"
29+
30+
#if TFT_DRIVER == ST7735 || TFT_DRIVER == AUTO
31+
#include "st7735.h"
32+
#endif
33+
#if TFT_DRIVER == ST7789 || TFT_DRIVER == AUTO
34+
#include "st7789v.h"
35+
#endif
36+
#if TFT_DRIVER == ST7796 || TFT_DRIVER == AUTO
37+
#include "st7796s.h"
38+
#endif
39+
#if TFT_DRIVER == R61505 || TFT_DRIVER == AUTO
40+
#include "r65105.h"
41+
#endif
42+
#if TFT_DRIVER == ILI9328 || TFT_DRIVER == AUTO
43+
#include "ili9328.h"
44+
#endif
45+
#if TFT_DRIVER == ILI9341 || TFT_DRIVER == AUTO
46+
#include "ili9341.h"
47+
#endif
48+
#if TFT_DRIVER == ILI9488 || TFT_DRIVER == ILI9488_ID1 || TFT_DRIVER == AUTO
49+
#include "ili9488.h"
50+
#endif
51+
#if TFT_DRIVER == SSD1963 || TFT_DRIVER == AUTO
52+
#include "ssd1963.h"
53+
#endif
3554

3655
#define DEBUG_OUT ENABLED(DEBUG_GRAPHICAL_TFT)
3756
#include "../../core/debug_out.h"
@@ -236,4 +255,4 @@ void TFT_IO::write_esc_sequence(const uint16_t *Sequence) {
236255
io.DataTransferEnd();
237256
}
238257

239-
#endif // HAS_SPI_TFT || HAS_FSMC_TFT
258+
#endif // HAS_SPI_TFT || HAS_FSMC_TFT || HAS_LTDC_TFT

Marlin/src/lcd/tft_io/tft_io.h

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323

2424
#include "../../inc/MarlinConfig.h"
2525

26-
#if HAS_SPI_TFT || HAS_FSMC_TFT || HAS_LTDC_TFT
27-
2826
#if HAS_SPI_TFT
2927
#include HAL_PATH(../../HAL, tft/tft_spi.h)
3028
#elif HAS_FSMC_TFT
@@ -35,9 +33,9 @@
3533
#error "TFT IO only supports SPI, FSMC or LTDC interface"
3634
#endif
3735

38-
#define TFT_EXCHANGE_XY (1UL << 1)
39-
#define TFT_INVERT_X (1UL << 2)
40-
#define TFT_INVERT_Y (1UL << 3)
36+
#define TFT_EXCHANGE_XY _BV32(1)
37+
#define TFT_INVERT_X _BV32(2)
38+
#define TFT_INVERT_Y _BV32(3)
4139

4240
#define TFT_NO_ROTATION (0x00)
4341
#define TFT_ROTATE_90 (TFT_EXCHANGE_XY | TFT_INVERT_X)
@@ -65,8 +63,8 @@
6563
// TFT_ORIENTATION is the "sum" of TFT_DEFAULT_ORIENTATION plus user TFT_ROTATION
6664
#define TFT_ORIENTATION ((TFT_DEFAULT_ORIENTATION) ^ (TFT_ROTATION))
6765

68-
#define TFT_COLOR_RGB (1UL << 3)
69-
#define TFT_COLOR_BGR (1UL << 4)
66+
#define TFT_COLOR_RGB _BV32(3)
67+
#define TFT_COLOR_BGR _BV32(4)
7068

7169
// Each TFT Driver is responsible for its default color mode.
7270
// #ifndef TFT_COLOR
@@ -93,27 +91,14 @@
9391
#define TOUCH_ORIENTATION TOUCH_LANDSCAPE
9492
#endif
9593

96-
#define LTDC_RGB 0xABAB
97-
#define SSD1963 0x5761
98-
#define ST7735 0x89F0
99-
#define ST7789 0x8552
100-
#define ST7796 0x7796
101-
#define R61505 0x1505
102-
#define ILI9328 0x9328
103-
#define ILI9341 0x9341
104-
#define ILI9488 0x9488
105-
#define ILI9488_ID1 0x8066 //Some ILI9488 have 0x8066 in the 0x04
106-
#define LERDGE_ST7796 0xFFFE
107-
#define AUTO 0xFFFF
108-
10994
#ifndef TFT_DRIVER
11095
#define TFT_DRIVER AUTO
11196
#endif
11297

113-
#define ESC_REG(x) 0xFFFF, 0x00FF & (uint16_t)x
114-
#define ESC_DELAY(x) 0xFFFF, 0x8000 | (x & 0x7FFF)
115-
#define ESC_END 0xFFFF, 0x7FFF
116-
#define ESC_FFFF 0xFFFF, 0xFFFF
98+
#define ESC_REG(x) 0xFFFF, 0x00FF & (uint16_t)x
99+
#define ESC_DELAY(x) 0xFFFF, 0x8000 | (x & 0x7FFF)
100+
#define ESC_END 0xFFFF, 0x7FFF
101+
#define ESC_FFFF 0xFFFF, 0xFFFF
117102

118103
class TFT_IO {
119104
public:
@@ -143,5 +128,3 @@ class TFT_IO {
143128
protected:
144129
static uint32_t lcd_id;
145130
};
146-
147-
#endif // HAS_SPI_TFT || HAS_FSMC_TFT

0 commit comments

Comments
 (0)