Browse Source

Multi-platform DWIN_CREALITY_LCD support (#20738)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
vanilla_fb_2.0.x
Johan van der Vyver 3 years ago
committed by Scott Lahteine
parent
commit
55709b9d2c
  1. 5
      Marlin/src/HAL/STM32F1/HAL.h
  2. 3
      Marlin/src/MarlinCore.cpp
  3. 3
      Marlin/src/inc/Conditionals_LCD.h
  4. 15
      Marlin/src/lcd/dwin/dwin_lcd.cpp
  5. 21
      Marlin/src/lcd/dwin/e3v2/dwin.cpp
  6. 3
      Marlin/src/lcd/dwin/e3v2/dwin.h
  7. 15
      Marlin/src/lcd/extui/lib/anycubic_i3mega/anycubic_i3mega_lcd.cpp
  8. 39
      Marlin/src/lcd/extui/lib/mks_ui/wifi_module.cpp
  9. 4
      Marlin/src/module/settings.cpp
  10. 15
      Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h

5
Marlin/src/HAL/STM32F1/HAL.h

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

3
Marlin/src/MarlinCore.cpp

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

3
Marlin/src/inc/Conditionals_LCD.h

@ -651,6 +651,9 @@
#if ENABLED(DWIN_CREALITY_LCD)
#define SERIAL_CATCHALL 0
#ifndef LCD_SERIAL_PORT
#define LCD_SERIAL_PORT 3 // Creality 4.x board
#endif
#endif
/**

15
Marlin/src/lcd/dwin/dwin_lcd.cpp

@ -82,20 +82,27 @@ inline void DWIN_String(size_t &i, const __FlashStringHelper * string) {
// Send the data in the buffer and the packet end
inline void DWIN_Send(size_t &i) {
++i;
LOOP_L_N(n, i) { MYSERIAL1.write(DWIN_SendBuf[n]); delayMicroseconds(1); }
LOOP_L_N(n, 4) { MYSERIAL1.write(DWIN_BufTail[n]); delayMicroseconds(1); }
LOOP_L_N(n, i) { LCD_SERIAL.write(DWIN_SendBuf[n]); delayMicroseconds(1); }
LOOP_L_N(n, 4) { LCD_SERIAL.write(DWIN_BufTail[n]); delayMicroseconds(1); }
}
/*-------------------------------------- System variable function --------------------------------------*/
// Handshake (1: Success, 0: Fail)
bool DWIN_Handshake(void) {
#ifndef LCD_BAUDRATE
#define LCD_BAUDRATE 115200
#endif
LCD_SERIAL.begin(LCD_BAUDRATE);
const millis_t serial_connect_timeout = millis() + 1000UL;
while (!LCD_SERIAL && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
size_t i = 0;
DWIN_Byte(i, 0x00);
DWIN_Send(i);
while (MYSERIAL1.available() > 0 && recnum < (signed)sizeof(databuf)) {
databuf[recnum] = MYSERIAL1.read();
while (LCD_SERIAL.available() > 0 && recnum < (signed)sizeof(databuf)) {
databuf[recnum] = LCD_SERIAL.read();
// ignore the invalid data
if (databuf[0] != FHONE) { // prevent the program from running.
if (recnum > 0) {

21
Marlin/src/lcd/dwin/e3v2/dwin.cpp

@ -497,14 +497,21 @@ inline void Draw_Back_First(const bool is_sel=true) {
if (is_sel) Draw_Menu_Cursor(0);
}
inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, auto &valref) {
if (encoder_diffState == ENCODER_DIFF_CW)
valref += EncoderRate.encoderMoveValue;
else if (encoder_diffState == ENCODER_DIFF_CCW)
valref -= EncoderRate.encoderMoveValue;
else if (encoder_diffState == ENCODER_DIFF_ENTER)
return true;
#define APPLY_ENCODER_F \
if (encoder_diffState == ENCODER_DIFF_CW) \
valref += EncoderRate.encoderMoveValue; \
else if (encoder_diffState == ENCODER_DIFF_CCW) \
valref -= EncoderRate.encoderMoveValue; \
else if (encoder_diffState == ENCODER_DIFF_ENTER) \
return true; \
return false;
inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, int16_t &valref) {
APPLY_ENCODER_F
}
inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, float &valref) {
APPLY_ENCODER_F
}
//

3
Marlin/src/lcd/dwin/e3v2/dwin.h

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

15
Marlin/src/lcd/extui/lib/anycubic_i3mega/anycubic_i3mega_lcd.cpp

@ -592,15 +592,12 @@ void AnycubicTFTClass::GetCommandFromTFT() {
} break;
case 5: { // A5 GET CURRENT COORDINATE
float xPostition = ExtUI::getAxisPosition_mm(ExtUI::X);
float yPostition = ExtUI::getAxisPosition_mm(ExtUI::Y);
float zPostition = ExtUI::getAxisPosition_mm(ExtUI::Z);
SEND_PGM("A5V X: ");
LCD_SERIAL.print(xPostition);
SEND_PGM(" Y: ");
LCD_SERIAL.print(yPostition);
SEND_PGM(" Z: ");
LCD_SERIAL.print(zPostition);
const float xPosition = ExtUI::getAxisPosition_mm(ExtUI::X),
yPosition = ExtUI::getAxisPosition_mm(ExtUI::Y),
zPosition = ExtUI::getAxisPosition_mm(ExtUI::Z);
SEND_PGM("A5V X: "); LCD_SERIAL.print(xPosition);
SEND_PGM( " Y: "); LCD_SERIAL.print(yPosition);
SEND_PGM( " Z: "); LCD_SERIAL.print(zPosition);
SENDLINE_PGM("");
} break;

39
Marlin/src/lcd/extui/lib/mks_ui/wifi_module.cpp

@ -282,27 +282,24 @@ void esp_port_begin(uint8_t interrupt) {
dma_init();
}
#endif
if (interrupt) {
#if ENABLED(MKS_WIFI_MODULE)
WIFISERIAL.end();
for (uint16_t i = 0; i < 65535; i++);
WIFISERIAL.begin(WIFI_BAUDRATE);
uint32_t serial_connect_timeout = millis() + 1000UL;
while (/*!WIFISERIAL && */PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
//for (uint8_t i=0;i<100;i++)WIFISERIAL.write(0x33);
#endif
}
else {
#if ENABLED(MKS_WIFI_MODULE)
WIFISERIAL.end();
for (uint16_t i = 0; i < 65535; i++);
WIFISERIAL.begin(WIFI_UPLOAD_BAUDRATE);
uint32_t serial_connect_timeout = millis() + 1000UL;
while (/*!WIFISERIAL && */PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
//for (uint16_t i=0;i<65535;i++);//WIFISERIAL.write(0x33);
#endif
dma_init();
}
#if ENABLED(MKS_WIFI_MODULE)
WIFISERIAL.end();
for (uint16_t i = 0; i < 65535; i++) { /*nada*/ }
WIFISERIAL.begin(interrupt ? WIFI_BAUDRATE : WIFI_UPLOAD_BAUDRATE);
const millis_t serial_connect_timeout = millis() + 1000UL;
while (/*!WIFISERIAL && */PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
if (interrupt) {
//for (uint8_t i=0;i<100;i++) WIFISERIAL.write(0x33);
}
else {
//for (uint16_t i=0;i<65535;i++); //WIFISERIAL.write(0x33);
}
#endif
if (!interrupt) dma_init();
}
#if ENABLED(MKS_WIFI_MODULE)

4
Marlin/src/module/settings.cpp

@ -50,10 +50,6 @@
#include "stepper.h"
#include "temperature.h"
#if ENABLED(DWIN_CREALITY_LCD)
#include "../lcd/dwin/e3v2/dwin.h"
#endif
#include "../lcd/marlinui.h"
#include "../libs/vector_3.h" // for matrix_3x3
#include "../gcode/gcode.h"

15
Marlin/src/pins/lpc1768/pins_BTT_SKR_V1_4.h

@ -258,7 +258,20 @@
* EXP2 EXP1
*/
#if HAS_WIRED_LCD && !HAS_BTT_EXP_MOT
#if ENABLED(DWIN_CREALITY_LCD)
// RET6 DWIN ENCODER LCD
#define BTN_ENC P1_20
#define BTN_EN1 P1_23
#define BTN_EN2 P1_22
#ifndef BEEPER_PIN
#define BEEPER_PIN P1_21
#undef SPEAKER
#endif
#elif HAS_WIRED_LCD && !HAS_BTT_EXP_MOT
#if ENABLED(ANET_FULL_GRAPHICS_LCD_ALT_WIRING)
#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."

Loading…
Cancel
Save