BTT SKR V2.0 / Stepper Driver Anti-Reverse Protection (#21503)
This commit is contained in:
		
				
					committed by
					
						 Scott Lahteine
						Scott Lahteine
					
				
			
			
				
	
			
			
			
						parent
						
							8a8aeba17c
						
					
				
				
					commit
					4da3f45f41
				
			| @@ -3387,6 +3387,15 @@ | ||||
|   #define POWER_MONITOR_VOLTAGE_OFFSET  0         // Offset (in volts) applied to the calculated voltage | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * Stepper Driver Anti-SNAFU Protection | ||||
|  * | ||||
|  * If the SAFE_POWER_PIN is defined for your board, Marlin will check | ||||
|  * that stepper drivers are properly plugged in before applying power. | ||||
|  * Disable protection if your stepper drivers don't support the feature. | ||||
|  */ | ||||
| //#define DISABLE_DRIVER_SAFE_POWER_PROTECT | ||||
|  | ||||
| /** | ||||
|  * CNC Coordinate Systems | ||||
|  * | ||||
|   | ||||
| @@ -232,6 +232,10 @@ | ||||
|   #include "lcd/extui/lib/dgus/DGUSScreenHandler.h" | ||||
| #endif | ||||
|  | ||||
| #if HAS_DRIVER_SAFE_POWER_PROTECT | ||||
|   #include "feature/stepper_driver_safety.h" | ||||
| #endif | ||||
|  | ||||
| PGMSTR(M112_KILL_STR, "M112 Shutdown"); | ||||
|  | ||||
| MarlinState marlin_state = MF_INITIALIZING; | ||||
| @@ -1223,6 +1227,15 @@ void setup() { | ||||
|     SETUP_RUN(ui.reset_status());     // Load welcome message early. (Retained if no errors exist.) | ||||
|   #endif | ||||
|  | ||||
|   #if PIN_EXISTS(SAFE_POWER) | ||||
|     #if HAS_DRIVER_SAFE_POWER_PROTECT | ||||
|       SETUP_RUN(stepper_driver_backward_check()); | ||||
|     #else | ||||
|       SETUP_LOG("SAFE_POWER"); | ||||
|       OUT_WRITE(SAFE_POWER_PIN, HIGH); | ||||
|     #endif | ||||
|   #endif | ||||
|  | ||||
|   #if ENABLED(PROBE_TARE) | ||||
|     SETUP_RUN(probe.tare_init()); | ||||
|   #endif | ||||
| @@ -1467,6 +1480,10 @@ void setup() { | ||||
|     SETUP_RUN(test_tmc_connection(true, true, true, true)); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_DRIVER_SAFE_POWER_PROTECT | ||||
|     SETUP_RUN(stepper_driver_backward_report()); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_PRUSA_MMU2 | ||||
|     SETUP_RUN(mmu2.init()); | ||||
|   #endif | ||||
|   | ||||
| @@ -363,25 +363,26 @@ | ||||
| #define BOARD_BLACK_STM32F407VE       4204  // BLACK_STM32F407VE | ||||
| #define BOARD_BLACK_STM32F407ZE       4205  // BLACK_STM32F407ZE | ||||
| #define BOARD_STEVAL_3DP001V1         4206  // STEVAL-3DP001V1 3D PRINTER BOARD | ||||
| #define BOARD_BTT_SKR_PRO_V1_1        4207  // BigTreeTech SKR Pro v1.1 (STM32F407ZG) | ||||
| #define BOARD_BTT_SKR_PRO_V1_2        4208  // BigTreeTech SKR Pro v1.2 (STM32F407ZG) | ||||
| #define BOARD_BTT_BTT002_V1_0         4209  // BigTreeTech BTT002 v1.0 (STM32F407VG) | ||||
| #define BOARD_BTT_SKR_PRO_V1_1        4207  // BigTreeTech SKR Pro v1.1 (STM32F407ZGT6) | ||||
| #define BOARD_BTT_SKR_PRO_V1_2        4208  // BigTreeTech SKR Pro v1.2 (STM32F407ZGT6) | ||||
| #define BOARD_BTT_BTT002_V1_0         4209  // BigTreeTech BTT002 v1.0 (STM32F407VGT6) | ||||
| #define BOARD_BTT_E3_RRF              4210  // BigTreeTech E3 RRF (STM32F407VGT6) | ||||
| #define BOARD_BTT_GTR_V1_0            4211  // BigTreeTech GTR v1.0 (STM32F407IGT) | ||||
| #define BOARD_LERDGE_K                4212  // Lerdge K (STM32F407ZG) | ||||
| #define BOARD_LERDGE_S                4213  // Lerdge S (STM32F407VE) | ||||
| #define BOARD_LERDGE_X                4214  // Lerdge X (STM32F407VE) | ||||
| #define BOARD_VAKE403D                4215  // VAkE 403D (STM32F446VET6) | ||||
| #define BOARD_FYSETC_S6               4216  // FYSETC S6 (STM32F446VET6) | ||||
| #define BOARD_FYSETC_S6_V2_0          4217  // FYSETC S6 v2.0 (STM32F446VET6) | ||||
| #define BOARD_FYSETC_SPIDER           4218  // FYSETC Spider (STM32F446VET6) | ||||
| #define BOARD_FLYF407ZG               4219  // FLYF407ZG (STM32F407ZG) | ||||
| #define BOARD_MKS_ROBIN2              4220  // MKS_ROBIN2 (STM32F407ZE) | ||||
| #define BOARD_MKS_ROBIN_PRO_V2        4221  // MKS Robin Pro V2 (STM32F407VE) | ||||
| #define BOARD_MKS_ROBIN_NANO_V3       4222  // MKS Robin Nano V3 (STM32F407VG) | ||||
| #define BOARD_ANET_ET4                4223  // ANET ET4 V1.x (STM32F407VGT6) | ||||
| #define BOARD_ANET_ET4P               4224  // ANET ET4P V1.x (STM32F407VGT6) | ||||
| #define BOARD_FYSETC_CHEETAH_V20      4225  // FYSETC Cheetah V2.0 | ||||
| #define BOARD_BTT_SKR_V2_0            4211  // BigTreeTech SKR v2.0 (STM32F407VGT6) | ||||
| #define BOARD_BTT_GTR_V1_0            4212  // BigTreeTech GTR v1.0 (STM32F407IGT) | ||||
| #define BOARD_LERDGE_K                4213  // Lerdge K (STM32F407ZG) | ||||
| #define BOARD_LERDGE_S                4214  // Lerdge S (STM32F407VE) | ||||
| #define BOARD_LERDGE_X                4215  // Lerdge X (STM32F407VE) | ||||
| #define BOARD_VAKE403D                4216  // VAkE 403D (STM32F446VET6) | ||||
| #define BOARD_FYSETC_S6               4217  // FYSETC S6 (STM32F446VET6) | ||||
| #define BOARD_FYSETC_S6_V2_0          4218  // FYSETC S6 v2.0 (STM32F446VET6) | ||||
| #define BOARD_FYSETC_SPIDER           4219  // FYSETC Spider (STM32F446VET6) | ||||
| #define BOARD_FLYF407ZG               4220  // FLYF407ZG (STM32F407ZG) | ||||
| #define BOARD_MKS_ROBIN2              4221  // MKS_ROBIN2 (STM32F407ZE) | ||||
| #define BOARD_MKS_ROBIN_PRO_V2        4222  // MKS Robin Pro V2 (STM32F407VE) | ||||
| #define BOARD_MKS_ROBIN_NANO_V3       4223  // MKS Robin Nano V3 (STM32F407VG) | ||||
| #define BOARD_ANET_ET4                4224  // ANET ET4 V1.x (STM32F407VGT6) | ||||
| #define BOARD_ANET_ET4P               4225 // ANET ET4P V1.x (STM32F407VGT6) | ||||
| #define BOARD_FYSETC_CHEETAH_V20      4226  // FYSETC Cheetah V2.0 | ||||
|  | ||||
| // | ||||
| // ARM Cortex M7 | ||||
|   | ||||
							
								
								
									
										171
									
								
								Marlin/src/feature/stepper_driver_safety.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										171
									
								
								Marlin/src/feature/stepper_driver_safety.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,171 @@ | ||||
| /** | ||||
|  * 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/>. | ||||
|  * | ||||
|  */ | ||||
| #include "../inc/MarlinConfig.h" | ||||
| #include "../lcd/marlinui.h" | ||||
|  | ||||
| #if HAS_DRIVER_SAFE_POWER_PROTECT | ||||
|  | ||||
| #include "stepper_driver_safety.h" | ||||
|  | ||||
| static uint32_t axis_plug_backward = 0; | ||||
|  | ||||
| void stepper_driver_backward_error(PGM_P str) { | ||||
|   SERIAL_ERROR_START(); | ||||
|   SERIAL_ECHOPGM_P(str); | ||||
|   SERIAL_ECHOLNPGM(" driver is backward!"); | ||||
|   ui.status_printf_P(2, PSTR(S_FMT S_FMT), str, GET_TEXT(MSG_DRIVER_BACKWARD)); | ||||
| } | ||||
|  | ||||
| void stepper_driver_backward_check() { | ||||
|  | ||||
|   OUT_WRITE(SAFE_POWER_PIN, LOW); | ||||
|  | ||||
|   #define TEST_BACKWARD(AXIS, BIT) do { \ | ||||
|       SET_INPUT(AXIS##_ENABLE_PIN); \ | ||||
|       OUT_WRITE(AXIS##_STEP_PIN, false); \ | ||||
|       delay(20); \ | ||||
|       if (READ(AXIS##_ENABLE_PIN) == false) { \ | ||||
|         SBI(axis_plug_backward, BIT); \ | ||||
|         stepper_driver_backward_error(PSTR(STRINGIFY(AXIS))); \ | ||||
|       } \ | ||||
|     }while(0) | ||||
|  | ||||
|   #if HAS_X_ENABLE | ||||
|     TEST_BACKWARD(X, 0); | ||||
|   #endif | ||||
|   #if HAS_X2_ENABLE | ||||
|     TEST_BACKWARD(X2, 1); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_Y_ENABLE | ||||
|     TEST_BACKWARD(Y, 2); | ||||
|   #endif | ||||
|   #if HAS_Y2_ENABLE | ||||
|     TEST_BACKWARD(Y2, 3); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_Z_ENABLE | ||||
|     TEST_BACKWARD(Z, 4); | ||||
|   #endif | ||||
|   #if HAS_Z2_ENABLE | ||||
|     TEST_BACKWARD(Z2, 5); | ||||
|   #endif | ||||
|   #if HAS_Z3_ENABLE | ||||
|     TEST_BACKWARD(Z3, 6); | ||||
|   #endif | ||||
|   #if HAS_Z4_ENABLE | ||||
|     TEST_BACKWARD(Z4, 7); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_E0_ENABLE | ||||
|     TEST_BACKWARD(E0, 8); | ||||
|   #endif | ||||
|   #if HAS_E1_ENABLE | ||||
|     TEST_BACKWARD(E1, 9); | ||||
|   #endif | ||||
|   #if HAS_E2_ENABLE | ||||
|     TEST_BACKWARD(E2, 10); | ||||
|   #endif | ||||
|   #if HAS_E3_ENABLE | ||||
|     TEST_BACKWARD(E3, 11); | ||||
|   #endif | ||||
|   #if HAS_E4_ENABLE | ||||
|     TEST_BACKWARD(E4, 12); | ||||
|   #endif | ||||
|   #if HAS_E5_ENABLE | ||||
|     TEST_BACKWARD(E5, 13); | ||||
|   #endif | ||||
|   #if HAS_E6_ENABLE | ||||
|     TEST_BACKWARD(E6, 14); | ||||
|   #endif | ||||
|   #if HAS_E7_ENABLE | ||||
|     TEST_BACKWARD(E7, 15); | ||||
|   #endif | ||||
|  | ||||
|   if (!axis_plug_backward) | ||||
|     WRITE(SAFE_POWER_PIN, HIGH); | ||||
| } | ||||
|  | ||||
| void stepper_driver_backward_report() { | ||||
|   if (!axis_plug_backward) return; | ||||
|  | ||||
|   auto _report_if_backward = [](PGM_P axis, uint8_t bit) { | ||||
|     if (TEST(axis_plug_backward, bit)) | ||||
|       stepper_driver_backward_error(axis); | ||||
|   }; | ||||
|  | ||||
|   #define REPORT_BACKWARD(axis, bit) _report_if_backward(PSTR(STRINGIFY(axis)), bit) | ||||
|  | ||||
|   #if HAS_X_ENABLE | ||||
|     REPORT_BACKWARD(X, 0); | ||||
|   #endif | ||||
|   #if HAS_X2_ENABLE | ||||
|     REPORT_BACKWARD(X2, 1); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_Y_ENABLE | ||||
|     REPORT_BACKWARD(Y, 2); | ||||
|   #endif | ||||
|   #if HAS_Y2_ENABLE | ||||
|     REPORT_BACKWARD(Y2, 3); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_Z_ENABLE | ||||
|     REPORT_BACKWARD(Z, 4); | ||||
|   #endif | ||||
|   #if HAS_Z2_ENABLE | ||||
|     REPORT_BACKWARD(Z2, 5); | ||||
|   #endif | ||||
|   #if HAS_Z3_ENABLE | ||||
|     REPORT_BACKWARD(Z3, 6); | ||||
|   #endif | ||||
|   #if HAS_Z4_ENABLE | ||||
|     REPORT_BACKWARD(Z4, 7); | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_E0_ENABLE | ||||
|     REPORT_BACKWARD(E0, 8); | ||||
|   #endif | ||||
|   #if HAS_E1_ENABLE | ||||
|     REPORT_BACKWARD(E1, 9); | ||||
|   #endif | ||||
|   #if HAS_E2_ENABLE | ||||
|     REPORT_BACKWARD(E2, 10); | ||||
|   #endif | ||||
|   #if HAS_E3_ENABLE | ||||
|     REPORT_BACKWARD(E3, 11); | ||||
|   #endif | ||||
|   #if HAS_E4_ENABLE | ||||
|     REPORT_BACKWARD(E4, 12); | ||||
|   #endif | ||||
|   #if HAS_E5_ENABLE | ||||
|     REPORT_BACKWARD(E5, 13); | ||||
|   #endif | ||||
|   #if HAS_E6_ENABLE | ||||
|     REPORT_BACKWARD(E6, 14); | ||||
|   #endif | ||||
|   #if HAS_E7_ENABLE | ||||
|     REPORT_BACKWARD(E7, 15); | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| #endif // HAS_DRIVER_SAFE_POWER_PROTECT | ||||
							
								
								
									
										28
									
								
								Marlin/src/feature/stepper_driver_safety.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Marlin/src/feature/stepper_driver_safety.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| /** | ||||
|  * 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 | ||||
|  | ||||
|  | ||||
| #include "../inc/MarlinConfigPre.h" | ||||
|  | ||||
| void stepper_driver_backward_check(); | ||||
| void stepper_driver_backward_report(); | ||||
| @@ -3042,3 +3042,7 @@ | ||||
| #if BUTTONS_EXIST(EN1, EN2, ENC) | ||||
|   #define HAS_ROTARY_ENCODER 1 | ||||
| #endif | ||||
|  | ||||
| #if PIN_EXISTS(SAFE_POWER) && DISABLED(DISABLE_DRIVER_SAFE_POWER_PROTECT) | ||||
|   #define HAS_DRIVER_SAFE_POWER_PROTECT 1 | ||||
| #endif | ||||
|   | ||||
| @@ -706,6 +706,8 @@ namespace Language_en { | ||||
|   PROGMEM Language_Str MSG_BOTTOM_RIGHT                    = _UxGT("Bottom Right"); | ||||
|   PROGMEM Language_Str MSG_CALIBRATION_COMPLETED           = _UxGT("Calibration Completed"); | ||||
|   PROGMEM Language_Str MSG_CALIBRATION_FAILED              = _UxGT("Calibration Failed"); | ||||
|  | ||||
|   PROGMEM Language_Str MSG_DRIVER_BACKWARD                 = _UxGT(" driver backward"); | ||||
| } | ||||
|  | ||||
| #if FAN_COUNT == 1 | ||||
|   | ||||
| @@ -596,6 +596,8 @@ | ||||
|   #include "stm32f4/pins_BTT_BTT002_V1_0.h"     // STM32F4                                env:BIGTREE_BTT002 | ||||
| #elif MB(BTT_E3_RRF) | ||||
|   #include "stm32f4/pins_BTT_E3_RRF.h"          // STM32F4                                env:BIGTREE_E3_RRF | ||||
| #elif MB(BTT_SKR_V2_0) | ||||
|   #include "stm32f4/pins_BTT_SKR_V2_0.h"        // STM32F4                                env:BIGTREE_SKR_2 | ||||
| #elif MB(LERDGE_K) | ||||
|   #include "stm32f4/pins_LERDGE_K.h"            // STM32F4                                env:LERDGEK env:LERDGEK_usb_flash_drive | ||||
| #elif MB(LERDGE_S) | ||||
|   | ||||
							
								
								
									
										495
									
								
								Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										495
									
								
								Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,495 @@ | ||||
| /** | ||||
|  * 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 | ||||
|  | ||||
| #include "env_validate.h" | ||||
|  | ||||
| #define BOARD_INFO_NAME "BTT SKR V2.0" | ||||
|  | ||||
| // Use one of these or SDCard-based Emulation will be used | ||||
| #if NO_EEPROM_SELECTED | ||||
|   //#define SRAM_EEPROM_EMULATION                 // Use BackSRAM-based EEPROM emulation | ||||
|   #define FLASH_EEPROM_EMULATION                  // Use Flash-based EEPROM emulation | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(FLASH_EEPROM_EMULATION) | ||||
|   // Decrease delays and flash wear by spreading writes across the | ||||
|   // 128 kB sector allocated for EEPROM emulation. | ||||
|   #define FLASH_EEPROM_LEVELING | ||||
| #endif | ||||
|  | ||||
| // USB Flash Drive support | ||||
| #define HAS_OTG_USB_HOST_SUPPORT | ||||
|  | ||||
| // Avoid conflict with TIMER_TONE | ||||
| #define STEP_TIMER                            10 | ||||
|  | ||||
| // | ||||
| // Servos | ||||
| // | ||||
| #define SERVO0_PIN                          PE5 | ||||
|  | ||||
| // | ||||
| // Trinamic Stallguard pins | ||||
| // | ||||
| #define X_DIAG_PIN                          PC1   // X-STOP | ||||
| #define Y_DIAG_PIN                          PC3   // Y-STOP | ||||
| #define Z_DIAG_PIN                          PC0   // Z-STOP | ||||
| #define E0_DIAG_PIN                         PC2   // E0DET | ||||
| #define E1_DIAG_PIN                         PA0   // E1DET | ||||
|  | ||||
| // | ||||
| // Limit Switches | ||||
| // | ||||
| #ifdef X_STALL_SENSITIVITY | ||||
|   #define X_STOP_PIN                  X_DIAG_PIN | ||||
|   #if X_HOME_DIR < 0 | ||||
|     #define X_MAX_PIN                       PC2   // E0DET | ||||
|   #else | ||||
|     #define X_MIN_PIN                       PC2   // E0DET | ||||
|   #endif | ||||
| #elif ENABLED(X_DUAL_ENDSTOPS) | ||||
|   #ifndef X_MIN_PIN | ||||
|     #define X_MIN_PIN                       PC1   // X-STOP | ||||
|   #endif | ||||
|   #ifndef X_MAX_PIN | ||||
|     #define X_MAX_PIN                       PC2   // E0DET | ||||
|   #endif | ||||
| #else | ||||
|   #define X_STOP_PIN                        PC1   // X-STOP | ||||
| #endif | ||||
|  | ||||
| #ifdef Y_STALL_SENSITIVITY | ||||
|   #define Y_STOP_PIN                  Y_DIAG_PIN | ||||
|   #if Y_HOME_DIR < 0 | ||||
|     #define Y_MAX_PIN                       PA0   // E1DET | ||||
|   #else | ||||
|     #define Y_MIN_PIN                       PA0   // E1DET | ||||
|   #endif | ||||
| #elif ENABLED(Y_DUAL_ENDSTOPS) | ||||
|   #ifndef Y_MIN_PIN | ||||
|     #define Y_MIN_PIN                       PC3   // Y-STOP | ||||
|   #endif | ||||
|   #ifndef Y_MAX_PIN | ||||
|     #define Y_MAX_PIN                       PA0   // E1DET | ||||
|   #endif | ||||
| #else | ||||
|   #define Y_STOP_PIN                        PC3   // Y-STOP | ||||
| #endif | ||||
|  | ||||
| #ifdef Z_STALL_SENSITIVITY | ||||
|   #define Z_STOP_PIN                  Z_DIAG_PIN | ||||
|   #if Z_HOME_DIR < 0 | ||||
|     #define Z_MAX_PIN                       PC15  // PWRDET | ||||
|   #else | ||||
|     #define Z_MIN_PIN                       PC15  // PWRDET | ||||
|   #endif | ||||
| #elif ENABLED(Z_MULTI_ENDSTOPS) | ||||
|   #ifndef Z_MIN_PIN | ||||
|     #define Z_MIN_PIN                       PC0   // Z-STOP | ||||
|   #endif | ||||
|   #ifndef Z_MAX_PIN | ||||
|     #define Z_MAX_PIN                       PC15  // PWRDET | ||||
|   #endif | ||||
| #else | ||||
|   #ifndef Z_STOP_PIN | ||||
|     #define Z_STOP_PIN                      PC0   // Z-STOP | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Z Probe (when not Z_MIN_PIN) | ||||
| // | ||||
| #ifndef Z_MIN_PROBE_PIN | ||||
|   #define Z_MIN_PROBE_PIN                   PE4 | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Filament Runout Sensor | ||||
| // | ||||
| #define FIL_RUNOUT_PIN                      PC2   // E0DET | ||||
| #define FIL_RUNOUT2_PIN                     PA0   // E1DET | ||||
|  | ||||
| // | ||||
| // Power Supply Control | ||||
| // | ||||
| #ifndef PS_ON_PIN | ||||
|   #define PS_ON_PIN                         PE8   // PS-ON | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Power Loss Detection | ||||
| // | ||||
| #ifndef POWER_LOSS_PIN | ||||
|   #define POWER_LOSS_PIN                    PC15  // PWRDET | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // NeoPixel LED | ||||
| // | ||||
| #ifndef NEOPIXEL_PIN | ||||
|   #define NEOPIXEL_PIN                      PE6 | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Control pin of driver/heater/fan power supply | ||||
| // | ||||
| #define SAFE_POWER_PIN                      PC13 | ||||
|  | ||||
| // | ||||
| // Steppers | ||||
| // | ||||
| #define X_STEP_PIN                          PE2 | ||||
| #define X_DIR_PIN                           PE1 | ||||
| #define X_ENABLE_PIN                        PE3 | ||||
| #ifndef X_CS_PIN | ||||
|   #define X_CS_PIN                          PE0 | ||||
| #endif | ||||
|  | ||||
| #define Y_STEP_PIN                          PD5 | ||||
| #define Y_DIR_PIN                           PD4 | ||||
| #define Y_ENABLE_PIN                        PD6 | ||||
| #ifndef Y_CS_PIN | ||||
|   #define Y_CS_PIN                          PD3 | ||||
| #endif | ||||
|  | ||||
| #define Z_STEP_PIN                          PA15 | ||||
| #define Z_DIR_PIN                           PA8 | ||||
| #define Z_ENABLE_PIN                        PD1 | ||||
| #ifndef Z_CS_PIN | ||||
|   #define Z_CS_PIN                          PD0 | ||||
| #endif | ||||
|  | ||||
| #define E0_STEP_PIN                         PD15 | ||||
| #define E0_DIR_PIN                          PD14 | ||||
| #define E0_ENABLE_PIN                       PC7 | ||||
| #ifndef E0_CS_PIN | ||||
|   #define E0_CS_PIN                         PC6 | ||||
| #endif | ||||
|  | ||||
| #define E1_STEP_PIN                         PD11 | ||||
| #define E1_DIR_PIN                          PD10 | ||||
| #define E1_ENABLE_PIN                       PD13 | ||||
| #ifndef E1_CS_PIN | ||||
|   #define E1_CS_PIN                         PD12 | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // Temperature Sensors | ||||
| // | ||||
| #define TEMP_BED_PIN                        PA1   // TB | ||||
| #define TEMP_0_PIN                          PA2   // TH0 | ||||
| #define TEMP_1_PIN                          PA3   // TH1 | ||||
|  | ||||
| // | ||||
| // Heaters / Fans | ||||
| // | ||||
| #define HEATER_0_PIN                        PB3   // Heater0 | ||||
| #define HEATER_1_PIN                        PB4   // Heater1 | ||||
| #define HEATER_BED_PIN                      PD7   // Hotbed | ||||
| #define FAN_PIN                             PB7   // Fan0 | ||||
| #define FAN1_PIN                            PB6   // Fan1 | ||||
| #define FAN2_PIN                            PB5   // Fan2 | ||||
|  | ||||
| // | ||||
| // Software SPI pins for TMC2130 stepper drivers | ||||
| // | ||||
| #if ENABLED(TMC_USE_SW_SPI) | ||||
|   #ifndef TMC_SW_MOSI | ||||
|     #define TMC_SW_MOSI                     PE14 | ||||
|   #endif | ||||
|   #ifndef TMC_SW_MISO | ||||
|     #define TMC_SW_MISO                     PA14 | ||||
|   #endif | ||||
|   #ifndef TMC_SW_SCK | ||||
|     #define TMC_SW_SCK                      PE15 | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #if HAS_TMC_UART | ||||
|   /** | ||||
|    * TMC2208/TMC2209 stepper drivers | ||||
|    * | ||||
|    * Hardware serial communication ports. | ||||
|    * If undefined software serial is used according to the pins below | ||||
|    */ | ||||
|   //#define X_HARDWARE_SERIAL  Serial1 | ||||
|   //#define X2_HARDWARE_SERIAL Serial1 | ||||
|   //#define Y_HARDWARE_SERIAL  Serial1 | ||||
|   //#define Y2_HARDWARE_SERIAL Serial1 | ||||
|   //#define Z_HARDWARE_SERIAL  Serial1 | ||||
|   //#define Z2_HARDWARE_SERIAL Serial1 | ||||
|   //#define E0_HARDWARE_SERIAL Serial1 | ||||
|   //#define E1_HARDWARE_SERIAL Serial1 | ||||
|   //#define E2_HARDWARE_SERIAL Serial1 | ||||
|   //#define E3_HARDWARE_SERIAL Serial1 | ||||
|   //#define E4_HARDWARE_SERIAL Serial1 | ||||
|  | ||||
|   // | ||||
|   // Software serial | ||||
|   // | ||||
|   #define X_SERIAL_TX_PIN                   PE0 | ||||
|   #define X_SERIAL_RX_PIN                   PE0 | ||||
|  | ||||
|   #define Y_SERIAL_TX_PIN                   PD3 | ||||
|   #define Y_SERIAL_RX_PIN                   PD3 | ||||
|  | ||||
|   #define Z_SERIAL_TX_PIN                   PD0 | ||||
|   #define Z_SERIAL_RX_PIN                   PD0 | ||||
|  | ||||
|   #define E0_SERIAL_TX_PIN                  PC6 | ||||
|   #define E0_SERIAL_RX_PIN                  PC6 | ||||
|  | ||||
|   #define E1_SERIAL_TX_PIN                  PD12 | ||||
|   #define E1_SERIAL_RX_PIN                  PD12 | ||||
|  | ||||
|   // Reduce baud rate to improve software serial reliability | ||||
|   #define TMC_BAUD_RATE                    19200 | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // SD Connection | ||||
| // | ||||
| #ifndef SDCARD_CONNECTION | ||||
|   #define SDCARD_CONNECTION LCD | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  *               -----                                             ----- | ||||
|  *           NC | 1 2 | GND                                    5V | 1 2 | GND | ||||
|  *        RESET | 3 4 | PC4 (SD_DETECT)             (LCD_D7) PE13 | 3 4 | PE12 (LCD_D6) | ||||
|  *   (MOSI) PA7 | 5 6   PB2 (BTN_EN2)               (LCD_D5) PE11 | 5 6   PE10 (LCD_D4) | ||||
|  *  (SD_SS) PA4 | 7 8 | PE7 (BTN_EN1)               (LCD_RS)  PE9 | 7 8 | PB1  (LCD_EN) | ||||
|  *    (SCK) PA5 | 9 10| PA6 (MISO)                 (BTN_ENC)  PB0 | 9 10| PC5  (BEEPER) | ||||
|  *               -----                                             ----- | ||||
|  *               EXP2                                              EXP1 | ||||
|  */ | ||||
|  | ||||
| #define EXP1_03_PIN                         PE13 | ||||
| #define EXP1_04_PIN                         PE12 | ||||
| #define EXP1_05_PIN                         PE11 | ||||
| #define EXP1_06_PIN                         PE10 | ||||
| #define EXP1_07_PIN                         PE9 | ||||
| #define EXP1_08_PIN                         PB1 | ||||
| #define EXP1_09_PIN                         PB0 | ||||
| #define EXP1_10_PIN                         PC5 | ||||
|  | ||||
| #define EXP2_03_PIN                         -1 | ||||
| #define EXP2_04_PIN                         PC4 | ||||
| #define EXP2_05_PIN                         PA7 | ||||
| #define EXP2_06_PIN                         PB2 | ||||
| #define EXP2_07_PIN                         PA4 | ||||
| #define EXP2_08_PIN                         PE7 | ||||
| #define EXP2_09_PIN                         PA5 | ||||
| #define EXP2_10_PIN                         PA6 | ||||
|  | ||||
| // | ||||
| // Onboard SD card | ||||
| // Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 | ||||
| // | ||||
| #if SD_CONNECTION_IS(ONBOARD) | ||||
|  | ||||
|   #define SDIO_SUPPORT                            // Use SDIO for onboard SD | ||||
|   #define SDIO_D0_PIN                       PC8 | ||||
|   #define SDIO_D1_PIN                       PC9 | ||||
|   #define SDIO_D2_PIN                       PC10 | ||||
|   #define SDIO_D3_PIN                       PC11 | ||||
|   #define SDIO_CK_PIN                       PC12 | ||||
|   #define SDIO_CMD_PIN                      PD2 | ||||
|  | ||||
| #elif SD_CONNECTION_IS(LCD) | ||||
|  | ||||
|   #define CUSTOM_SPI_PINS | ||||
|   #define SDSS                              PA4 | ||||
|   #define SD_SS_PIN                         SDSS | ||||
|   #define SD_SCK_PIN                        PA5 | ||||
|   #define SD_MISO_PIN                       PA6 | ||||
|   #define SD_MOSI_PIN                       PA7 | ||||
|   #define SD_DETECT_PIN                     PC4 | ||||
|  | ||||
| #elif SD_CONNECTION_IS(CUSTOM_CABLE) | ||||
|   #error "CUSTOM_CABLE is not a supported SDCARD_CONNECTION for this board" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(BTT_MOTOR_EXPANSION) | ||||
|   /** | ||||
|    *               _____                                      _____ | ||||
|    *           NC | · · | GND                             NC | · · | GND | ||||
|    *           NC | · · | PF12 (M1EN)            (M2EN)  PG7 | · · | PG6  (M3EN) | ||||
|    * (M1STP) PB15 | · ·   PF11 (M1DIR)           (M1RX)  PG3 | · ·   PG2  (M1DIAG) | ||||
|    * (M2DIR) PB12 | · · | PG10 (M2STP)           (M2RX) PD10 | · · | PD11 (M2DIAG) | ||||
|    * (M3DIR) PB13 | · · | PB14 (M3STP)           (M3RX)  PA8 | · · | PG4  (M3DIAG) | ||||
|    *               -----                                      ----- | ||||
|    *               EXP2                                       EXP1 | ||||
|    */ | ||||
|  | ||||
|   // M1 on Driver Expansion Module | ||||
|   #define E3_STEP_PIN                EXP2_05_PIN | ||||
|   #define E3_DIR_PIN                 EXP2_06_PIN | ||||
|   #define E3_ENABLE_PIN              EXP2_04_PIN | ||||
|   #define E3_DIAG_PIN                EXP1_06_PIN | ||||
|   #define E3_CS_PIN                  EXP1_05_PIN | ||||
|   #if HAS_TMC_UART | ||||
|     #define E3_SERIAL_TX_PIN         EXP1_05_PIN | ||||
|     #define E3_SERIAL_RX_PIN         EXP1_05_PIN | ||||
|   #endif | ||||
|  | ||||
|   // M2 on Driver Expansion Module | ||||
|   #define E4_STEP_PIN                EXP2_08_PIN | ||||
|   #define E4_DIR_PIN                 EXP2_07_PIN | ||||
|   #define E4_ENABLE_PIN              EXP1_03_PIN | ||||
|   #define E4_DIAG_PIN                EXP1_08_PIN | ||||
|   #define E4_CS_PIN                  EXP1_07_PIN | ||||
|   #if HAS_TMC_UART | ||||
|     #define E4_SERIAL_TX_PIN         EXP1_07_PIN | ||||
|     #define E4_SERIAL_RX_PIN         EXP1_07_PIN | ||||
|   #endif | ||||
|  | ||||
|   // M3 on Driver Expansion Module | ||||
|   #define E5_STEP_PIN                EXP2_10_PIN | ||||
|   #define E5_DIR_PIN                 EXP2_09_PIN | ||||
|   #define E5_ENABLE_PIN              EXP1_04_PIN | ||||
|   #define E5_DIAG_PIN                EXP1_10_PIN | ||||
|   #define E5_CS_PIN                  EXP1_09_PIN | ||||
|   #if HAS_TMC_UART | ||||
|     #define E5_SERIAL_TX_PIN         EXP1_09_PIN | ||||
|     #define E5_SERIAL_RX_PIN         EXP1_09_PIN | ||||
|   #endif | ||||
|  | ||||
| #endif // BTT_MOTOR_EXPANSION | ||||
|  | ||||
| // | ||||
| // LCDs and Controllers | ||||
| // | ||||
| #if IS_TFTGLCD_PANEL | ||||
|  | ||||
|   #if ENABLED(TFTGLCD_PANEL_SPI) | ||||
|     #define TFTGLCD_CS               EXP2_08_PIN | ||||
|   #endif | ||||
|  | ||||
| #elif HAS_WIRED_LCD | ||||
|  | ||||
|   #define BEEPER_PIN                 EXP1_10_PIN | ||||
|   #define BTN_ENC                    EXP1_09_PIN | ||||
|  | ||||
|   #if ENABLED(CR10_STOCKDISPLAY) | ||||
|  | ||||
|     #define LCD_PINS_RS              EXP1_04_PIN | ||||
|  | ||||
|     #define BTN_EN1                  EXP1_08_PIN | ||||
|     #define BTN_EN2                  EXP1_06_PIN | ||||
|  | ||||
|     #define LCD_PINS_ENABLE          EXP1_03_PIN | ||||
|     #define LCD_PINS_D4              EXP1_05_PIN | ||||
|  | ||||
|     // CR10_STOCKDISPLAY default timing is too fast | ||||
|     #undef BOARD_ST7920_DELAY_1 | ||||
|     #undef BOARD_ST7920_DELAY_2 | ||||
|     #undef BOARD_ST7920_DELAY_3 | ||||
|  | ||||
|   #elif ENABLED(MKS_MINI_12864) | ||||
|  | ||||
|     #define DOGLCD_A0                EXP1_04_PIN | ||||
|     #define DOGLCD_CS                EXP1_05_PIN | ||||
|     #define BTN_EN1                  EXP2_08_PIN | ||||
|     #define BTN_EN2                  EXP2_06_PIN | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define LCD_PINS_RS              EXP1_07_PIN | ||||
|  | ||||
|     #define BTN_EN1                  EXP2_08_PIN | ||||
|     #define BTN_EN2                  EXP2_06_PIN | ||||
|  | ||||
|     #define LCD_PINS_ENABLE          EXP1_08_PIN | ||||
|     #define LCD_PINS_D4              EXP1_06_PIN | ||||
|  | ||||
|     #if ENABLED(FYSETC_MINI_12864) | ||||
|       #define DOGLCD_CS              EXP1_08_PIN | ||||
|       #define DOGLCD_A0              EXP1_07_PIN | ||||
|       //#define LCD_BACKLIGHT_PIN           -1 | ||||
|       #define LCD_RESET_PIN          EXP1_06_PIN  // Must be high or open for LCD to operate normally. | ||||
|       #if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) | ||||
|         #ifndef RGB_LED_R_PIN | ||||
|           #define RGB_LED_R_PIN      EXP1_05_PIN | ||||
|         #endif | ||||
|         #ifndef RGB_LED_G_PIN | ||||
|           #define RGB_LED_G_PIN      EXP1_04_PIN | ||||
|         #endif | ||||
|         #ifndef RGB_LED_B_PIN | ||||
|           #define RGB_LED_B_PIN      EXP1_03_PIN | ||||
|         #endif | ||||
|       #elif ENABLED(FYSETC_MINI_12864_2_1) | ||||
|         #define NEOPIXEL_PIN         EXP1_05_PIN | ||||
|       #endif | ||||
|     #endif // !FYSETC_MINI_12864 | ||||
|  | ||||
|     #if IS_ULTIPANEL | ||||
|       #define LCD_PINS_D5            EXP1_05_PIN | ||||
|       #define LCD_PINS_D6            EXP1_04_PIN | ||||
|       #define LCD_PINS_D7            EXP1_03_PIN | ||||
|  | ||||
|       #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) | ||||
|         #define BTN_ENC_EN           LCD_PINS_D7  // Detect the presence of the encoder | ||||
|       #endif | ||||
|  | ||||
|     #endif | ||||
|  | ||||
|   #endif | ||||
|  | ||||
| #endif // HAS_WIRED_LCD | ||||
|  | ||||
| // Alter timing for graphical display | ||||
| #if HAS_MARLINUI_U8GLIB | ||||
|   #ifndef BOARD_ST7920_DELAY_1 | ||||
|     #define BOARD_ST7920_DELAY_1    DELAY_NS(96) | ||||
|   #endif | ||||
|   #ifndef BOARD_ST7920_DELAY_2 | ||||
|     #define BOARD_ST7920_DELAY_2    DELAY_NS(48) | ||||
|   #endif | ||||
|   #ifndef BOARD_ST7920_DELAY_3 | ||||
|     #define BOARD_ST7920_DELAY_3   DELAY_NS(600) | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| // | ||||
| // WIFI | ||||
| // | ||||
|  | ||||
| /** | ||||
|  *                      ------- | ||||
|  *            GND | 9  |       | 8 | 3.3V | ||||
|  *  (ESP-CS) PB12 | 10 |       | 7 | PB15 (ESP-MOSI) | ||||
|  *           3.3V | 11 |       | 6 | PB14 (ESP-MISO) | ||||
|  * (ESP-IO0) PB10 | 12 |       | 5 | PB13 (ESP-CLK) | ||||
|  * (ESP-IO4) PB11 | 13 |       | 4 | NC | ||||
|  *             NC | 14 |       | 3 | 3.3V (ESP-EN) | ||||
|  *  (ESP-RX)  PD8 | 15 |       | 2 | NC | ||||
|  *  (ESP-TX)  PD9 | 16 |       | 1 | PC14 (ESP-RST) | ||||
|  *                      ------- | ||||
|  *                       WIFI | ||||
|  */ | ||||
| #define ESP_WIFI_MODULE_COM                    3  // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this | ||||
| #define ESP_WIFI_MODULE_BAUDRATE        BAUDRATE  // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 | ||||
| #define ESP_WIFI_MODULE_RESET_PIN           PC14 | ||||
| #define ESP_WIFI_MODULE_GPIO0_PIN           PB10 | ||||
| #define ESP_WIFI_MODULE_GPIO4_PIN           PB11 | ||||
| @@ -134,6 +134,7 @@ HAS_FILAMENT_SENSOR     = src_filter=+<src/feature/runout.cpp> +<src/gcode/featu | ||||
| (EXT|MANUAL)_SOLENOID.* = src_filter=+<src/feature/solenoid.cpp> +<src/gcode/control/M380_M381.cpp> | ||||
| MK2_MULTIPLEXER         = src_filter=+<src/feature/snmm.cpp> | ||||
| HAS_CUTTER              = src_filter=+<src/feature/spindle_laser.cpp> +<src/gcode/control/M3-M5.cpp> | ||||
| HAS_DRIVER_SAFE_POWER_PROTECT = src_filter=+<src/feature/stepper_driver_safety.cpp> | ||||
| EXPERIMENTAL_I2CBUS     = src_filter=+<src/feature/twibus.cpp> +<src/gcode/feature/i2c> | ||||
| MECHANICAL_GANTRY_CAL.+ = src_filter=+<src/gcode/calibrate/G34.cpp> | ||||
| Z_MULTI_ENDSTOPS        = src_filter=+<src/gcode/calibrate/G34_M422.cpp> | ||||
|   | ||||
| @@ -225,6 +225,26 @@ build_flags       = ${common_stm32.build_flags} | ||||
| extra_scripts     = ${common.extra_scripts} | ||||
|   pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py | ||||
|  | ||||
| # | ||||
| # Bigtreetech SKR V2.0 (STM32F407VGT6 ARM Cortex-M4) with USB Flash Drive Support | ||||
| # | ||||
| [env:BIGTREE_SKR_2] | ||||
| platform             = ${common_stm32.platform} | ||||
| platform_packages    = ${stm_flash_drive.platform_packages} | ||||
| extends              = common_stm32 | ||||
| board                = genericSTM32F407VGT6 | ||||
| board_build.core     = stm32 | ||||
| board_build.variant  = MARLIN_F4x7Vx | ||||
| board_build.ldscript = ldscript.ld | ||||
| board_build.offset   = 0x8000 | ||||
| board_upload.offset_address = 0x08008000 | ||||
| extra_scripts     = ${common.extra_scripts} | ||||
|   pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py | ||||
|   buildroot/share/PlatformIO/scripts/stm32_bootloader.py | ||||
| build_flags       = ${stm_flash_drive.build_flags} | ||||
|   -DUSE_USBHOST_HS -DUSE_USB_HS_IN_FS -DUSBD_IRQ_PRIO=5 -DUSBD_IRQ_SUBPRIO=6 | ||||
|   -DHSE_VALUE=8000000U -DHAL_SD_MODULE_ENABLED | ||||
|  | ||||
| # | ||||
| # Lerdge base | ||||
| # | ||||
|   | ||||
| @@ -136,6 +136,7 @@ default_src_filter = +<src/*> -<src/config> -<src/HAL> +<src/HAL/shared> | ||||
|   -<src/feature/snmm.cpp> | ||||
|   -<src/feature/solenoid.cpp> -<src/gcode/control/M380_M381.cpp> | ||||
|   -<src/feature/spindle_laser.cpp> -<src/gcode/control/M3-M5.cpp> | ||||
|   -<src/feature/stepper_driver_safety.cpp> | ||||
|   -<src/feature/tmc_util.cpp> -<src/module/stepper/trinamic.cpp> | ||||
|   -<src/feature/tramming.cpp> | ||||
|   -<src/feature/twibus.cpp> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user