Browse Source

✨ BigTreeTech SKR mini E3 V3.0 (STM32G0B1RET6) (#23283)

BigTreeTech 3 years ago
parent
commit
0077d982cd

+ 5 - 1
Marlin/src/HAL/STM32/HAL.h

@@ -130,7 +130,11 @@
 // Types
 // ------------------------
 
-typedef int16_t pin_t;
+#ifdef STM32G0B1xx
+  typedef int32_t pin_t;
+#else
+  typedef int16_t pin_t;
+#endif
 
 #define HAL_SERVO_LIB libServo
 #define PAUSE_SERVO_OUTPUT() libServo::pause_all_servos()

+ 1 - 1
Marlin/src/HAL/STM32/HAL_MinSerial.cpp

@@ -135,7 +135,7 @@ void install_min_serial() {
   HAL_min_serial_out = &TX;
 }
 
-#if DISABLED(DYNAMIC_VECTORTABLE) && DISABLED(STM32F0xx) // Cortex M0 can't jump to a symbol that's too far from the current function, so we work around this in exception_arm.cpp
+#if NONE(DYNAMIC_VECTORTABLE, STM32F0xx, STM32G0xx) // Cortex M0 can't jump to a symbol that's too far from the current function, so we work around this in exception_arm.cpp
 extern "C" {
   __attribute__((naked)) void JumpHandler_ASM() {
     __asm__ __volatile__ (

+ 1 - 1
Marlin/src/HAL/STM32/timers.cpp

@@ -67,7 +67,7 @@
   #endif
 #endif
 
-#ifdef STM32F0xx
+#if defined(STM32F0xx) || defined(STM32G0xx)
   #define MCU_STEP_TIMER 16
   #define MCU_TEMP_TIMER 17
 #elif defined(STM32F1xx)

+ 1 - 1
Marlin/src/HAL/shared/backtrace/unwmemaccess.cpp

@@ -41,7 +41,7 @@
   #define START_FLASH_ADDR  0x00000000
   #define END_FLASH_ADDR    0x00080000
 
-#elif defined(__STM32F1__) || defined(STM32F1xx) || defined(STM32F0xx)
+#elif defined(__STM32F1__) || defined(STM32F1xx) || defined(STM32F0xx) || defined(STM32G0xx)
 
   // For STM32F103ZET6/STM32F103VET6/STM32F0xx
   //  SRAM  (0x20000000 - 0x20010000) (64kb)

+ 1 - 1
Marlin/src/HAL/shared/cpu_exception/exception_arm.cpp

@@ -101,7 +101,7 @@ struct __attribute__((packed)) ContextSavedFrame {
   uint32_t ELR;
 };
 
-#if DISABLED(STM32F0xx)
+#if NONE(STM32F0xx, STM32G0xx)
   extern "C"
   __attribute__((naked)) void CommonHandler_ASM() {
     __asm__ __volatile__ (

+ 34 - 33
Marlin/src/core/boards.h

@@ -324,39 +324,40 @@
 #define BOARD_BTT_SKR_MINI_E3_V1_0    4024  // BigTreeTech SKR Mini E3 (STM32F103RC)
 #define BOARD_BTT_SKR_MINI_E3_V1_2    4025  // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
 #define BOARD_BTT_SKR_MINI_E3_V2_0    4026  // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE)
-#define BOARD_BTT_SKR_MINI_MZ_V1_0    4027  // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
-#define BOARD_BTT_SKR_E3_DIP          4028  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
-#define BOARD_BTT_SKR_CR6             4029  // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
-#define BOARD_JGAURORA_A5S_A1         4030  // JGAurora A5S A1 (STM32F103ZET6)
-#define BOARD_FYSETC_AIO_II           4031  // FYSETC AIO_II
-#define BOARD_FYSETC_CHEETAH          4032  // FYSETC Cheetah
-#define BOARD_FYSETC_CHEETAH_V12      4033  // FYSETC Cheetah V1.2
-#define BOARD_LONGER3D_LK             4034  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
-#define BOARD_CCROBOT_MEEB_3DP        4035  // ccrobot-online.com MEEB_3DP (STM32F103RC)
-#define BOARD_CHITU3D_V5              4036  // Chitu3D TronXY X5SA V5 Board
-#define BOARD_CHITU3D_V6              4037  // Chitu3D TronXY X5SA V6 Board
-#define BOARD_CHITU3D_V9              4038  // Chitu3D TronXY X5SA V9 Board
-#define BOARD_CREALITY_V4             4039  // Creality v4.x (STM32F103RE)
-#define BOARD_CREALITY_V427           4040  // Creality v4.2.7 (STM32F103RE)
-#define BOARD_CREALITY_V4210          4041  // Creality v4.2.10 (STM32F103RE) as found in the CR-30
-#define BOARD_CREALITY_V431           4042  // Creality v4.3.1 (STM32F103RE)
-#define BOARD_CREALITY_V431_A         4043  // Creality v4.3.1a (STM32F103RE)
-#define BOARD_CREALITY_V431_B         4044  // Creality v4.3.1b (STM32F103RE)
-#define BOARD_CREALITY_V431_C         4045  // Creality v4.3.1c (STM32F103RE)
-#define BOARD_CREALITY_V431_D         4046  // Creality v4.3.1d (STM32F103RE)
-#define BOARD_CREALITY_V452           4047  // Creality v4.5.2 (STM32F103RE)
-#define BOARD_CREALITY_V453           4048  // Creality v4.5.3 (STM32F103RE)
-#define BOARD_CREALITY_V24S1          4049  // Creality v2.4.S1 (STM32F103RE) v101 as found in the Ender 7
-#define BOARD_TRIGORILLA_PRO          4050  // Trigorilla Pro (STM32F103ZET6)
-#define BOARD_FLY_MINI                4051  // FLYmaker FLY MINI (STM32F103RCT6)
-#define BOARD_FLSUN_HISPEED           4052  // FLSUN HiSpeedV1 (STM32F103VET6)
-#define BOARD_BEAST                   4053  // STM32F103RET6 Libmaple-based controller
-#define BOARD_MINGDA_MPX_ARM_MINI     4054  // STM32F103ZET6 Mingda MD-16
-#define BOARD_GTM32_PRO_VD            4055  // STM32F103VET6 controller
-#define BOARD_ZONESTAR_ZM3E2          4056  // Zonestar ZM3E2    (STM32F103RCT6)
-#define BOARD_ZONESTAR_ZM3E4          4057  // Zonestar ZM3E4 V1 (STM32F103VCT6)
-#define BOARD_ZONESTAR_ZM3E4V2        4058  // Zonestar ZM3E4 V2 (STM32F103VCT6)
-#define BOARD_ERYONE_ERY32_MINI       4059  // Eryone Ery32 mini (STM32F103VET6)
+#define BOARD_BTT_SKR_MINI_E3_V3_0    4027  // BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RE)
+#define BOARD_BTT_SKR_MINI_MZ_V1_0    4028  // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
+#define BOARD_BTT_SKR_E3_DIP          4029  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
+#define BOARD_BTT_SKR_CR6             4030  // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
+#define BOARD_JGAURORA_A5S_A1         4031  // JGAurora A5S A1 (STM32F103ZET6)
+#define BOARD_FYSETC_AIO_II           4032  // FYSETC AIO_II
+#define BOARD_FYSETC_CHEETAH          4033  // FYSETC Cheetah
+#define BOARD_FYSETC_CHEETAH_V12      4034  // FYSETC Cheetah V1.2
+#define BOARD_LONGER3D_LK             4035  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
+#define BOARD_CCROBOT_MEEB_3DP        4036  // ccrobot-online.com MEEB_3DP (STM32F103RC)
+#define BOARD_CHITU3D_V5              4037  // Chitu3D TronXY X5SA V5 Board
+#define BOARD_CHITU3D_V6              4038  // Chitu3D TronXY X5SA V6 Board
+#define BOARD_CHITU3D_V9              4039  // Chitu3D TronXY X5SA V9 Board
+#define BOARD_CREALITY_V4             4040  // Creality v4.x (STM32F103RE)
+#define BOARD_CREALITY_V427           4041  // Creality v4.2.7 (STM32F103RE)
+#define BOARD_CREALITY_V4210          4042  // Creality v4.2.10 (STM32F103RE) as found in the CR-30
+#define BOARD_CREALITY_V431           4043  // Creality v4.3.1 (STM32F103RE)
+#define BOARD_CREALITY_V431_A         4044  // Creality v4.3.1a (STM32F103RE)
+#define BOARD_CREALITY_V431_B         4045  // Creality v4.3.1b (STM32F103RE)
+#define BOARD_CREALITY_V431_C         4046  // Creality v4.3.1c (STM32F103RE)
+#define BOARD_CREALITY_V431_D         4047  // Creality v4.3.1d (STM32F103RE)
+#define BOARD_CREALITY_V452           4048  // Creality v4.5.2 (STM32F103RE)
+#define BOARD_CREALITY_V453           4049  // Creality v4.5.3 (STM32F103RE)
+#define BOARD_CREALITY_V24S1          4050  // Creality v2.4.S1 (STM32F103RE) v101 as found in the Ender 7
+#define BOARD_TRIGORILLA_PRO          4051  // Trigorilla Pro (STM32F103ZET6)
+#define BOARD_FLY_MINI                4052  // FLYmaker FLY MINI (STM32F103RCT6)
+#define BOARD_FLSUN_HISPEED           4053  // FLSUN HiSpeedV1 (STM32F103VET6)
+#define BOARD_BEAST                   4054  // STM32F103RET6 Libmaple-based controller
+#define BOARD_MINGDA_MPX_ARM_MINI     4055  // STM32F103ZET6 Mingda MD-16
+#define BOARD_GTM32_PRO_VD            4056  // STM32F103VET6 controller
+#define BOARD_ZONESTAR_ZM3E2          4057  // Zonestar ZM3E2    (STM32F103RCT6)
+#define BOARD_ZONESTAR_ZM3E4          4058  // Zonestar ZM3E4 V1 (STM32F103VCT6)
+#define BOARD_ZONESTAR_ZM3E4V2        4059  // Zonestar ZM3E4 V2 (STM32F103VCT6)
+#define BOARD_ERYONE_ERY32_MINI       4060  // Eryone Ery32 mini (STM32F103VET6)
 
 //
 // ARM Cortex-M4F

+ 1 - 1
Marlin/src/module/stepper.cpp

@@ -1380,7 +1380,7 @@ void Stepper::set_directions() {
     }
 
     FORCE_INLINE int32_t Stepper::_eval_bezier_curve(const uint32_t curr_step) {
-      #if defined(__arm__) || defined(__thumb__)
+      #if (defined(__arm__) || defined(__thumb__)) && !defined(STM32G0B1xx) // TODO: Test define STM32G0xx versus STM32G0B1xx
 
         // For ARM Cortex M3/M4 CPUs, we have the optimized assembler version, that takes 43 cycles to execute
         uint32_t flo = 0;

+ 2 - 0
Marlin/src/pins/pins.h

@@ -527,6 +527,8 @@
   #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple
 #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_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple
+#elif MB(BTT_SKR_MINI_E3_V3_0)
+  #include "stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h"  // STM32G0                              env:STM32G0B1RE_btt
 #elif MB(BTT_SKR_MINI_MZ_V1_0)
   #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h"  // STM32F1                              env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple
 #elif MB(BTT_SKR_E3_DIP)

+ 2 - 2
Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h

@@ -206,7 +206,7 @@
       /**
        * TFTGLCD_PANEL_SPI display pinout
        *
-       *               Board                                      Display
+       *               Board                                        Display
        *               ------                                       ------
        *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK)
        * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)     LCD_CS | 3  4 | SD_CS (PA10)
@@ -249,7 +249,7 @@
   /**
    * FYSETC TFT TFT81050 display pinout
    *
-   *               Board                                      Display
+   *               Board                                        Display
    *               ------                                       ------
    *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK)
    * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)  MOD_RESET | 3  4 | SD_CS (PA10)

+ 332 - 0
Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h

@@ -0,0 +1,332 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2021 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 <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+//#define BOARD_CUSTOM_BUILD_FLAGS -DTONE_CHANNEL=4 -DTONE_TIMER=4 -DTIMER_TONE=4
+
+#ifndef BOARD_INFO_NAME
+  #define BOARD_INFO_NAME "BTT SKR Mini E3 V3.0"
+#endif
+
+#define USES_DIAG_JUMPERS
+
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD    2000
+
+#define LED_PIN                             PD8
+
+// Onboard I2C EEPROM
+#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM)
+  #undef NO_EEPROM_SELECTED
+  #define I2C_EEPROM
+  #define SOFT_I2C_EEPROM                         // Force the use of Software I2C
+  #define I2C_SCL_PIN                       PB6
+  #define I2C_SDA_PIN                       PB7
+  #define MARLIN_EEPROM_SIZE              0x1000  // 4KB
+#endif
+
+//
+// Servos
+//
+#define SERVO0_PIN                          PA1   // SERVOS
+
+//
+// Limit Switches
+//
+#define X_STOP_PIN                          PC0   // X-STOP
+#define Y_STOP_PIN                          PC1   // Y-STOP
+#define Z_STOP_PIN                          PC2   // Z-STOP
+
+//
+// Z Probe must be this pin
+//
+#define Z_MIN_PROBE_PIN                     PC14  // PROBE
+
+//
+// Filament Runout Sensor
+//
+#ifndef FIL_RUNOUT_PIN
+  #define FIL_RUNOUT_PIN                    PC15  // E0-STOP
+#endif
+
+//
+// Power-loss Detection
+//
+#ifndef POWER_LOSS_PIN
+  #define POWER_LOSS_PIN                    PC12  // Power Loss Detection: PWR-DET
+#endif
+
+#ifndef NEOPIXEL_PIN
+  #define NEOPIXEL_PIN                      PA8   // LED driving pin
+#endif
+
+#ifndef PS_ON_PIN
+  #define PS_ON_PIN                         PC13  // Power Supply Control
+#endif
+
+//
+// Steppers
+//
+#define X_ENABLE_PIN                        PB14
+#define X_STEP_PIN                          PB13
+#define X_DIR_PIN                           PB12
+
+#define Y_ENABLE_PIN                        PB11
+#define Y_STEP_PIN                          PB10
+#define Y_DIR_PIN                           PB2
+
+#define Z_ENABLE_PIN                        PB1
+#define Z_STEP_PIN                          PB0
+#define Z_DIR_PIN                           PC5
+
+#define E0_ENABLE_PIN                       PD1
+#define E0_STEP_PIN                         PB3
+#define E0_DIR_PIN                          PB4
+
+#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
+
+//
+// Temperature Sensors
+//
+#define TEMP_0_PIN                          PA0   // Analog Input "TH0"
+#define TEMP_BED_PIN                        PC4   // Analog Input "TB0"
+
+//
+// Heaters / Fans
+//
+#define HEATER_0_PIN                        PC8   // "HE"
+#define HEATER_BED_PIN                      PC9   // "HB"
+#define FAN_PIN                             PC6   // "FAN0"
+#define FAN1_PIN                            PC7   // "FAN1"
+#define FAN2_PIN                            PB15  // "FAN2"
+
+/**
+ *              SKR Mini E3 V3.0
+ *                 ------
+ *             5V | 1  2 | GND
+ *  (LCD_EN) PD6  | 3  4 | PB8  (LCD_RS)
+ *  (LCD_D4) PB9  | 5  6   PA10 (BTN_EN2)
+ *          RESET | 7  8 | PA9  (BTN_EN1)
+ * (BTN_ENC) PA15 | 9 10 | PB5  (BEEPER)
+ *                 ------ 
+ *                  EXP1
+ */
+#define EXP1_09_PIN                         PA15
+#define EXP1_03_PIN                         PD6
+
+#if EITHER(DWIN_CREALITY_LCD, IS_DWIN_MARLINUI)
+  /**
+   *        ------              ------              ------
+   *   VCC | 1  2 | GND    VCC | 1  2 | GND    GND |  2 1 | VCC
+   *     A | 3  4 | B        A | 3  4 | B        B |  4 3 | A
+   *       | 5  6   TX    BEEP | 5  6   ENT    ENT |  6 5 | BEEP
+   *       | 7  8 | RX      TX | 7  8 | RX      RX |  8 7 | TX
+   *  BEEP | 9 10 | ENT        | 9 10 |            | 10 9 |
+   *        ------              ------              ------
+   *         EXP1                DWIN             DWIN (plug)
+   *
+   * All pins are labeled as printed on DWIN PCB. Connect TX-TX, A-A and so on.
+   */
+
+  #error "DWIN_CREALITY_LCD requires a custom cable, see diagram above this line. Comment out this line to continue."
+
+  #define BEEPER_PIN                 EXP1_09_PIN
+  #define BTN_EN1                    EXP1_03_PIN
+  #define BTN_EN2                           PB8
+  #define BTN_ENC                           PB5
+
+#elif HAS_WIRED_LCD
+
+  #if ENABLED(CR10_STOCKDISPLAY)
+
+    #define BEEPER_PIN                      PB5
+    #define BTN_ENC                  EXP1_09_PIN
+
+    #define BTN_EN1                         PA9
+    #define BTN_EN2                         PA10
+
+    #define LCD_PINS_RS                     PB8
+    #define LCD_PINS_ENABLE          EXP1_03_PIN
+    #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!
+
+    #error "CAUTION! ZONESTAR_LCD requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. Comment out this line to continue."
+
+    #define LCD_PINS_RS                     PB9
+    #define LCD_PINS_ENABLE          EXP1_09_PIN
+    #define LCD_PINS_D4                     PB8
+    #define LCD_PINS_D5                     PA10
+    #define LCD_PINS_D6                     PA9
+    #define LCD_PINS_D7                     PB5
+    #define ADC_KEYPAD_PIN                  PA1   // Repurpose servo pin for ADC - CONNECTING TO 5V WILL DAMAGE THE BOARD!
+
+  #elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY)
+
+    #define BTN_ENC                  EXP1_09_PIN
+    #define BTN_EN1                         PA9
+    #define BTN_EN2                         PA10
+
+    #define DOGLCD_CS                       PB8
+    #define DOGLCD_A0                       PB9
+    #define DOGLCD_SCK                      PB5
+    #define DOGLCD_MOSI              EXP1_03_PIN
+
+    #define FORCE_SOFT_SPI
+    #define LCD_BACKLIGHT_PIN               -1
+
+  #elif IS_TFTGLCD_PANEL
+
+    #if ENABLED(TFTGLCD_PANEL_SPI)
+
+      #error "CAUTION! TFTGLCD_PANEL_SPI requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. Comment out this line to continue."
+
+      /**
+       * TFTGLCD_PANEL_SPI display pinout
+       *
+       *               Board                                        Display
+       *               ------                                       ------
+       *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK)
+       * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)     LCD_CS | 3  4 | SD_CS (PA10)
+       * (FREE)   PB9 | 5  6 | PA10 (SD_CS)                 (FREE) | 5  6 | MOSI  (SPI1-MOSI)
+       *        RESET | 7  8 | PA9  (MOD_RESET)   (PB5)     SD_DET | 7  8 | (FREE)
+       * (BEEPER) PB6 | 9 10 | PB5  (SD_DET)                   GND | 9 10 | 5V
+       *               ------                                       ------
+       *                EXP1                                         EXP1
+       *
+       * Needs custom cable:
+       *
+       *    Board             Display
+       *
+       *   EXP1-1 ----------- EXP1-10
+       *   EXP1-2 ----------- EXP1-9
+       *   SPI1-4 ----------- EXP1-6
+       *   EXP1-4 ----------- FREE
+       *   SPI1-3 ----------- EXP1-2
+       *   EXP1-6 ----------- EXP1-4
+       *   EXP1-7 ----------- FREE
+       *   EXP1-8 ----------- EXP1-3
+       *   SPI1-1 ----------- EXP1-1
+       *  EXP1-10 ----------- EXP1-7
+       */
+
+      #define TFTGLCD_CS                    PA9
+
+    #endif
+
+  #else
+    #error "Only CR10_STOCKDISPLAY, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, and TFTGLCD_PANEL_(SPI|I2C) are currently supported on the BIGTREE_SKR_MINI_E3."
+  #endif
+
+#endif // HAS_WIRED_LCD
+
+#if BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050)
+
+  #error "CAUTION! LCD_FYSETC_TFT81050 requires wiring modifications. See 'pins_BTT_SKR_MINI_E3_common.h' for details. Comment out this line to continue."
+
+  /**
+   * FYSETC TFT TFT81050 display pinout
+   *
+   *               Board                                        Display
+   *               ------                                       ------
+   *           5V | 1  2 | GND                (SPI1-MISO) MISO | 1  2 | SCK   (SPI1-SCK)
+   * (FREE)   PB7 | 3  4 | PB8  (LCD_CS)      (PA9)  MOD_RESET | 3  4 | SD_CS (PA10)
+   * (FREE)   PB9 | 5  6 | PA10 (SD_CS)       (PB8)     LCD_CS | 5  6 | MOSI  (SPI1-MOSI)
+   *        RESET | 7  8 | PA9  (MOD_RESET)   (PB5)     SD_DET | 7  8 | RESET
+   * (BEEPER) PB6 | 9 10 | PB5  (SD_DET)                   GND | 9 10 | 5V
+   *               ------                                       ------
+   *                EXP1                                         EXP1
+   *
+   * Needs custom cable:
+   *
+   *    Board   Adapter   Display
+   *           _________
+   *   EXP1-1 ----------- EXP1-10
+   *   EXP1-2 ----------- EXP1-9
+   *   SPI1-4 ----------- EXP1-6
+   *   EXP1-4 ----------- EXP1-5
+   *   SPI1-3 ----------- EXP1-2
+   *   EXP1-6 ----------- EXP1-4
+   *   EXP1-7 ----------- EXP1-8
+   *   EXP1-8 ----------- EXP1-3
+   *   SPI1-1 ----------- EXP1-1
+   *  EXP1-10 ----------- EXP1-7
+   */
+
+  #define CLCD_SPI_BUS                         1  // SPI1 connector
+
+  #define BEEPER_PIN                 EXP1_09_PIN
+
+  #define CLCD_MOD_RESET                    PA9
+  #define CLCD_SPI_CS                       PB8
+
+#endif // TOUCH_UI_FTDI_EVE && LCD_FYSETC_TFT81050
+
+//
+// SD Support
+//
+
+#ifndef SDCARD_CONNECTION
+  #define SDCARD_CONNECTION              ONBOARD
+#endif
+
+#if SD_CONNECTION_IS(ONBOARD)
+  #define SD_DETECT_PIN                     PC3
+#elif SD_CONNECTION_IS(LCD) && (BOTH(TOUCH_UI_FTDI_EVE, LCD_FYSETC_TFT81050) || IS_TFTGLCD_PANEL)
+  #define SD_DETECT_PIN                     PB5
+  #define SD_SS_PIN                         PA10
+#elif SD_CONNECTION_IS(CUSTOM_CABLE)
+  #error "SD CUSTOM_CABLE is not compatible with SKR Mini E3."
+#endif
+
+#define ONBOARD_SPI_DEVICE                     1  // SPI1 -> used only by HAL/STM32F1...
+#define ONBOARD_SD_CS_PIN                   PA4   // Chip select for "System" SD card
+
+#define ENABLE_SPI1
+#define SDSS                   ONBOARD_SD_CS_PIN
+#define SD_SS_PIN              ONBOARD_SD_CS_PIN
+#define SD_SCK_PIN                          PA5
+#define SD_MISO_PIN                         PA6
+#define SD_MOSI_PIN                         PA7

Some files were not shown because too many files changed in this diff