ソースを参照

Multi-platform DWIN_CREALITY_LCD support (#20738)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Johan van der Vyver 3年前
コミット
7f3dcb3e8a
コミッターのメールアドレスに関連付けられたアカウントが存在しません

+ 3
- 2
Marlin/src/HAL/STM32F1/HAL.h ファイルの表示

@@ -109,8 +109,9 @@
109 109
   #else
110 110
     #error "LCD_SERIAL_PORT must be -1 or from 1 to 3. Please update your configuration."
111 111
   #endif
112
-
113
-  #define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite()
112
+  #if HAS_DGUS_LCD
113
+    #define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite()
114
+  #endif
114 115
 #endif
115 116
 
116 117
 // Set interrupt grouping for this MCU

+ 2
- 1
Marlin/src/MarlinCore.cpp ファイルの表示

@@ -995,8 +995,9 @@ void setup() {
995 995
   #endif
996 996
 
997 997
   MYSERIAL0.begin(BAUDRATE);
998
-  uint32_t serial_connect_timeout = millis() + 1000UL;
998
+  millis_t serial_connect_timeout = millis() + 1000UL;
999 999
   while (!MYSERIAL0 && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
1000
+
1000 1001
   #if HAS_MULTI_SERIAL && !HAS_ETHERNET
1001 1002
     MYSERIAL1.begin(BAUDRATE);
1002 1003
     serial_connect_timeout = millis() + 1000UL;

+ 3
- 0
Marlin/src/inc/Conditionals_LCD.h ファイルの表示

@@ -651,6 +651,9 @@
651 651
 
652 652
 #if ENABLED(DWIN_CREALITY_LCD)
653 653
   #define SERIAL_CATCHALL 0
654
+  #ifndef LCD_SERIAL_PORT
655
+    #define LCD_SERIAL_PORT 3 // Creality 4.x board
656
+  #endif
654 657
 #endif
655 658
 
656 659
 /**

+ 11
- 4
Marlin/src/lcd/dwin/dwin_lcd.cpp ファイルの表示

@@ -82,20 +82,27 @@ inline void DWIN_String(size_t &i, const __FlashStringHelper * string) {
82 82
 // Send the data in the buffer and the packet end
83 83
 inline void DWIN_Send(size_t &i) {
84 84
   ++i;
85
-  LOOP_L_N(n, i) { MYSERIAL1.write(DWIN_SendBuf[n]); delayMicroseconds(1); }
86
-  LOOP_L_N(n, 4) { MYSERIAL1.write(DWIN_BufTail[n]); delayMicroseconds(1); }
85
+  LOOP_L_N(n, i) { LCD_SERIAL.write(DWIN_SendBuf[n]); delayMicroseconds(1); }
86
+  LOOP_L_N(n, 4) { LCD_SERIAL.write(DWIN_BufTail[n]); delayMicroseconds(1); }
87 87
 }
88 88
 
89 89
 /*-------------------------------------- System variable function --------------------------------------*/
90 90
 
91 91
 // Handshake (1: Success, 0: Fail)
92 92
 bool DWIN_Handshake(void) {
93
+  #ifndef LCD_BAUDRATE
94
+    #define LCD_BAUDRATE 115200
95
+  #endif
96
+  LCD_SERIAL.begin(LCD_BAUDRATE);
97
+  const millis_t serial_connect_timeout = millis() + 1000UL;
98
+  while (!LCD_SERIAL && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
99
+
93 100
   size_t i = 0;
94 101
   DWIN_Byte(i, 0x00);
95 102
   DWIN_Send(i);
96 103
 
97
-  while (MYSERIAL1.available() > 0 && recnum < (signed)sizeof(databuf)) {
98
-    databuf[recnum] = MYSERIAL1.read();
104
+  while (LCD_SERIAL.available() > 0 && recnum < (signed)sizeof(databuf)) {
105
+    databuf[recnum] = LCD_SERIAL.read();
99 106
     // ignore the invalid data
100 107
     if (databuf[0] != FHONE) { // prevent the program from running.
101 108
       if (recnum > 0) {

+ 14
- 7
Marlin/src/lcd/dwin/e3v2/dwin.cpp ファイルの表示

@@ -497,14 +497,21 @@ inline void Draw_Back_First(const bool is_sel=true) {
497 497
   if (is_sel) Draw_Menu_Cursor(0);
498 498
 }
499 499
 
500
-inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, auto &valref) {
501
-  if (encoder_diffState == ENCODER_DIFF_CW)
502
-    valref += EncoderRate.encoderMoveValue;
503
-  else if (encoder_diffState == ENCODER_DIFF_CCW)
504
-    valref -= EncoderRate.encoderMoveValue;
505
-  else if (encoder_diffState == ENCODER_DIFF_ENTER)
506
-    return true;
500
+#define APPLY_ENCODER_F \
501
+  if (encoder_diffState == ENCODER_DIFF_CW)          \
502
+    valref += EncoderRate.encoderMoveValue;          \
503
+  else if (encoder_diffState == ENCODER_DIFF_CCW)    \
504
+    valref -= EncoderRate.encoderMoveValue;          \
505
+  else if (encoder_diffState == ENCODER_DIFF_ENTER)  \
506
+    return true;                                     \
507 507
   return false;
508
+
509
+inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, int16_t &valref) {
510
+  APPLY_ENCODER_F
511
+}
512
+
513
+inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, float &valref) {
514
+  APPLY_ENCODER_F
508 515
 }
509 516
 
510 517
 //

+ 2
- 1
Marlin/src/lcd/dwin/e3v2/dwin.h ファイルの表示

@@ -249,7 +249,8 @@ typedef struct {
249 249
     float Move_E_scale    = 0;
250 250
   #endif
251 251
   float offset_value      = 0;
252
-  char show_mode          = 0;    // -1: Temperature control    0: Printing temperature
252
+  TERN_(__STM32F1__, signed)
253
+  char show_mode          = 0; // -1: Temperature control    0: Printing temperature
253 254
 } HMI_value_t;
254 255
 
255 256
 #define DWIN_CHINESE 123

+ 6
- 9
Marlin/src/lcd/extui/lib/anycubic_i3mega/anycubic_i3mega_lcd.cpp ファイルの表示

@@ -592,15 +592,12 @@ void AnycubicTFTClass::GetCommandFromTFT() {
592 592
           } break;
593 593
 
594 594
           case 5: { // A5 GET CURRENT COORDINATE
595
-            float xPostition = ExtUI::getAxisPosition_mm(ExtUI::X);
596
-            float yPostition = ExtUI::getAxisPosition_mm(ExtUI::Y);
597
-            float zPostition = ExtUI::getAxisPosition_mm(ExtUI::Z);
598
-            SEND_PGM("A5V X: ");
599
-            LCD_SERIAL.print(xPostition);
600
-            SEND_PGM(" Y: ");
601
-            LCD_SERIAL.print(yPostition);
602
-            SEND_PGM(" Z: ");
603
-            LCD_SERIAL.print(zPostition);
595
+            const float xPosition = ExtUI::getAxisPosition_mm(ExtUI::X),
596
+                        yPosition = ExtUI::getAxisPosition_mm(ExtUI::Y),
597
+                        zPosition = ExtUI::getAxisPosition_mm(ExtUI::Z);
598
+            SEND_PGM("A5V X: "); LCD_SERIAL.print(xPosition);
599
+            SEND_PGM(   " Y: "); LCD_SERIAL.print(yPosition);
600
+            SEND_PGM(   " Z: "); LCD_SERIAL.print(zPosition);
604 601
             SENDLINE_PGM("");
605 602
           } break;
606 603
 

+ 18
- 21
Marlin/src/lcd/extui/lib/mks_ui/wifi_module.cpp ファイルの表示

@@ -282,27 +282,24 @@ void esp_port_begin(uint8_t interrupt) {
282 282
     dma_init();
283 283
   }
284 284
   #endif
285
-  if (interrupt) {
286
-    #if ENABLED(MKS_WIFI_MODULE)
287
-      WIFISERIAL.end();
288
-      for (uint16_t i = 0; i < 65535; i++);
289
-      WIFISERIAL.begin(WIFI_BAUDRATE);
290
-      uint32_t serial_connect_timeout = millis() + 1000UL;
291
-        while (/*!WIFISERIAL && */PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
292
-      //for (uint8_t i=0;i<100;i++)WIFISERIAL.write(0x33);
293
-    #endif
294
-  }
295
-  else {
296
-    #if ENABLED(MKS_WIFI_MODULE)
297
-      WIFISERIAL.end();
298
-      for (uint16_t i = 0; i < 65535; i++);
299
-      WIFISERIAL.begin(WIFI_UPLOAD_BAUDRATE);
300
-      uint32_t serial_connect_timeout = millis() + 1000UL;
301
-        while (/*!WIFISERIAL && */PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
302
-      //for (uint16_t i=0;i<65535;i++);//WIFISERIAL.write(0x33);
303
-    #endif
304
-    dma_init();
305
-  }
285
+
286
+  #if ENABLED(MKS_WIFI_MODULE)
287
+    WIFISERIAL.end();
288
+    for (uint16_t i = 0; i < 65535; i++) { /*nada*/ }
289
+    WIFISERIAL.begin(interrupt ? WIFI_BAUDRATE : WIFI_UPLOAD_BAUDRATE);
290
+
291
+    const millis_t serial_connect_timeout = millis() + 1000UL;
292
+    while (/*!WIFISERIAL && */PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
293
+
294
+    if (interrupt) {
295
+      //for (uint8_t i=0;i<100;i++) WIFISERIAL.write(0x33);
296
+    }
297
+    else {
298
+      //for (uint16_t i=0;i<65535;i++); //WIFISERIAL.write(0x33);
299
+    }
300
+  #endif
301
+
302
+  if (!interrupt) dma_init();
306 303
 }
307 304
 
308 305
 #if ENABLED(MKS_WIFI_MODULE)

+ 0
- 4
Marlin/src/module/settings.cpp ファイルの表示

@@ -50,10 +50,6 @@
50 50
 #include "stepper.h"
51 51
 #include "temperature.h"
52 52
 
53
-#if ENABLED(DWIN_CREALITY_LCD)
54
-  #include "../lcd/dwin/e3v2/dwin.h"
55
-#endif
56
-
57 53
 #include "../lcd/marlinui.h"
58 54
 #include "../libs/vector_3.h"   // for matrix_3x3
59 55
 #include "../gcode/gcode.h"

+ 14
- 1
Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h ファイルの表示

@@ -258,7 +258,20 @@
258 258
  *               EXP2                                              EXP1
259 259
  */
260 260
 
261
-#if HAS_WIRED_LCD && !HAS_BTT_EXP_MOT
261
+#if ENABLED(DWIN_CREALITY_LCD)
262
+
263
+  // RET6 DWIN ENCODER LCD
264
+  #define BTN_ENC                           P1_20
265
+  #define BTN_EN1                           P1_23
266
+  #define BTN_EN2                           P1_22
267
+
268
+  #ifndef BEEPER_PIN
269
+    #define BEEPER_PIN                      P1_21
270
+    #undef SPEAKER
271
+  #endif
272
+
273
+#elif HAS_WIRED_LCD && !HAS_BTT_EXP_MOT
274
+
262 275
   #if ENABLED(ANET_FULL_GRAPHICS_LCD_ALT_WIRING)
263 276
     #error "CAUTION! ANET_FULL_GRAPHICS_LCD_ALT_WIRING requires wiring modifications. See 'pins_BTT_SKR_V1_4.h' for details. Comment out this line to continue."
264 277
 

読み込み中…
キャンセル
保存