Browse Source

🩹 Fallback ID for MKS TS35 V2.0 (#22031)

ellensp 4 years ago
parent
commit
3c522fff31
No account linked to committer's email address

+ 10
- 2
Marlin/src/HAL/STM32/tft/tft_spi.cpp View File

@@ -125,12 +125,20 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) {
125 125
   WRITE(TFT_CS_PIN, LOW);
126 126
 }
127 127
 
128
+#ifdef TFT_DEFAULT_DRIVER
129
+  #include "../../../lcd/tft_io/tft_ids.h"
130
+#endif
131
+
128 132
 uint32_t TFT_SPI::GetID() {
129 133
   uint32_t id;
130 134
   id = ReadID(LCD_READ_ID);
131
-
132
-  if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
135
+  if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) {
133 136
     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
+   }
134 142
   return id;
135 143
 }
136 144
 

+ 10
- 2
Marlin/src/HAL/STM32F1/tft/tft_spi.cpp View File

@@ -90,12 +90,20 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) {
90 90
   TFT_CS_L;
91 91
 }
92 92
 
93
+#ifdef TFT_DEFAULT_DRIVER
94
+  #include "../../../lcd/tft_io/tft_ids.h"
95
+#endif
96
+
93 97
 uint32_t TFT_SPI::GetID() {
94 98
   uint32_t id;
95 99
   id = ReadID(LCD_READ_ID);
96
-
97
-  if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
100
+  if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) {
98 101
     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
+   }
99 107
   return id;
100 108
 }
101 109
 

+ 16
- 15
Marlin/src/inc/Conditionals_LCD.h View File

@@ -1166,29 +1166,38 @@
1166 1166
  *  - TFT_COLOR
1167 1167
  *  - GRAPHICAL_TFT_UPSCALE
1168 1168
  */
1169
-#if ENABLED(MKS_TS35_V2_0)          // Most common: ST7796
1169
+#if ENABLED(MKS_TS35_V2_0)          // ST7796
1170
+  #define TFT_DEFAULT_DRIVER ST7796
1170 1171
   #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY)
1171 1172
   #define TFT_RES_480x320
1172 1173
   #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
1174 1179
   #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
1175 1180
   #define TFT_RES_320x240
1176 1181
   #define TFT_INTERFACE_FSMC
1177
-#elif ENABLED(MKS_ROBIN_TFT28)      // Most common: ST7789
1182
+#elif ENABLED(MKS_ROBIN_TFT24)      // ST7789
1178 1183
   #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
1179 1184
   #define TFT_RES_320x240
1180 1185
   #define TFT_INTERFACE_FSMC
1181
-#elif ENABLED(MKS_ROBIN_TFT32)      // Most common: ST7789
1186
+#elif ENABLED(MKS_ROBIN_TFT28)      // ST7789
1182 1187
   #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_Y)
1183 1188
   #define TFT_RES_320x240
1184 1189
   #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
1186 1195
   #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
1187 1196
   #define TFT_RES_480x320
1188 1197
   #define TFT_INTERFACE_FSMC
1189 1198
 #elif ENABLED(MKS_ROBIN_TFT43)
1190
-  #define TFT_DEFAULT_ORIENTATION 0
1191 1199
   #define TFT_DRIVER SSD1963
1200
+  #define TFT_DEFAULT_ORIENTATION 0
1192 1201
   #define TFT_RES_480x272
1193 1202
   #define TFT_INTERFACE_FSMC
1194 1203
 #elif ENABLED(MKS_ROBIN_TFT_V1_1R)  // ILI9328 or R61505
@@ -1196,22 +1205,14 @@
1196 1205
   #define TFT_RES_320x240
1197 1206
   #define TFT_INTERFACE_FSMC
1198 1207
 #elif EITHER(TFT_TRONXY_X5SA, ANYCUBIC_TFT35) // ILI9488
1199
-  #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
1200 1208
   #define TFT_DRIVER ILI9488
1209
+  #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
1201 1210
   #define TFT_RES_480x320
1202 1211
   #define TFT_INTERFACE_FSMC
1203 1212
 #elif ENABLED(LONGER_LK_TFT28)
1204 1213
   #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY | TFT_INVERT_X | TFT_INVERT_Y)
1205 1214
   #define TFT_RES_320x240
1206 1215
   #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
1215 1216
 #elif ENABLED(BIQU_BX_TFT70)        // RGB
1216 1217
   #define TFT_DEFAULT_ORIENTATION (TFT_EXCHANGE_XY)
1217 1218
   #define TFT_RES_1024x600

+ 35
- 0
Marlin/src/lcd/tft_io/tft_ids.h View File

@@ -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

+ 29
- 10
Marlin/src/lcd/tft_io/tft_io.cpp View File

@@ -20,18 +20,37 @@
20 20
  *
21 21
  */
22 22
 
23
-#include "tft_io.h"
23
+#include "../../inc/MarlinConfigPre.h"
24 24
 
25 25
 #if HAS_SPI_TFT || HAS_FSMC_TFT || HAS_LTDC_TFT
26 26
 
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
35 54
 
36 55
 #define DEBUG_OUT ENABLED(DEBUG_GRAPHICAL_TFT)
37 56
 #include "../../core/debug_out.h"
@@ -236,4 +255,4 @@ void TFT_IO::write_esc_sequence(const uint16_t *Sequence) {
236 255
   io.DataTransferEnd();
237 256
 }
238 257
 
239
-#endif // HAS_SPI_TFT || HAS_FSMC_TFT
258
+#endif // HAS_SPI_TFT || HAS_FSMC_TFT || HAS_LTDC_TFT

+ 9
- 26
Marlin/src/lcd/tft_io/tft_io.h View File

@@ -23,8 +23,6 @@
23 23
 
24 24
 #include "../../inc/MarlinConfig.h"
25 25
 
26
-#if HAS_SPI_TFT || HAS_FSMC_TFT || HAS_LTDC_TFT
27
-
28 26
 #if HAS_SPI_TFT
29 27
   #include HAL_PATH(../../HAL, tft/tft_spi.h)
30 28
 #elif HAS_FSMC_TFT
@@ -35,9 +33,9 @@
35 33
   #error "TFT IO only supports SPI, FSMC or LTDC interface"
36 34
 #endif
37 35
 
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)
41 39
 
42 40
 #define TFT_NO_ROTATION           (0x00)
43 41
 #define TFT_ROTATE_90             (TFT_EXCHANGE_XY | TFT_INVERT_X)
@@ -65,8 +63,8 @@
65 63
 // TFT_ORIENTATION is the "sum" of TFT_DEFAULT_ORIENTATION plus user TFT_ROTATION
66 64
 #define TFT_ORIENTATION ((TFT_DEFAULT_ORIENTATION) ^ (TFT_ROTATION))
67 65
 
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)
70 68
 
71 69
 // Each TFT Driver is responsible for its default color mode.
72 70
 // #ifndef TFT_COLOR
@@ -93,27 +91,14 @@
93 91
   #define TOUCH_ORIENTATION     TOUCH_LANDSCAPE
94 92
 #endif
95 93
 
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
-
109 94
 #ifndef TFT_DRIVER
110 95
   #define TFT_DRIVER    AUTO
111 96
 #endif
112 97
 
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
117 102
 
118 103
 class TFT_IO {
119 104
 public:
@@ -143,5 +128,3 @@ public:
143 128
 protected:
144 129
   static uint32_t lcd_id;
145 130
 };
146
-
147
-#endif // HAS_SPI_TFT || HAS_FSMC_TFT

Loading…
Cancel
Save