From 3430d45f533ecbd7ff0dc253060e403ac2896fae Mon Sep 17 00:00:00 2001
From: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com>
Date: Sat, 30 May 2020 21:27:21 -0700
Subject: [PATCH] BTT SKR Mini E3 V2 (#18088)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
---
 Marlin/src/core/boards.h                      | 25 ++++----
 Marlin/src/pins/pins.h                        |  2 +
 .../src/pins/stm32f1/pins_BTT_SKR_MINI_E3.h   | 64 +++++++++++--------
 .../pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h  | 59 +++++++++++++++++
 4 files changed, 110 insertions(+), 40 deletions(-)
 create mode 100644 Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h

diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index aa6c7162cf..48b1a113f6 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -292,18 +292,19 @@
 #define BOARD_BTT_SKR_MINI_V1_1       4013  // BigTreeTech SKR Mini v1.1 (STM32F103RC)
 #define BOARD_BTT_SKR_MINI_E3_V1_0    4014  // BigTreeTech SKR Mini E3 (STM32F103RC)
 #define BOARD_BTT_SKR_MINI_E3_V1_2    4015  // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
-#define BOARD_BTT_SKR_E3_DIP          4016  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
-#define BOARD_JGAURORA_A5S_A1         4017  // JGAurora A5S A1 (STM32F103ZET6)
-#define BOARD_FYSETC_AIO_II           4018  // FYSETC AIO_II
-#define BOARD_FYSETC_CHEETAH          4019  // FYSETC Cheetah
-#define BOARD_FYSETC_CHEETAH_V12      4020  // FYSETC Cheetah V1.2
-#define BOARD_LONGER3D_LK             4021  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
-#define BOARD_GTM32_MINI              4022  // STM32F103VET6 controller
-#define BOARD_GTM32_MINI_A30          4023  // STM32F103VET6 controller
-#define BOARD_GTM32_REV_B             4024  // STM32F103VET6 controller
-#define BOARD_MKS_ROBIN_E3D           4025  // MKS Robin E3D (STM32F103RCT6)
-#define BOARD_MKS_ROBIN_E3            4026  // MKS Robin E3 (STM32F103RCT6)
-#define BOARD_MALYAN_M300             4027  // STM32F070-based delta
+#define BOARD_BTT_SKR_MINI_E3_V2_0    4016  // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
+#define BOARD_BTT_SKR_E3_DIP          4017  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
+#define BOARD_JGAURORA_A5S_A1         4018  // JGAurora A5S A1 (STM32F103ZET6)
+#define BOARD_FYSETC_AIO_II           4019  // FYSETC AIO_II
+#define BOARD_FYSETC_CHEETAH          4020  // FYSETC Cheetah
+#define BOARD_FYSETC_CHEETAH_V12      4021  // FYSETC Cheetah V1.2
+#define BOARD_LONGER3D_LK             4022  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
+#define BOARD_GTM32_MINI              4023  // STM32F103VET6 controller
+#define BOARD_GTM32_MINI_A30          4024  // STM32F103VET6 controller
+#define BOARD_GTM32_REV_B             4025  // STM32F103VET6 controller
+#define BOARD_MKS_ROBIN_E3D           4026  // MKS Robin E3D (STM32F103RCT6)
+#define BOARD_MKS_ROBIN_E3            4027  // MKS Robin E3 (STM32F103RCT6)
+#define BOARD_MALYAN_M300             4028  // STM32F070-based delta
 
 //
 // ARM Cortex-M4F
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index 3dc7a67593..9f67781533 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -512,6 +512,8 @@
   #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
 #elif MB(BTT_SKR_MINI_E3_V1_2)
   #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
+#elif MB(BTT_SKR_MINI_E3_V2_0)
+  #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
 #elif MB(BTT_SKR_E3_DIP)
   #include "stm32f1/pins_BTT_SKR_E3_DIP.h"      // STM32F1                                env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
 #elif MB(JGAURORA_A5S_A1)
diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3.h
index 4a435d6740..951d83baba 100644
--- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3.h
+++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3.h
@@ -92,37 +92,55 @@
 //
 #define HEATER_0_PIN                        PC8   // "HE"
 #define HEATER_BED_PIN                      PC9   // "HB"
-#define FAN_PIN                             PA8   // "FAN0"
+
+#ifdef SKR_MINI_E3_V2
+  #define FAN_PIN                           PC6
+#else
+  #define FAN_PIN                           PA8   // "FAN0"
+#endif
 
 //
 // USB connect control
 //
-#define USB_CONNECT_PIN                     PC13
+#ifdef SKR_MINI_E3_V2
+  #define USB_CONNECT_PIN                   PA14
+#else
+  #define USB_CONNECT_PIN                   PC13
+#endif
+
 #define USB_CONNECT_INVERTING false
 
 /**
- *                 _____
- *             5V | 1 2 | GND
- *  (LCD_EN) PB7  | 3 4 | PB8  (LCD_RS)
- *  (LCD_D4) PB9  | 5 6   PA10 (BTN_EN2)
- *          RESET | 7 8 | PA9  (BTN_EN1)
- * (BTN_ENC) PB6  | 9 10| PB5  (BEEPER)
- *                 -----
- *                 EXP1
+ *        SKR Mini E3 V1.0, V1.2                      SKR Mini E3 V2.0
+ *                _____                                     _____
+ *            5V | 1 2 | GND                            5V | 1 2 | GND
+ *  (LCD_EN) PB7 | 3 4 | PB8  (LCD_RS)       (LCD_EN) PB15 | 3 4 | PB8  (LCD_RS)
+ *  (LCD_D4) PB9 | 5 6   PA10 (BTN_EN2)      (LCD_D4) PB9  | 5 6   PA10 (BTN_EN2)
+ *         RESET | 7 8 | PA9  (BTN_EN1)              RESET | 7 8 | PA9  (BTN_EN1)
+ * (BTN_ENC) PB6 | 9 10| PB5  (BEEPER)      (BTN_ENC) PA15 | 9 10| PB5  (BEEPER)
+ *                -----                                     -----
+ *                EXP1                                      EXP1
  */
+#ifdef SKR_MINI_E3_V2
+  #define EXP1_9                            PA15
+  #define EXP1_3                            PB15
+#else
+  #define EXP1_9                            PB6
+  #define EXP1_3                            PB7
+#endif
 
 #if HAS_SPI_LCD
 
   #if ENABLED(CR10_STOCKDISPLAY)
 
     #define BEEPER_PIN                      PB5
+    #define BTN_ENC                       EXP1_9
 
-    #define BTN_ENC                         PB6
     #define BTN_EN1                         PA9
     #define BTN_EN2                         PA10
 
     #define LCD_PINS_RS                     PB8
-    #define LCD_PINS_ENABLE                 PB7
+    #define LCD_PINS_ENABLE               EXP1_3
     #define LCD_PINS_D4                     PB9
 
   #elif ENABLED(ZONESTAR_LCD)                     // ANET A8 LCD Controller - Must convert to 3.3V - CONNECTING TO 5V WILL DAMAGE THE BOARD!
@@ -130,7 +148,7 @@
     #error "CAUTION! ZONESTAR_LCD requires wiring modifications. See 'pins_BTT_SKR_MINI_E3.h' for details. Comment out this line to continue."
 
     #define LCD_PINS_RS                     PB9
-    #define LCD_PINS_ENABLE                 PB6
+    #define LCD_PINS_ENABLE               EXP1_9
     #define LCD_PINS_D4                     PB8
     #define LCD_PINS_D5                     PA10
     #define LCD_PINS_D6                     PA9
@@ -139,25 +157,15 @@
 
   #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY)
 
-    /** Creality Ender-2 display pinout
-     *                   _____
-     *               5V | 1 2 | GND
-     *      (MOSI) PB7  | 3 4 | PB8  (LCD_RS)
-     *    (LCD_A0) PB9  | 5 6   PA10 (BTN_EN2)
-     *            RESET | 7 8 | PA9  (BTN_EN1)
-     *   (BTN_ENC) PB6  | 9 10| PB5  (SCK)
-     *                   -----
-     *                    EXP1
-     */
-
-    #define BTN_ENC                         PB6
+    #define BTN_ENC                       EXP1_9
     #define BTN_EN1                         PA9
     #define BTN_EN2                         PA10
 
     #define DOGLCD_CS                       PB8
     #define DOGLCD_A0                       PB9
     #define DOGLCD_SCK                      PB5
-    #define DOGLCD_MOSI                     PB7
+    #define DOGLCD_MOSI                   EXP1_3
+
     #define FORCE_SOFT_SPI
     #define LCD_BACKLIGHT_PIN               -1
 
@@ -171,7 +179,7 @@
 
   #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_SKR_MINI_E3.h' for details. Comment out this line to continue."
 
-  /** FYSECT TFT TFT81050 display pinout
+  /** FYSETC TFT TFT81050 display pinout
    *
    *               Board                                      Display
    *               _____                                       _____
@@ -202,7 +210,7 @@
 
   #define CLCD_SPI_BUS 1                          // SPI1 connector
 
-  #define BEEPER_PIN                        PB6
+  #define BEEPER_PIN                      EXP1_9
 
   #define CLCD_MOD_RESET                    PA9
   #define CLCD_SPI_CS                       PB8
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
new file mode 100644
index 0000000000..1d5cf0f653
--- /dev/null
+++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h
@@ -0,0 +1,59 @@
+/**
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#define SKR_MINI_E3_V2
+
+// Onboard I2C EEPROM
+#if NO_EEPROM_SELECTED
+  #define I2C_EEPROM
+  #define MARLIN_EEPROM_SIZE 0x1000                 // 4KB
+  #undef NO_EEPROM_SELECTED
+#endif
+
+#include "pins_BTT_SKR_MINI_E3.h"
+
+#define BOARD_INFO_NAME "BIGTREE SKR Mini E3 V2.0"
+
+// Release PA13/PA14 (led, usb control) from SWD pins
+#define DISABLE_DEBUG
+
+#define NEOPIXEL_PIN                       PA8   // LED driving pin
+
+#define PS_ON_PIN                          PC13  // Power Supply Control
+
+#define FAN1_PIN                           PC7
+
+#ifndef CONTROLLER_FAN_PIN
+  #define CONTROLLER_FAN_PIN               FAN1_PIN
+#endif
+
+/**
+ * TMC220x stepper drivers
+ * Hardware serial communication ports.
+ */
+#if HAS_TMC_UART
+  #define X_HARDWARE_SERIAL  Serial4
+  #define Y_HARDWARE_SERIAL  Serial4
+  #define Z_HARDWARE_SERIAL  Serial4
+  #define E0_HARDWARE_SERIAL Serial4
+#endif
-- 
GitLab