Skip to content

Commit 9b473cd

Browse files
makerbase-mksvgadreau
authored andcommitted
Add MKS Robin E3P, improve LVGL UI (MarlinFirmware#19442)
1 parent 6ab933c commit 9b473cd

File tree

94 files changed

+12673
-2970
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+12673
-2970
lines changed

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

+2
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ uint32_t TFT_FSMC::GetID() {
201201
id = ReadID(LCD_READ_ID);
202202
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
203203
id = ReadID(LCD_READ_ID4);
204+
if ((id & 0xFF00) == 0 && (id & 0xFF) != 0)
205+
id = ReadID(LCD_READ_ID4);
204206
return id;
205207
}
206208

Marlin/src/MarlinCore.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -796,6 +796,10 @@ void kill(PGM_P const lcd_error/*=nullptr*/, PGM_P const lcd_component/*=nullptr
796796
UNUSED(lcd_component);
797797
#endif
798798

799+
#if HAS_TFT_LVGL_UI
800+
lv_draw_error_message(lcd_error);
801+
#endif
802+
799803
#ifdef ACTION_ON_KILL
800804
host_action_kill();
801805
#endif
@@ -920,6 +924,13 @@ void setup() {
920924
SERIAL_ECHO_MSG("start");
921925
#endif
922926

927+
#if BOTH(HAS_TFT_LVGL_UI, USE_WIFI_FUNCTION)
928+
mks_esp_wifi_init();
929+
WIFISERIAL.begin(WIFI_BAUDRATE);
930+
serial_connect_timeout = millis() + 1000UL;
931+
while (/*!WIFISERIAL && */PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
932+
#endif
933+
923934
SETUP_RUN(HAL_init());
924935

925936
#if HAS_L64XX

Marlin/src/core/boards.h

+37-36
Original file line numberDiff line numberDiff line change
@@ -282,42 +282,43 @@
282282
// STM32 ARM Cortex-M3
283283
//
284284

285-
#define BOARD_STM32F103RE 4000 // STM32F103RE Libmaple-based STM32F1 controller
286-
#define BOARD_MALYAN_M200 4001 // STM32C8T6 Libmaple-based STM32F1 controller
287-
#define BOARD_MALYAN_M200_V2 4002 // STM32F070CB STM32F0 controller
288-
#define BOARD_STM3R_MINI 4003 // STM32F103RE Libmaple-based STM32F1 controller
289-
#define BOARD_GTM32_PRO_VB 4004 // STM32F103VET6 controller
290-
#define BOARD_MORPHEUS 4005 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller
291-
#define BOARD_CHITU3D 4006 // Chitu3D (STM32F103RET6)
292-
#define BOARD_MKS_ROBIN 4007 // MKS Robin (STM32F103ZET6)
293-
#define BOARD_MKS_ROBIN_MINI 4008 // MKS Robin Mini (STM32F103VET6)
294-
#define BOARD_MKS_ROBIN_NANO 4009 // MKS Robin Nano (STM32F103VET6)
295-
#define BOARD_MKS_ROBIN_NANO_V2 4010 // MKS Robin Nano V2 (STM32F103VET6)
296-
#define BOARD_MKS_ROBIN_LITE 4011 // MKS Robin Lite/Lite2 (STM32F103RCT6)
297-
#define BOARD_MKS_ROBIN_LITE3 4012 // MKS Robin Lite3 (STM32F103RCT6)
298-
#define BOARD_MKS_ROBIN_PRO 4013 // MKS Robin Pro (STM32F103ZET6)
299-
#define BOARD_BTT_SKR_MINI_V1_1 4014 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
300-
#define BOARD_BTT_SKR_MINI_E3_V1_0 4015 // BigTreeTech SKR Mini E3 (STM32F103RC)
301-
#define BOARD_BTT_SKR_MINI_E3_V1_2 4016 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
302-
#define BOARD_BTT_SKR_MINI_E3_V2_0 4017 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
303-
#define BOARD_BTT_SKR_E3_DIP 4018 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
304-
#define BOARD_JGAURORA_A5S_A1 4019 // JGAurora A5S A1 (STM32F103ZET6)
305-
#define BOARD_FYSETC_AIO_II 4020 // FYSETC AIO_II
306-
#define BOARD_FYSETC_CHEETAH 4021 // FYSETC Cheetah
307-
#define BOARD_FYSETC_CHEETAH_V12 4022 // FYSETC Cheetah V1.2
308-
#define BOARD_LONGER3D_LK 4023 // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
309-
#define BOARD_GTM32_MINI 4024 // STM32F103VET6 controller
310-
#define BOARD_GTM32_MINI_A30 4025 // STM32F103VET6 controller
311-
#define BOARD_GTM32_REV_B 4026 // STM32F103VET6 controller
312-
#define BOARD_MKS_ROBIN_E3D 4027 // MKS Robin E3D (STM32F103RCT6)
313-
#define BOARD_MKS_ROBIN_E3 4028 // MKS Robin E3 (STM32F103RCT6)
314-
#define BOARD_MALYAN_M300 4029 // STM32F070-based delta
315-
#define BOARD_CCROBOT_MEEB_3DP 4030 // ccrobot-online.com MEEB_3DP (STM32F103RC)
316-
#define BOARD_CHITU3D_V5 4031 // Chitu3D TronXY X5SA V5 Board
317-
#define BOARD_CHITU3D_V6 4032 // Chitu3D TronXY X5SA V5 Board
318-
#define BOARD_CREALITY_V4 4033 // Creality v4.x (STM32F103RE)
319-
#define BOARD_CREALITY_V427 4034 // Creality v4.2.7 (STM32F103RE)
320-
#define BOARD_TRIGORILLA_PRO 4035 // Trigorilla Pro (STM32F103ZET6)
285+
#define BOARD_MALYAN_M200_V2 4000 // STM32F070CB STM32F0 controller
286+
#define BOARD_MALYAN_M300 4001 // STM32F070-based delta
287+
#define BOARD_STM32F103RE 4002 // STM32F103RE Libmaple-based STM32F1 controller
288+
#define BOARD_MALYAN_M200 4003 // STM32C8T6 Libmaple-based STM32F1 controller
289+
#define BOARD_STM3R_MINI 4004 // STM32F103RE Libmaple-based STM32F1 controller
290+
#define BOARD_GTM32_PRO_VB 4005 // STM32F103VET6 controller
291+
#define BOARD_GTM32_MINI 4006 // STM32F103VET6 controller
292+
#define BOARD_GTM32_MINI_A30 4007 // STM32F103VET6 controller
293+
#define BOARD_GTM32_REV_B 4008 // STM32F103VET6 controller
294+
#define BOARD_MORPHEUS 4009 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller
295+
#define BOARD_CHITU3D 4010 // Chitu3D (STM32F103RET6)
296+
#define BOARD_MKS_ROBIN 4011 // MKS Robin (STM32F103ZET6)
297+
#define BOARD_MKS_ROBIN_MINI 4012 // MKS Robin Mini (STM32F103VET6)
298+
#define BOARD_MKS_ROBIN_NANO 4013 // MKS Robin Nano (STM32F103VET6)
299+
#define BOARD_MKS_ROBIN_NANO_V2 4014 // MKS Robin Nano V2 (STM32F103VET6)
300+
#define BOARD_MKS_ROBIN_LITE 4015 // MKS Robin Lite/Lite2 (STM32F103RCT6)
301+
#define BOARD_MKS_ROBIN_LITE3 4016 // MKS Robin Lite3 (STM32F103RCT6)
302+
#define BOARD_MKS_ROBIN_PRO 4017 // MKS Robin Pro (STM32F103ZET6)
303+
#define BOARD_MKS_ROBIN_E3 4018 // MKS Robin E3 (STM32F103RCT6)
304+
#define BOARD_MKS_ROBIN_E3D 4019 // MKS Robin E3D (STM32F103RCT6)
305+
#define BOARD_MKS_ROBIN_E3P 4020 // MKS Robin E3p (STM32F103VET6)
306+
#define BOARD_BTT_SKR_MINI_V1_1 4021 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
307+
#define BOARD_BTT_SKR_MINI_E3_V1_0 4022 // BigTreeTech SKR Mini E3 (STM32F103RC)
308+
#define BOARD_BTT_SKR_MINI_E3_V1_2 4023 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
309+
#define BOARD_BTT_SKR_MINI_E3_V2_0 4024 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
310+
#define BOARD_BTT_SKR_E3_DIP 4025 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
311+
#define BOARD_JGAURORA_A5S_A1 4026 // JGAurora A5S A1 (STM32F103ZET6)
312+
#define BOARD_FYSETC_AIO_II 4027 // FYSETC AIO_II
313+
#define BOARD_FYSETC_CHEETAH 4028 // FYSETC Cheetah
314+
#define BOARD_FYSETC_CHEETAH_V12 4029 // FYSETC Cheetah V1.2
315+
#define BOARD_LONGER3D_LK 4030 // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
316+
#define BOARD_CCROBOT_MEEB_3DP 4031 // ccrobot-online.com MEEB_3DP (STM32F103RC)
317+
#define BOARD_CHITU3D_V5 4032 // Chitu3D TronXY X5SA V5 Board
318+
#define BOARD_CHITU3D_V6 4033 // Chitu3D TronXY X5SA V5 Board
319+
#define BOARD_CREALITY_V4 4034 // Creality v4.x (STM32F103RE)
320+
#define BOARD_CREALITY_V427 4035 // Creality v4.2.7 (STM32F103RE)
321+
#define BOARD_TRIGORILLA_PRO 4036 // Trigorilla Pro (STM32F103ZET6)
321322

322323
//
323324
// ARM Cortex-M4F

Marlin/src/lcd/extui/lib/mks_ui/SPIFlashStorage.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
#include "../../../../inc/MarlinConfig.h"
2828
#include "SPIFlashStorage.h"
2929

30+
extern W25QXXFlash W25QXX;
31+
3032
uint8_t SPIFlashStorage::m_pageData[SPI_FLASH_PageSize];
3133
uint32_t SPIFlashStorage::m_currentPage;
3234
uint16_t SPIFlashStorage::m_pageDataUsed;

Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
#include "SPI_TFT.h"
2828
#include "pic_manager.h"
29+
#include "tft_lvgl_configuration.h"
2930

3031
#include "../../../../inc/MarlinConfig.h"
3132

@@ -74,6 +75,7 @@ void TFT::SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height) {
7475
}
7576

7677
void TFT::LCD_init() {
78+
TFT_BLK_L;
7779
TFT_RST_H;
7880
delay(150);
7981
TFT_RST_L;
@@ -92,8 +94,7 @@ void TFT::LCD_init() {
9294
LCD_WR_DATA(0x96);
9395

9496
LCD_WR_REG(0x36);
95-
LCD_WR_DATA(0x28);
96-
97+
LCD_WR_DATA(0x28 + TERN0(GRAPHICAL_TFT_ROTATE_180, 0x80));
9798
LCD_WR_REG(0x3A);
9899
LCD_WR_DATA(0x55);
99100

Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp

+20-21
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,9 @@
3333
#include "../../../../MarlinCore.h"
3434
#include "../../../../module/temperature.h"
3535

36+
extern lv_group_t * g;
3637
static lv_obj_t * scr;
37-
static lv_obj_t * fw_type, *board, *fw_version;
38+
static lv_obj_t * fw_type, *board; //*fw_version;
3839

3940
#define ID_A_RETURN 1
4041

@@ -73,17 +74,18 @@ void lv_draw_about(void) {
7374

7475
lv_refr_now(lv_refr_get_disp_refreshing());
7576

76-
LV_IMG_DECLARE(bmp_pic);
77-
7877
// Create an Image button
7978
buttonBack = lv_imgbtn_create(scr, NULL);
8079

8180
#if 1
82-
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_A_RETURN, "bmp_return.bin", 0);
83-
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
84-
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
81+
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_A_RETURN, NULL, 0);
82+
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, "F:/bmp_return.bin");
83+
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, "F:/bmp_return.bin");
8584
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
8685
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
86+
#if HAS_ROTARY_ENCODER
87+
if (gCfgItems.encoder_enable) lv_group_add_obj(g, buttonBack);
88+
#endif
8789
#endif
8890

