diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 3210ad7460..752034c9ea 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -128,7 +128,7 @@
// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
- #define MOTHERBOARD BOARD_CREALITY_V452
+ #define MOTHERBOARD BOARD_CREALITY_V453
#endif
// Name displayed in the LCD "Ready" message and Info menu
@@ -1000,7 +1000,7 @@
#define PROBE_ACTIVE_INPUT
#if ENABLED(PROBE_ACTIVE_INPUT)
#define PROBE_ACTIVE_INPUT_STATE LOW // State indicating probe is active
- //#define PROBE_ACTIVE_INPUT_PIN PC6 // Override default pin
+ //#define PROBE_ENABLE_PIN PC6 // Override default pin
#endif
// Probe should be tared prior to each probe
diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index 7f0a99dca3..15362c4908 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -330,10 +330,11 @@
#define BOARD_CREALITY_V4 4037 // Creality v4.x (STM32F103RE)
#define BOARD_CREALITY_V427 4038 // Creality v4.2.7 (STM32F103RE)
#define BOARD_CREALITY_V452 4039 // Creality v4.5.2 (STM32F103RE)
-#define BOARD_TRIGORILLA_PRO 4040 // Trigorilla Pro (STM32F103ZET6)
-#define BOARD_FLY_MINI 4041 // FLY MINI (STM32F103RCT6)
-#define BOARD_FLSUN_HISPEED 4042 // FLSUN HiSpeedV1 (STM32F103VET6)
-#define BOARD_BEAST 4043 // STM32F103RET6 Libmaple-based controller
+#define BOARD_CREALITY_V453 4040 // Creality v4.5.3 (STM32F103RE)
+#define BOARD_TRIGORILLA_PRO 4041 // Trigorilla Pro (STM32F103ZET6)
+#define BOARD_FLY_MINI 4042 // FLY MINI (STM32F103RCT6)
+#define BOARD_FLSUN_HISPEED 4043 // FLSUN HiSpeedV1 (STM32F103VET6)
+#define BOARD_BEAST 4044 // STM32F103RET6 Libmaple-based controller
//
// ARM Cortex-M4F
@@ -366,6 +367,7 @@
#define BOARD_FLYF407ZG 4217 // FLYF407ZG board (STM32F407ZG)
#define BOARD_MKS_ROBIN2 4218 // MKS_ROBIN2 (STM32F407ZE)
#define BOARD_MKS_ROBIN_PRO_V2 4219 // MKS Robin Pro V2 (STM32F407VE)
+#define BOARD_MKS_ROBIN_NANO_V3 4220 // MKS Robin Nano V3 (STM32F407VG)
//
// ARM Cortex M7
diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp
index 2233072046..bb083f777a 100644
--- a/Marlin/src/module/endstops.cpp
+++ b/Marlin/src/module/endstops.cpp
@@ -280,8 +280,8 @@ void Endstops::init() {
#endif
#endif
- #if PIN_EXISTS(PROBE_ACTIVE_INPUT)
- SET_INPUT(PROBE_ACTIVE_INPUT_PIN);
+ #if PIN_EXISTS(PROBE_ENABLE_PIN)
+ SET_INPUT(PROBE_ENABLE_PIN);
#endif
#if ENABLED(PROBE_TARE)
@@ -467,7 +467,7 @@ void _O2 Endstops::report_states() {
ES_REPORT(Z4_MAX);
#endif
#if ENABLED(PROBE_ACTIVE_INPUT)
- print_es_state(READ(PROBE_ACTIVE_INPUT_PIN) == PROBE_ACTIVE_INPUT_STATE, PSTR("Probe Enable Pin"));
+ print_es_state(READ(PROBE_ENABLE_PIN) == PROBE_ACTIVE_INPUT_STATE, PSTR("Probe Enable Pin"));
#endif
#if HAS_CUSTOM_PROBE_PIN
print_es_state(PROBE_TRIGGERED(), PSTR(STR_Z_PROBE));
@@ -619,7 +619,7 @@ void Endstops::update() {
#endif
#if ENABLED(PROBE_ACTIVE_INPUT)
- if (READ(PROBE_ACTIVE_INPUT_PIN) == PROBE_ACTIVE_INPUT_STATE)
+ if (READ(PROBE_ENABLE_PIN) == PROBE_ACTIVE_INPUT_STATE)
#endif
{
UPDATE_ENDSTOP_BIT(Z, TERN(HAS_CUSTOM_PROBE_PIN, MIN_PROBE, MIN));
diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp
index 0bba74ec84..0a31b5d0b3 100644
--- a/Marlin/src/module/probe.cpp
+++ b/Marlin/src/module/probe.cpp
@@ -512,7 +512,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) {
*/
bool Probe::tare_z_probe() {
#if ENABLED(PROBE_TARE_ONLY_WHILE_INACTIVE)
- if ((READ(PROBE_ACTIVE_INPUT_PIN) == PROBE_ACTIVE_INPUT_STATE)) {
+ if ((READ(PROBE_ENABLE_PIN) == PROBE_ACTIVE_INPUT_STATE)) {
SERIAL_ECHOLN("Cannot tare probe, already active");
return true;
}
diff --git a/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h b/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h
index a75eb6ae5d..279c7e8100 100644
--- a/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h
+++ b/Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h
@@ -21,7 +21,7 @@
*/
#pragma once
-#ifdef SKR_HAS_LPC1769
+#if ENABLED(SKR_HAS_LPC1769)
#if NOT_TARGET(MCU_LPC1769)
#error "Oops! Make sure you have the LPC1769 environment selected in your IDE."
#endif
@@ -35,9 +35,9 @@
#if BOTH(HAS_WIRED_LCD, HAS_BTT_EXP_MOT)
#if EITHER(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY)
- #define EXP_MOT_USE_EXP2_ONLY
+ #define EXP_MOT_USE_EXP2_ONLY 1
#else
- #error "Having a LCD that uses both EXP1/EXP2 and a expanion motor module on EXP1/EXP2 is not possible."
+ #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time."
#endif
#endif
@@ -146,7 +146,7 @@
#define E2_STEP_PIN EXPA2_05_PIN
#define E2_DIR_PIN EXPA2_06_PIN
#define E2_ENABLE_PIN EXPA2_04_PIN
- #ifndef EXP_MOT_USE_EXP2_ONLY
+ #if !EXP_MOT_USE_EXP2_ONLY
#define E2_DIAG_PIN EXPA1_06_PIN
#define E2_CS_PIN EXPA1_05_PIN
#if HAS_TMC_UART
@@ -158,7 +158,7 @@
// M2 on Driver Expansion Module
#define E3_STEP_PIN EXPA2_08_PIN
#define E3_DIR_PIN EXPA2_07_PIN
- #ifndef EXP_MOT_USE_EXP2_ONLY
+ #if !EXP_MOT_USE_EXP2_ONLY
#define E3_ENABLE_PIN EXPA1_03_PIN
#define E3_DIAG_PIN EXPA1_08_PIN
#define E3_CS_PIN EXPA1_07_PIN
@@ -173,7 +173,7 @@
// M3 on Driver Expansion Module
#define E4_STEP_PIN EXPA2_10_PIN
#define E4_DIR_PIN EXPA2_09_PIN
- #ifndef EXP_MOT_USE_EXP2_ONLY
+ #if !EXP_MOT_USE_EXP2_ONLY
#define E4_ENABLE_PIN EXPA1_04_PIN
#define E4_DIAG_PIN EXPA1_10_PIN
#define E4_CS_PIN EXPA1_09_PIN
diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
index d074db8b25..b260a27867 100644
--- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
+++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
@@ -118,6 +118,7 @@
#ifndef DIGIPOT_I2C_ADDRESS_A
#define DIGIPOT_I2C_ADDRESS_A 0x2F // unshifted slave address (5E <- 2F << 1)
#endif
+#define DIGIPOT_ENABLE_I2C_PULLUPS // MightyBoard doesn't have hardware I2C pin pull-ups.
//
// Temperature Sensors
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index c9f6f7b3b3..9d1dab10f6 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -532,6 +532,8 @@
#include "stm32f1/pins_CREALITY_V427.h" // STM32F1 env:STM32F103RET6_creality
#elif MB(CREALITY_V452)
#include "stm32f1/pins_CREALITY_V452.h" // STM32F1 env:STM32F103RET6_creality
+#elif MB(CREALITY_V453)
+ #include "stm32f1/pins_CREALITY_V453.h" // STM32F1 env:STM32F103RET6_creality
#elif MB(TRIGORILLA_PRO)
#include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro
#elif MB(FLY_MINI)
@@ -590,6 +592,8 @@
#include "stm32f4/pins_MKS_ROBIN2.h" // STM32F4 env:MKS_ROBIN2
#elif MB(MKS_ROBIN_PRO_V2)
#include "stm32f4/pins_MKS_ROBIN_PRO_V2.h" // STM32F4 env:mks_robin_pro2
+#elif MB(MKS_ROBIN_NANO_V3)
+ #include "stm32f4/pins_MKS_ROBIN_NANO_V3.h" // STM32F4 env:mks_robin_nano_v3
//
// ARM Cortex M7
diff --git a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h
index 15ac2f447b..6133a6417e 100644
--- a/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h
+++ b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h
@@ -226,7 +226,7 @@
#define DOGLCD_SCK 17
#define DOGLCD_A0 LCD_PINS_DC
- #define KILL_PIN -1 // NC
+ #undef KILL_PIN
#define NEOPIXEL_PIN 27
#else
@@ -243,7 +243,6 @@
#define LCD_BACKLIGHT_PIN 27
#endif
- #define KILL_PIN 41
#define LCD_RESET_PIN 23 // Must be high or open for LCD to operate normally.
// Seems to work best if left open.
diff --git a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h
index 3bcaae96a3..6fcb7b94e0 100644
--- a/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h
+++ b/Marlin/src/pins/ramps/pins_LONGER3D_LKx_PRO.h
@@ -28,7 +28,7 @@
#if NOT_TARGET(__AVR_ATmega2560__)
#error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "Longer3D LGT KIT V1.0 board only supports 1 hotend / E-stepper. Comment out this line to continue."
+ #error "Longer3D LGT KIT V1.0 board only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#if SERIAL_PORT == 1 || SERIAL_PORT_2 == 1
diff --git a/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h b/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h
index 513c7fe8d5..d9964242dd 100644
--- a/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h
+++ b/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h
@@ -22,7 +22,7 @@
#pragma once
#if HOTENDS > 1 || E_STEPPERS > 1
- #error "Ender-4 supports only 1 hotend / E-stepper. Comment out this line to continue."
+ #error "Ender-4 only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#define BOARD_INFO_NAME "Ender-4"
diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h
index 78751a6bac..a09da02e15 100644
--- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h
+++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h
@@ -34,4 +34,18 @@
#define Y_HARDWARE_SERIAL MSerial4
#define Z_HARDWARE_SERIAL MSerial4
#define E0_HARDWARE_SERIAL MSerial4
+
+ // Default TMC slave addresses
+ #ifndef X_SLAVE_ADDRESS
+ #define X_SLAVE_ADDRESS 0
+ #endif
+ #ifndef Y_SLAVE_ADDRESS
+ #define Y_SLAVE_ADDRESS 2
+ #endif
+ #ifndef Z_SLAVE_ADDRESS
+ #define Z_SLAVE_ADDRESS 1
+ #endif
+ #ifndef E0_SLAVE_ADDRESS
+ #define E0_SLAVE_ADDRESS 3
+ #endif
#endif
diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h
index 8ed30bffb7..cc4bf46e15 100644
--- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h
+++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h
@@ -49,13 +49,27 @@
#define CONTROLLER_FAN_PIN FAN1_PIN
#endif
-/**
- * TMC220x stepper drivers
- * Hardware serial communication ports.
- */
#if HAS_TMC_UART
+ /**
+ * TMC220x stepper drivers
+ * Hardware serial communication ports
+ */
#define X_HARDWARE_SERIAL MSerial4
#define Y_HARDWARE_SERIAL MSerial4
#define Z_HARDWARE_SERIAL MSerial4
#define E0_HARDWARE_SERIAL MSerial4
+
+ // Default TMC slave addresses
+ #ifndef X_SLAVE_ADDRESS
+ #define X_SLAVE_ADDRESS 0
+ #endif
+ #ifndef Y_SLAVE_ADDRESS
+ #define Y_SLAVE_ADDRESS 2
+ #endif
+ #ifndef Z_SLAVE_ADDRESS
+ #define Z_SLAVE_ADDRESS 1
+ #endif
+ #ifndef E0_SLAVE_ADDRESS
+ #define E0_SLAVE_ADDRESS 3
+ #endif
#endif
diff --git a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h
index 0e94249a99..a255160829 100644
--- a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h
+++ b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h
@@ -24,7 +24,7 @@
#if NOT_TARGET(TARGET_STM32F1)
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "CCROBOT-ONLINE MEEB_3DP only supports 1 hotend / E-stepper. Comment out this line to continue."
+ #error "CCROBOT-ONLINE MEEB_3DP only supports one hotend / E-stepper. Comment out this line to continue."
#endif
// https://github.com/ccrobot-online/MEEB_3DP
diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
index 44be73029d..8b5b8562a2 100644
--- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
+++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
@@ -48,17 +48,21 @@
#endif
#if ENABLED(IIC_BL24CXX_EEPROM)
- #define IIC_EEPROM_SDA PA11
- #define IIC_EEPROM_SCL PA12
- #define MARLIN_EEPROM_SIZE 0x800 // 2Kb (24C16)
+ #define IIC_EEPROM_SDA PA11
+ #define IIC_EEPROM_SCL PA12
+ #define MARLIN_EEPROM_SIZE 0x800 // 2Kb (24C16)
#elif ENABLED(SDCARD_EEPROM_EMULATION)
- #define MARLIN_EEPROM_SIZE 0x800 // 2Kb
+ #define MARLIN_EEPROM_SIZE 0x800 // 2Kb
#endif
//
// Servos
//
-#define SERVO0_PIN PB0 // BLTouch OUT
+#ifndef HAS_PIN_27_BOARD
+ #define SERVO0_PIN PB0 // BLTouch OUT
+#else
+ #define SERVO0_PIN PC6
+#endif
//
// Limit Switches
@@ -156,7 +160,9 @@
#define BTN_EN1 PB10
#define BTN_EN2 PB14
- #define BEEPER_PIN PC6
+ #ifndef HAS_PIN_27_BOARD
+ #define BEEPER_PIN PC6
+ #endif
#elif ENABLED(VET6_12864_LCD)
diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h
index fe111c430f..35eea1da78 100644
--- a/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h
+++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V452.h
@@ -24,97 +24,15 @@
* Creality v4.5.2 (STM32F103RET6) board pin assignments
*/
-#if NOT_TARGET(__STM32F1__)
- #error "Oops! Select an STM32F1 board in 'Tools > Board.'"
-#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "CREALITY_V452 supports up to 1 hotends / E-steppers. Comment out this line to continue."
+#if HOTENDS > 1 || E_STEPPERS > 1
+ #error "Creality v4.5.2 only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#define BOARD_NAME "Creality v4.5.2"
-#define DEFAULT_MACHINE_NAME "Creality3D"
-//
-// Release PB4 (Z_STEP_PIN) from JTAG NRST role
-//
-#define DISABLE_DEBUG
-
-#define BOARD_NO_NATIVE_USB
-
-//
-// EEPROM
-//
-#if NO_EEPROM_SELECTED
- #define IIC_BL24CXX_EEPROM // EEPROM on I2C-0
- //#define SDCARD_EEPROM_EMULATION
-#endif
-
-#if ENABLED(IIC_BL24CXX_EEPROM)
- #define IIC_EEPROM_SDA PA11
- #define IIC_EEPROM_SCL PA12
- #define MARLIN_EEPROM_SIZE 0x800 // 2Kb (24C16)
-#elif ENABLED(SDCARD_EEPROM_EMULATION)
- #define MARLIN_EEPROM_SIZE 0x800 // 2Kb
-#endif
-
-//
-// Limit Switches
-//
-#define X_STOP_PIN PC4
-#define Y_STOP_PIN PC5
-#define Z_STOP_PIN PA4
-
-#define FIL_RUNOUT_PIN PA7
-
-//
-// Probe
-//
-#define PROBE_TARE_PIN PA5
-#define PROBE_ACTIVE_INPUT_PIN PC6 // Optoswitch to indicate probe is near bed (active)
-
-//
-// Steppers
-//
-#define X_ENABLE_PIN PC3
-#define X_STEP_PIN PB8
-#define X_DIR_PIN PB7
-
-#define Y_ENABLE_PIN PC3
-#define Y_STEP_PIN PB6
-#define Y_DIR_PIN PB5
-
-#define Z_ENABLE_PIN PC3
-#define Z_STEP_PIN PB4
-#define Z_DIR_PIN PB3
-
-#define E0_ENABLE_PIN PC3
-#define E0_STEP_PIN PC2
-#define E0_DIR_PIN PB9
-
-//
-// Temperature Sensors
-//
-#define TEMP_0_PIN PB1 // TH1
-#define TEMP_BED_PIN PB0 // TB1
-
-//
-// Heaters / Fans
-//
#define HEATER_0_PIN PA1 // HEATER1
#define HEATER_BED_PIN PA2 // HOT BED
-
#define FAN_PIN PA0 // FAN
-#define FAN_SOFT_PWM
+#define PROBE_ENABLE_PIN PC6 // Optoswitch to Enable Z Probe
-//
-// SD Card
-//
-#define SD_DETECT_PIN PC7
-#define NO_SD_HOST_DRIVE // SD is only seen by the printer
-
-#define SDIO_SUPPORT // Extra added by Creality
-#define SDIO_CLOCK 6000000 // In original source code overridden by Creality in sdio.h
-
-//
-// Misc. Functions
-//
-#define CASE_LIGHT_PIN PA6
+#include "pins_CREALITY_V45x.h"
diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V453.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V453.h
new file mode 100644
index 0000000000..836e5a91f1
--- /dev/null
+++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V453.h
@@ -0,0 +1,38 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Creality v4.5.3 (STM32F103RET6) board pin assignments
+ */
+
+#if HOTENDS > 1 || E_STEPPERS > 1
+ #error "Creality v4.5.3 only supports one hotend / E-stepper. Comment out this line to continue."
+#endif
+
+#define BOARD_NAME "Creality v4.5.3"
+
+#define HEATER_0_PIN PB14 // HEATER1
+#define HEATER_BED_PIN PB13 // HOT BED
+#define FAN_PIN PB15 // FAN
+#define PROBE_ENABLE_PIN PB2 // Optoswitch to Enable Z Probe
+
+#include "pins_CREALITY_V45x.h"
diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h
new file mode 100644
index 0000000000..f2be289530
--- /dev/null
+++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V45x.h
@@ -0,0 +1,113 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Creality v4.5.2 and v4.5.3 (STM32F103RET6) board pin assignments
+ */
+
+#if NOT_TARGET(__STM32F1__)
+ #error "Oops! Select an STM32F1 board in 'Tools > Board.'"
+#endif
+
+#define DEFAULT_MACHINE_NAME "Creality3D"
+
+//
+// Release PB4 (Z_STEP_PIN) from JTAG NRST role
+//
+#define DISABLE_DEBUG
+
+#define BOARD_NO_NATIVE_USB
+
+//
+// EEPROM
+//
+#if NO_EEPROM_SELECTED
+ #define IIC_BL24CXX_EEPROM // EEPROM on I2C-0
+ //#define SDCARD_EEPROM_EMULATION
+#endif
+
+#if ENABLED(IIC_BL24CXX_EEPROM)
+ #define IIC_EEPROM_SDA PA11
+ #define IIC_EEPROM_SCL PA12
+ #define MARLIN_EEPROM_SIZE 0x800 // 2Kb (24C16)
+#elif ENABLED(SDCARD_EEPROM_EMULATION)
+ #define MARLIN_EEPROM_SIZE 0x800 // 2Kb
+#endif
+
+//
+// Limit Switches
+//
+#define X_STOP_PIN PC4
+#define Y_STOP_PIN PC5
+#define Z_STOP_PIN PA4
+
+#define FIL_RUNOUT_PIN PA7
+
+//
+// Probe
+//
+#define PROBE_TARE_PIN PA5
+
+//
+// Steppers
+//
+#define X_ENABLE_PIN PC3
+#define X_STEP_PIN PB8
+#define X_DIR_PIN PB7
+
+#define Y_ENABLE_PIN PC3
+#define Y_STEP_PIN PB6
+#define Y_DIR_PIN PB5
+
+#define Z_ENABLE_PIN PC3
+#define Z_STEP_PIN PB4
+#define Z_DIR_PIN PB3
+
+#define E0_ENABLE_PIN PC3
+#define E0_STEP_PIN PC2
+#define E0_DIR_PIN PB9
+
+//
+// Temperature Sensors
+//
+#define TEMP_0_PIN PB1 // TH1
+#define TEMP_BED_PIN PB0 // TB1
+
+//
+// Heaters / Fans
+//
+
+#define FAN_SOFT_PWM
+
+//
+// SD Card
+//
+#define SD_DETECT_PIN PC7
+#define NO_SD_HOST_DRIVE // SD is only seen by the printer
+
+#define SDIO_SUPPORT // Extra added by Creality
+#define SDIO_CLOCK 6000000 // In original source code overridden by Creality in sdio.h
+
+//
+// Misc. Functions
+//
+#define CASE_LIGHT_PIN PA6
diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h
index 7541f82729..4d83e5703c 100644
--- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h
+++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h
@@ -32,7 +32,7 @@
#if NOT_TARGET(__STM32F1__, STM32F1xx)
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "FLSUN HiSpeedV1 supports 1 hotend / E-stepper. Comment out this line to continue."
+ #error "FLSUN HiSpeedV1 only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#define BOARD_INFO_NAME "FLSun HiSpeedV1"
@@ -60,6 +60,9 @@
// Note: FLSun Hispeed (clone MKS_Robin_miniV2) board is using SPI2 interface.
//
#define SPI_DEVICE 2
+#define SCK_PIN PB13 // SPI2
+#define MISO_PIN PB14 // SPI2
+#define MOSI_PIN PB15 // SPI2
// SPI Flash
#define HAS_SPI_FLASH 1
@@ -269,43 +272,42 @@
#error "FLSun HiSpeed default BEEPER_PIN is not a SPEAKER."
#endif
-/**
- * Note: MKS Robin TFT screens use various TFT controllers
- * Supported screens are based on the ILI9341, ST7789V and ILI9328 (320x240)
- * ILI9488 is not supported
- * Define init sequences for other screens in u8g_dev_tft_320x240_upscale_from_128x64.cpp
- *
- * If the screen stays white, disable 'LCD_RESET_PIN'
- * to let the bootloader init the screen.
- *
- * Setting an 'LCD_RESET_PIN' may cause a flicker when entering the LCD menu
- * because Marlin uses the reset as a failsafe to revive a glitchy LCD.
- */
+#if HAS_FSMC_TFT || HAS_GRAPHICAL_TFT
+ #define TFT_CS_PIN PD7 // NE4
+ #define TFT_RS_PIN PD11 // A0
+#endif
-// QQS-Pro uses MKS Robin TFT v2.0 320x240
-
-// Shared FSMC Configs
#if HAS_FSMC_TFT
- #define DOGLCD_MOSI -1 // Prevent auto-define by Conditionals_post.h
- #define DOGLCD_SCK -1
-
- #define FSMC_CS_PIN PD7 // NE4
- #define FSMC_RS_PIN PD11 // A0
-
- #define TFT_RESET_PIN PC6 // FSMC_RST
+ /**
+ * Note: MKS Robin TFT screens use various TFT controllers
+ * Supported screens are based on the ILI9341, ST7789V and ILI9328 (320x240)
+ * ILI9488 is not supported
+ * Define init sequences for other screens in u8g_dev_tft_320x240_upscale_from_128x64.cpp
+ *
+ * If the screen stays white, disable 'LCD_RESET_PIN'
+ * to let the bootloader init the screen.
+ *
+ * Setting an 'LCD_RESET_PIN' may cause a flicker when entering the LCD menu
+ * because Marlin uses the reset as a failsafe to revive a glitchy LCD.
+ */
+ //#define TFT_RESET_PIN PC6 // FSMC_RST
#define TFT_BACKLIGHT_PIN PD13
+ #define FSMC_CS_PIN TFT_CS_PIN // NE4
+ #define FSMC_RS_PIN TFT_RS_PIN // A0
#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
#define FSMC_DMA_DEV DMA2
#define FSMC_DMA_CHANNEL DMA_CH5
-
- #define TFT_BUFFER_SIZE 14400
- #if ENABLED(TFT_CLASSIC_UI)
- #define TFT_MARLINBG_COLOR 0x3186 // White
- #define TFT_MARLINUI_COLOR 0xC7B6 // green
+ #ifdef TFT_CLASSIC_UI
+ #define TFT_MARLINBG_COLOR 0x3186 // Grey
+ #define TFT_MARLINUI_COLOR 0xC7B6 // Green
#define TFT_BTARROWS_COLOR 0xDEE6 // Yellow
#define TFT_BTOKMENU_COLOR 0x145F // Cyan
- #endif
+ #endif
+ #define TFT_BUFFER_SIZE 14400
+#elif HAS_GRAPHICAL_TFT
+ #define TFT_RESET_PIN PC6
+ #define TFT_BACKLIGHT_PIN PD13
#endif
#if NEED_TOUCH_PINS
@@ -313,4 +315,5 @@
#define TOUCH_SCK_PIN PB13 // SPI2_SCK
#define TOUCH_MISO_PIN PB14 // SPI2_MISO
#define TOUCH_MOSI_PIN PB15 // SPI2_MOSI
+ #define TOUCH_INT_PIN -1
#endif
diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h
index aebb776b29..3919723f37 100644
--- a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h
+++ b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h
@@ -87,19 +87,30 @@
#define E0_ENABLE_PIN PC13
#if HAS_TMC_UART
-
/**
* TMC2208/TMC2209 stepper drivers
*/
- //
// Hardware serial with switch
- //
#define X_HARDWARE_SERIAL MSerial2
#define Y_HARDWARE_SERIAL MSerial2
#define Z_HARDWARE_SERIAL MSerial2
#define E0_HARDWARE_SERIAL MSerial2
+ // Default TMC slave addresses
+ #ifndef X_SLAVE_ADDRESS
+ #define X_SLAVE_ADDRESS 0
+ #endif
+ #ifndef Y_SLAVE_ADDRESS
+ #define Y_SLAVE_ADDRESS 1
+ #endif
+ #ifndef Z_SLAVE_ADDRESS
+ #define Z_SLAVE_ADDRESS 2
+ #endif
+ #ifndef E0_SLAVE_ADDRESS
+ #define E0_SLAVE_ADDRESS 3
+ #endif
+
// The 4xTMC2209 module doesn't have a serial multiplexer and
// needs to set *_SLAVE_ADDRESS in Configuration_adv.h for X,Y,Z,E0
#if HAS_DRIVER(TMC2208)
@@ -110,7 +121,6 @@
// Reduce baud rate to improve software serial reliability
#define TMC_BAUD_RATE 19200
-
#endif
//
diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h
index b8a4ccf770..c978092ab2 100644
--- a/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h
+++ b/Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h
@@ -80,10 +80,26 @@
#define E0_DIR_PIN PC14
#define E0_ENABLE_PIN PC13
-#define X_HARDWARE_SERIAL MSerial2
-#define Y_HARDWARE_SERIAL MSerial2
-#define Z_HARDWARE_SERIAL MSerial2
-#define E0_HARDWARE_SERIAL MSerial2
+#if HAS_TMC_UART
+ #define X_HARDWARE_SERIAL MSerial2
+ #define Y_HARDWARE_SERIAL MSerial2
+ #define Z_HARDWARE_SERIAL MSerial2
+ #define E0_HARDWARE_SERIAL MSerial2
+
+ // Default TMC slave addresses
+ #ifndef X_SLAVE_ADDRESS
+ #define X_SLAVE_ADDRESS 0
+ #endif
+ #ifndef Y_SLAVE_ADDRESS
+ #define Y_SLAVE_ADDRESS 1
+ #endif
+ #ifndef Z_SLAVE_ADDRESS
+ #define Z_SLAVE_ADDRESS 2
+ #endif
+ #ifndef E0_SLAVE_ADDRESS
+ #define E0_SLAVE_ADDRESS 3
+ #endif
+#endif
//
// Heaters / Fans
diff --git a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
index f86acf1f24..4f02b0e23c 100644
--- a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
+++ b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
@@ -31,10 +31,10 @@
#if NOT_TARGET(__STM32F1__)
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "JGAurora 32-bit board only supports 1 hotend / E-stepper. Comment out this line to continue."
+ #error "JGAurora A5S A1 only supports one hotend / E-stepper. Comment out this line to continue."
#endif
-#define BOARD_INFO_NAME "JGAurora A5S A1 board"
+#define BOARD_INFO_NAME "JGAurora A5S A1"
#define BOARD_NO_NATIVE_USB
diff --git a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
index fd5c573878..33f995dcae 100644
--- a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
+++ b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
@@ -25,7 +25,7 @@
#if NOT_TARGET(__STM32F1__, STM32F1xx)
#error "Oops! Select a STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "Longer3D board only supports 1 hotend / E-stepper. Comment out this line to continue."
+ #error "Longer3D only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#define BOARD_INFO_NAME "Longer3D"
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
index d7c4aebe37..1ad18a6497 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
@@ -24,7 +24,7 @@
#if NOT_TARGET(__STM32F1__)
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "MKS Robin Lite supports only 1 hotend / E-stepper. Comment out this line to continue."
+ #error "MKS Robin Lite only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#ifndef BOARD_INFO_NAME
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h
index ae68357589..e6a1e92999 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h
@@ -28,7 +28,7 @@
#if NOT_TARGET(__STM32F1__)
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "MKS Robin mini only supports 1 hotend / E-stepper. Comment out this line to continue."
+ #error "MKS Robin mini only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#define BOARD_INFO_NAME "MKS Robin Mini"
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
index 660ba29e97..af2ebce9ed 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
@@ -24,7 +24,7 @@
#if NOT_TARGET(STM32F4)
#error "Oops! Select an STM32F4 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "BIGTREE BTT002 V1.0 only supports one hotend / E-stepper."
+ #error "BIGTREE BTT002 V1.0 only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#define BOARD_INFO_NAME "BTT BTT002 V1.0"
diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h
index 075aec6e9b..6e0b3e14a7 100644
--- a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h
+++ b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h
@@ -21,7 +21,7 @@
#if NOT_TARGET(STM32F4, STM32F4xx)
#error "Oops! Select an STM32F4 board in 'Tools > Board.'"
#elif HOTENDS > 1 || E_STEPPERS > 1
- #error "LERDGE X only supports one hotend / E-steppers"
+ #error "LERDGE X only supports one hotend / E-stepper. Comment out this line to continue."
#endif
#define BOARD_INFO_NAME "Lerdge X"
diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
new file mode 100644
index 0000000000..5ff29a1f1c
--- /dev/null
+++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
@@ -0,0 +1,367 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#if NOT_TARGET(STM32F4, STM32F4xx)
+ #error "Oops! Select an STM32F4 board in 'Tools > Board.'"
+#elif HOTENDS > 2 || E_STEPPERS > 2
+ #error "MKS Robin Nano V3 supports up to 2 hotends / E-steppers."
+#elif HAS_FSMC_TFT
+ #error "MKS Robin Nano V3 doesn't support FSMC-based TFT displays."
+#endif
+
+#define BOARD_INFO_NAME "MKS Robin Nano V3"
+
+// Use one of these or SDCard-based Emulation will be used
+//#define SRAM_EEPROM_EMULATION // Use BackSRAM-based EEPROM emulation
+//#define FLASH_EEPROM_EMULATION // Use Flash-based EEPROM emulation
+#define I2C_EEPROM
+
+//
+// Release PB4 (Z_DIR_PIN) from JTAG NRST role
+//
+
+//
+// Limit Switches
+//
+#define X_DIAG_PIN PD15
+#define Y_DIAG_PIN PD2
+#define Z_DIAG_PIN PC8
+#define E0_DIAG_PIN PC4
+#define E1_DIAG_PIN PE7
+
+//
+#define X_STOP_PIN PA15
+#define Y_STOP_PIN PD2
+#define Z_MIN_PIN PC8
+#define Z_MAX_PIN PC4
+
+//
+// Steppers
+//
+#define X_ENABLE_PIN PE4
+#define X_STEP_PIN PE3
+#define X_DIR_PIN PE2
+#ifndef X_CS_PIN
+ #define X_CS_PIN PD5
+#endif
+
+#define Y_ENABLE_PIN PE1
+#define Y_STEP_PIN PE0
+#define Y_DIR_PIN PB9
+#ifndef Y_CS_PIN
+ #define Y_CS_PIN PD7
+#endif
+
+#define Z_ENABLE_PIN PB8
+#define Z_STEP_PIN PB5
+#define Z_DIR_PIN PB4
+#ifndef Z_CS_PIN
+ #define Z_CS_PIN PD4
+#endif
+
+#define E0_ENABLE_PIN PB3
+#define E0_STEP_PIN PD6
+#define E0_DIR_PIN PD3
+#ifndef E0_CS_PIN
+ #define E0_CS_PIN PD9
+#endif
+
+#define E1_ENABLE_PIN PA3
+#define E1_STEP_PIN PD15
+#define E1_DIR_PIN PA1
+#ifndef E1_CS_PIN
+ #define E1_CS_PIN PD8
+#endif
+
+//
+// Software SPI pins for TMC2130 stepper drivers
+//
+// This board only support SW SPI for stepper drivers
+#if HAS_TMC_SPI
+ #define TMC_USE_SW_SPI
+#endif
+#if ENABLED(TMC_USE_SW_SPI)
+ #if !defined(TMC_SW_MOSI) || TMC_SW_MOSI == -1
+ #define TMC_SW_MOSI PD14
+ #endif
+ #if !defined(TMC_SW_MISO) || TMC_SW_MISO == -1
+ #define TMC_SW_MISO PD1
+ #endif
+ #if !defined(TMC_SW_SCK) || TMC_SW_SCK == -1
+ #define TMC_SW_SCK PD0
+ #endif
+#endif
+
+#if HAS_TMC_UART
+ //
+ // Software serial
+ // No Hardware serial for steppers
+ //
+ #define X_SERIAL_TX_PIN PD5
+ #define X_SERIAL_RX_PIN PD5
+
+ #define Y_SERIAL_TX_PIN PD7
+ #define Y_SERIAL_RX_PIN PD7
+
+ #define Z_SERIAL_TX_PIN PD4
+ #define Z_SERIAL_RX_PIN PD4
+
+ #define E0_SERIAL_TX_PIN PD9
+ #define E0_SERIAL_RX_PIN PD9
+
+ #define E1_SERIAL_TX_PIN PD8
+ #define E1_SERIAL_RX_PIN PD8
+
+ // Reduce baud rate to improve software serial reliability
+ #define TMC_BAUD_RATE 19200
+#endif
+
+//
+// Temperature Sensors
+//
+#define TEMP_0_PIN PC1 // TH1
+#define TEMP_1_PIN PA2 // TH2
+#define TEMP_BED_PIN PC0 // TB1
+
+//
+// Heaters / Fans
+//
+#define HEATER_0_PIN PE5 // HEATER1
+#define HEATER_1_PIN PB0 // HEATER2
+#define HEATER_BED_PIN PA0 // HOT BED
+
+#define FAN_PIN PB1 // FAN
+#define FAN1_PIN PC14 // FAN1
+
+//
+// Thermocouples
+//
+//#define MAX6675_SS_PIN HEATER_0_PIN // TC1 - CS1
+//#define MAX6675_SS_PIN HEATER_1_PIN // TC2 - CS2
+
+//
+// Misc. Functions
+//
+#define MT_DET_1 PA4
+#define MT_DET_2 PE6
+#define PW_DET PA13
+#define PW_OFF PB2
+
+#ifndef FIL_RUNOUT_PIN
+ #define FIL_RUNOUT_PIN MT_DET_1
+#endif
+#ifndef FIL_RUNOUT2_PIN
+ #define FIL_RUNOUT2_PIN MT_DET_2
+#endif
+
+#define POWER_LOSS_PIN PW_DET
+#define PS_ON_PIN PW_OFF
+//
+// Enable MKSPWC support
+//
+//#define SUICIDE_PIN PB2
+//#define KILL_PIN PA2
+//#define KILL_PIN_INVERTING true
+
+#define SERVO0_PIN PA8 // Enable BLTOUCH support
+//#define LED_PIN PB2
+
+// Random Info
+#define USB_SERIAL -1 //Usb Serial
+#define WIFI_SERIAL 3 //USART3
+#define MKS_WIFI_MODULE_SERIAL 1 //USART1
+#define MKS_WIFI_MODULE_SPI 2 //SPI2
+
+#ifndef SDCARD_CONNECTION
+ #define SDCARD_CONNECTION ONBOARD
+#endif
+
+//
+// Onboard SD card
+//
+// detect pin dont work when ONBOARD and NO_SD_HOST_DRIVE disabled
+#if SD_CONNECTION_IS(ONBOARD)
+ #define CUSTOM_SPI_PINS // TODO: needed because is the only way to set SPI3 for SD on STM32 (by now)
+ #if ENABLED(CUSTOM_SPI_PINS)
+ #define ENABLE_SPI3
+ #define SS_PIN -1
+ #define SDSS PC9
+ #define SCK_PIN PC10
+ #define MISO_PIN PC11
+ #define MOSI_PIN PC12
+ #define SD_DETECT_PIN PD12
+ #endif
+#endif
+
+//
+// LCD SD
+//
+#if SD_CONNECTION_IS(LCD)
+ #define CUSTOM_SPI_PINS
+ #if ENABLED(CUSTOM_SPI_PINS)
+ #define ENABLE_SPI1
+ #define SDSS PE10
+ #define SCK_PIN PA5
+ #define MISO_PIN PA6
+ #define MOSI_PIN PA7
+ #define SD_DETECT_PIN PE12
+ #endif
+#endif
+
+//
+// LCD / Controller
+#define SPI_FLASH
+#define HAS_SPI_FLASH 1
+#define SPI_DEVICE 2
+#define SPI_FLASH_SIZE 0x1000000
+#if ENABLED(SPI_FLASH)
+ #define W25QXX_CS_PIN PB12
+ #define W25QXX_MOSI_PIN PC3
+ #define W25QXX_MISO_PIN PC2
+ #define W25QXX_SCK_PIN PB13
+#endif
+
+/**
+ * _____ _____
+ * (BEEPER)PC5 | · · | PE13(BTN_ENC) (SPI1 MISO) PA6 | · · | PA5 (SPI1 SCK)
+ * (LCD_EN)PD13 | · · | PC6(LCD_RS) (BTN_EN1) PE8 | · · | PE10 (SPI1 CS)
+ * (LCD_D4)PE14 | · · PE15(LCD_D5) (BTN_EN2) PE11 | · · PA7 (SPI1 MOSI)
+ * (LCD_D6)PD11 | · · | PD10(LCD_D7) (SPI1_RS) PE12 | · · | RESET
+ * GND | · · | 5V GND | · · | 3.3V
+ *  ̄ ̄ ̄  ̄ ̄ ̄
+ * EXP1 EXP2
+ */
+
+#if EITHER(TFT_480x320_SPI, TFT_LVGL_UI_SPI)
+ #ifndef TOUCH_CALIBRATION_X
+ #define TOUCH_CALIBRATION_X -17253
+ #endif
+ #ifndef TOUCH_CALIBRATION_Y
+ #define TOUCH_CALIBRATION_Y 11579
+ #endif
+ #ifndef TOUCH_OFFSET_X
+ #define TOUCH_OFFSET_X 514
+ #endif
+ #ifndef TOUCH_OFFSET_Y
+ #define TOUCH_OFFSET_Y -24
+ #endif
+ #ifndef TOUCH_ORIENTATION
+ #define TOUCH_ORIENTATION TOUCH_LANDSCAPE
+ #endif
+
+ #define TFT_CS_PIN PD11
+ #define TFT_SCK_PIN PA5
+ #define TFT_MISO_PIN PA6
+ #define TFT_MOSI_PIN PA7
+ #define TFT_DC_PIN PD10
+ #define TFT_RST_PIN PC6
+ #define TFT_A0_PIN TFT_DC_PIN
+
+ #define TFT_RESET_PIN PC6
+ #define TFT_BACKLIGHT_PIN PD13
+
+ #define TOUCH_BUTTONS_HW_SPI
+ #define TOUCH_BUTTONS_HW_SPI_DEVICE 1
+
+ #define LCD_BACKLIGHT_PIN PD13
+ #ifndef TFT_WIDTH
+ #define TFT_WIDTH 480
+ #endif
+ #ifndef TFT_HEIGHT
+ #define TFT_HEIGHT 320
+ #endif
+
+ #define TOUCH_CS_PIN PE14 // SPI1_NSS
+ #define TOUCH_SCK_PIN PA5 // SPI1_SCK
+ #define TOUCH_MISO_PIN PA6 // SPI1_MISO
+ #define TOUCH_MOSI_PIN PA7 // SPI1_MOSI
+
+ #define BTN_EN1 PE8
+ #define BTN_EN2 PE11
+ #define BEEPER_PIN PC5
+ #define BTN_ENC PE13
+
+ #define LCD_READ_ID 0xD3
+ #define LCD_USE_DMA_SPI
+
+ #define TFT_BUFFER_SIZE 14400
+
+#elif HAS_SPI_LCD
+ #define BEEPER_PIN PC5
+ #define BTN_ENC PE13
+ #define LCD_PINS_ENABLE PD13
+ #define LCD_PINS_RS PC6
+ #define BTN_EN1 PE8
+ #define BTN_EN2 PE11
+ #define LCD_BACKLIGHT_PIN -1
+
+ // MKS MINI12864 and MKS LCD12864B; If using MKS LCD12864A (Need to remove RPK2 resistor)
+ #if ENABLED(MKS_MINI_12864)
+ //#define LCD_BACKLIGHT_PIN -1
+ //#define LCD_RESET_PIN -1
+ #define DOGLCD_A0 PD11
+ #define DOGLCD_CS PE15
+ //#define DOGLCD_SCK PA5
+ //#define DOGLCD_MOSI PA7
+
+ // Required for MKS_MINI_12864 with this board
+ //#define MKS_LCD12864B
+ //#undef SHOW_BOOTSCREEN
+
+ #else // !MKS_MINI_12864
+
+ #define LCD_PINS_D4 PE14
+ #if ENABLED(ULTIPANEL)
+ #define LCD_PINS_D5 PE15
+ #define LCD_PINS_D6 PD11
+ #define LCD_PINS_D7 PD10
+ #endif
+
+ #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
+ #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
+ #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
+
+ #endif // !MKS_MINI_12864
+
+#elif ENABLED(SPI_GRAPHICAL_TFT)
+ #define SPI_TFT_CS_PIN PD11
+ #define SPI_TFT_SCK_PIN PA5
+ #define SPI_TFT_MISO_PIN PA6
+ #define SPI_TFT_MOSI_PIN PA7
+ #define SPI_TFT_DC_PIN PD10
+ #define SPI_TFT_RST_PIN PC6
+
+ #define LCD_BACKLIGHT_PIN PD13
+
+ #define TOUCH_CS_PIN PE14 // SPI1_NSS
+ #define TOUCH_SCK_PIN PA5 // SPI1_SCK
+ #define TOUCH_MISO_PIN PA6 // SPI1_MISO
+ #define TOUCH_MOSI_PIN PA7 // SPI1_MOSI
+
+ #define BTN_EN1 PE8
+ #define BTN_EN2 PE11
+ #define BEEPER_PIN PC5
+ #define BTN_ENC PE13
+#endif // HAS_SPI_LCD
+
+#define HAS_OTG_USB_HOST_SUPPORT
diff --git a/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h b/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h
index f07cf824d2..133dcd2935 100644
--- a/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h
+++ b/Marlin/src/pins/stm32f7/pins_REMRAM_V1.h
@@ -33,7 +33,7 @@
#endif
#if HOTENDS > 1 || E_STEPPERS > 1
- #error "RemRam only supports one hotend / E-stepper."
+ #error "RemRam only supports one hotend / E-stepper. Comment out this line to continue."
#endif
//