8991
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
@@ -97,30 +99,27 @@ void lv_draw_about(void) {
9799
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
98100
}
99101

100-
fw_version = lv_label_create(scr, NULL);
101-
lv_obj_set_style(fw_version, &tft_style_label_rel);
102-
lv_label_set_text(fw_version, SHORT_BUILD_VERSION);
103-
lv_obj_align(fw_version, NULL, LV_ALIGN_CENTER, 0, -60);
102+
//fw_version = lv_label_create(scr, NULL);
103+
//lv_obj_set_style(fw_version, &tft_style_label_rel);
104+
//lv_label_set_text(fw_version, SHORT_BUILD_VERSION);
105+
//lv_obj_align(fw_version, NULL, LV_ALIGN_CENTER, 0, -60);
104106

105107
fw_type = lv_label_create(scr, NULL);
106108
lv_obj_set_style(fw_type, &tft_style_label_rel);
107-
lv_label_set_text(fw_type,
108-
#if MB(MKS_ROBIN_PRO)
109-
"Firmware: Robin_Pro35"
110-
#elif MB(MKS_ROBIN_NANO, MKS_ROBIN_NANO_V2)
111-
"Firmware: Robin_Nano35"
112-
#else
113-
CUSTOM_MACHINE_NAME
114-
#endif
115-
);
109+
lv_label_set_text(fw_type, "Firmware: Marlin " SHORT_BUILD_VERSION);
116110
lv_obj_align(fw_type, NULL, LV_ALIGN_CENTER, 0, -20);
117111

118112
board = lv_label_create(scr, NULL);
119113
lv_obj_set_style(board, &tft_style_label_rel);
120114
lv_label_set_text(board, "Board: " BOARD_INFO_NAME);
121-
lv_obj_align(board, NULL, LV_ALIGN_CENTER, 0, 20);
115+
lv_obj_align(board, NULL, LV_ALIGN_CENTER, 0, -60);
122116
}
123117

124-
void lv_clear_about() { lv_obj_del(scr); }
118+
void lv_clear_about() {
119+
#if HAS_ROTARY_ENCODER
120+
if (gCfgItems.encoder_enable) lv_group_remove_all_objs(g);
121+
#endif
122+
lv_obj_del(scr);
123+
}
125124

126125
#endif // HAS_TFT_LVGL_UI

0 commit comments

Comments
 (0)