From 7b36815300ee9fe0d6ffd76f818a9a158114d4e5 Mon Sep 17 00:00:00 2001 From: FLYmaker Date: Sat, 29 Aug 2020 11:05:07 +0800 Subject: [PATCH 1/5] ADD FLY MINI BOARD --- Marlin/src/core/boards.h | 2 +- Marlin/src/pins/pins.h | 5 + Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 190 ++++++++++++++++++ .../share/PlatformIO/ldscripts/fly_mini.ld | 14 ++ .../share/PlatformIO/scripts/fly_mini.py | 16 ++ platformio.ini | 13 ++ 6 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 Marlin/src/pins/stm32f1/pins_FLY_MINI.h create mode 100644 buildroot/share/PlatformIO/ldscripts/fly_mini.ld create mode 100644 buildroot/share/PlatformIO/scripts/fly_mini.py diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index c880b3d3256a..99fcec20c4cf 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -315,7 +315,7 @@ #define BOARD_CREALITY_V4 4033 // Creality v4.x (STM32F103RE) #define BOARD_CREALITY_V427 4034 // Creality v4.2.7 (STM32F103RE) #define BOARD_TRIGORILLA_PRO 4035 // Trigorilla Pro (STM32F103ZET6) - +#define BOARD_FLY_MINI 4036 // FLY MINI (STM32F103rct6) // // ARM Cortex-M4F // diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 22f6ea663ce0..5d77750d79f7 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -554,6 +554,11 @@ #include "stm32f1/pins_CREALITY_V427.h" // STM32F1 env:STM32F103RET6_creality #elif MB(TRIGORILLA_PRO) #include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro +#elif MB(FLY_MINI) + #include "stm32f1/pins_FLY_MINI.h" // STM32F1 env:FLY_MINI + + + // // ARM Cortex-M4F diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h new file mode 100644 index 000000000000..89a0e98041c3 --- /dev/null +++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h @@ -0,0 +1,190 @@ +/** + * 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 + +#ifndef __STM32F1__ + #error "Oops! Select an STM32F1 board in 'Tools > Board.'" +#endif + +#define BOARD_INFO_NAME "FLY_MINI" +#define BOARD_WEBSITE_URL "github.com/FLYmaker" +#define DISABLE_JTAG + +// +// Flash EEPROM Emulation +// +#define FLASH_EEPROM_EMULATION +#define EEPROM_PAGE_SIZE uint16(0x800) // 2KB +#define EEPROM_START_ADDRESS uint32(0x8000000 + 256 * 1024 - 2 * EEPROM_PAGE_SIZE) +#undef E2END +#define E2END (EEPROM_PAGE_SIZE - 1) // 2KB + + + + +#define SERVO0_PIN PA8 +// +// Limit Switches +// +#define X_MIN_PIN PC12 +#define X_MAX_PIN PC11 +#define Y_MIN_PIN PC10 +#define Y_MAX_PIN PA15 +#define Z_MIN_PIN PA14 +#define Z_MAX_PIN PA13 + + + + +// +// Steppers +// +#define X_STEP_PIN PB1 +#define X_DIR_PIN PB2 +#define X_ENABLE_PIN PB10 +#ifndef X_CS_PIN + #define X_CS_PIN PB0 +#endif + + + + +#define Y_STEP_PIN PA2 +#define Y_DIR_PIN PC4 +#define Y_ENABLE_PIN PC5 +#ifndef Y_CS_PIN + #define Y_CS_PIN PA7 +#endif + + +#define Z_STEP_PIN PA3 +#define Z_DIR_PIN PA5 +#define Z_ENABLE_PIN PA6 +#ifndef Z_CS_PIN + #define Z_CS_PIN PA4 +#endif + + + + +#define E0_STEP_PIN PA1 +#define E0_DIR_PIN PC3 +#define E0_ENABLE_PIN PA0 +#ifndef E0_CS_PIN + #define E0_CS_PIN PC2 +#endif + +#if ENABLED(TMC_USE_SW_SPI) + #ifndef TMC_SW_MOSI + #define TMC_SW_MOSI PB15 + #endif + #ifndef TMC_SW_MISO + #define TMC_SW_MISO PB14 + #endif + #ifndef TMC_SW_SCK + #define TMC_SW_SCK PB13 + #endif +#endif + +#if HAS_TMC_UART + + // + // Software serial + // + #define X_SERIAL_TX_PIN PB0 + #define X_SERIAL_RX_PIN PB0 + + #define Y_SERIAL_TX_PIN PA7 + #define Y_SERIAL_RX_PIN PA7 + + #define Z_SERIAL_TX_PIN PA4 + #define Z_SERIAL_RX_PIN PA4 + + #define E0_SERIAL_TX_PIN PC2 + #define E0_SERIAL_RX_PIN PC2 + +#endif + + +// +// Heaters / Fans +// +#define HEATER_0_PIN PC6 +#define HEATER_BED_PIN PC7 +#ifndef FAN_PIN + #define FAN_PIN PC8 +#endif +#define FAN1_PIN PC9 +// +// Temperature Sensors +// +#define TEMP_BED_PIN PC0 // Analog Input +#define TEMP_0_PIN PC1 // Analog Input + + + + +// +// LCD Pins +// + +// +// LCD / Controller +// +#define ENABLE_SPI2 +#define SS_PIN PB12 +#define SCK_PIN PB13 +#define MISO_PIN PB14 +#define MOSI_PIN PB15 +#define SDSS SS_PIN +#define SD_DETECT_PIN PB11 +#define BEEPER_PIN PC14 + +#define LCD_PINS_RS PB8 +#define LCD_PINS_ENABLE PB9 +#define LCD_PINS_D4 PB7 +#define LCD_PINS_D5 PB6 +#define LCD_PINS_D6 PB5 +#define LCD_PINS_D7 PB4 + +#define BTN_EN1 PD2 +#define BTN_EN2 PB3 +#define BTN_ENC PC13 + +// +// Filament runout +// + + + +// +// ST7920 Delays +// +#ifndef ST7920_DELAY_1 + #define ST7920_DELAY_1 DELAY_NS(96) +#endif +#ifndef ST7920_DELAY_2 + #define ST7920_DELAY_2 DELAY_NS(48) +#endif +#ifndef ST7920_DELAY_3 + #define ST7920_DELAY_3 DELAY_NS(715) +#endif diff --git a/buildroot/share/PlatformIO/ldscripts/fly_mini.ld b/buildroot/share/PlatformIO/ldscripts/fly_mini.ld new file mode 100644 index 000000000000..2404e7cac9bc --- /dev/null +++ b/buildroot/share/PlatformIO/ldscripts/fly_mini.ld @@ -0,0 +1,14 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K - 40 + rom (rx) : ORIGIN = 0x08005000, LENGTH = 256K - 20K - 4K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/buildroot/share/PlatformIO/scripts/fly_mini.py b/buildroot/share/PlatformIO/scripts/fly_mini.py new file mode 100644 index 000000000000..34d132958d6a --- /dev/null +++ b/buildroot/share/PlatformIO/scripts/fly_mini.py @@ -0,0 +1,16 @@ +import os +Import("env") + +# Relocate firmware from 0x08000000 to 0x08005000 +for define in env['CPPDEFINES']: + if define[0] == "VECT_TAB_ADDR": + env['CPPDEFINES'].remove(define) +env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08005000")) + +custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/fly_mini.ld") +for i, flag in enumerate(env["LINKFLAGS"]): + if "-Wl,-T" in flag: + env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script + elif flag == "-T": + env["LINKFLAGS"][i + 1] = custom_ld_script + diff --git a/platformio.ini b/platformio.ini index e3ff6c152634..1fc7c8ac94b2 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1095,6 +1095,19 @@ build_flags = ${common_stm32.build_flags} extra_scripts = ${common.extra_scripts} pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py +# +# FLY MINI(stm32f103rct6) +# +[env:FLY_MINI] +platform = ${common_stm32f1.platform} +extends = common_stm32f1 +board = genericSTM32F103RC +platform_packages = tool-stm32duino +extra_scripts = ${common.extra_scripts} + buildroot/share/PlatformIO/scripts/fly_mini.py +build_flags = ${common_stm32f1.build_flags} + -DDEBUG_LEVEL=0 -DSS_TIMER=4 + # # FYSETC S6 (STM32F446VET6 ARM Cortex-M4) # From 897865493fa8c7eb68a25a1f906ab78f094bc4c5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 1 Sep 2020 00:11:40 -0500 Subject: [PATCH 2/5] Update boards.h --- Marlin/src/core/boards.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 99fcec20c4cf..95af5893d350 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -315,7 +315,8 @@ #define BOARD_CREALITY_V4 4033 // Creality v4.x (STM32F103RE) #define BOARD_CREALITY_V427 4034 // Creality v4.2.7 (STM32F103RE) #define BOARD_TRIGORILLA_PRO 4035 // Trigorilla Pro (STM32F103ZET6) -#define BOARD_FLY_MINI 4036 // FLY MINI (STM32F103rct6) +#define BOARD_FLY_MINI 4036 // FLY MINI (STM32F103RCT6) + // // ARM Cortex-M4F // From feab6a8d69ab375dd96decac8af40fc87346498f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 1 Sep 2020 00:16:57 -0500 Subject: [PATCH 3/5] Update pins_FLY_MINI.h --- Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 42 +++++++------------------ 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h index 89a0e98041c3..fba1d41a94b0 100644 --- a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h +++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h @@ -33,15 +33,15 @@ // Flash EEPROM Emulation // #define FLASH_EEPROM_EMULATION -#define EEPROM_PAGE_SIZE uint16(0x800) // 2KB -#define EEPROM_START_ADDRESS uint32(0x8000000 + 256 * 1024 - 2 * EEPROM_PAGE_SIZE) -#undef E2END -#define E2END (EEPROM_PAGE_SIZE - 1) // 2KB - - +#define EEPROM_PAGE_SIZE 0x800 // 2KB +#define EEPROM_START_ADDRESS (0x8000000 + 256 * 1024 - 2 * EEPROM_PAGE_SIZE) // 256K firmware space +#define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE +// +// Servos +// +#define SERVO0_PIN PA8 -#define SERVO0_PIN PA8 // // Limit Switches // @@ -52,9 +52,6 @@ #define Z_MIN_PIN PA14 #define Z_MAX_PIN PA13 - - - // // Steppers // @@ -65,9 +62,6 @@ #define X_CS_PIN PB0 #endif - - - #define Y_STEP_PIN PA2 #define Y_DIR_PIN PC4 #define Y_ENABLE_PIN PC5 @@ -75,7 +69,6 @@ #define Y_CS_PIN PA7 #endif - #define Z_STEP_PIN PA3 #define Z_DIR_PIN PA5 #define Z_ENABLE_PIN PA6 @@ -83,9 +76,6 @@ #define Z_CS_PIN PA4 #endif - - - #define E0_STEP_PIN PA1 #define E0_DIR_PIN PC3 #define E0_ENABLE_PIN PA0 @@ -106,25 +96,19 @@ #endif #if HAS_TMC_UART - // // Software serial // #define X_SERIAL_TX_PIN PB0 #define X_SERIAL_RX_PIN PB0 - #define Y_SERIAL_TX_PIN PA7 #define Y_SERIAL_RX_PIN PA7 - #define Z_SERIAL_TX_PIN PA4 #define Z_SERIAL_RX_PIN PA4 - #define E0_SERIAL_TX_PIN PC2 #define E0_SERIAL_RX_PIN PC2 - #endif - // // Heaters / Fans // @@ -134,15 +118,13 @@ #define FAN_PIN PC8 #endif #define FAN1_PIN PC9 + // // Temperature Sensors // #define TEMP_BED_PIN PC0 // Analog Input #define TEMP_0_PIN PC1 // Analog Input - - - // // LCD Pins // @@ -151,12 +133,14 @@ // LCD / Controller // #define ENABLE_SPI2 -#define SS_PIN PB12 +#define SS_PIN PB12 #define SCK_PIN PB13 #define MISO_PIN PB14 #define MOSI_PIN PB15 -#define SDSS SS_PIN + +#define SDSS SS_PIN #define SD_DETECT_PIN PB11 + #define BEEPER_PIN PC14 #define LCD_PINS_RS PB8 @@ -174,8 +158,6 @@ // Filament runout // - - // // ST7920 Delays // From 39363ccdbf59436bb442fe57fca7f94cd2e757af Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 1 Sep 2020 00:18:57 -0500 Subject: [PATCH 4/5] Update pins.h --- Marlin/src/pins/pins.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 5d77750d79f7..fc894b46080c 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -557,9 +557,6 @@ #elif MB(FLY_MINI) #include "stm32f1/pins_FLY_MINI.h" // STM32F1 env:FLY_MINI - - - // // ARM Cortex-M4F // From 5724821f0b7f8586a7a4a98baa166d26387b943e Mon Sep 17 00:00:00 2001 From: FLYmaker Date: Thu, 10 Sep 2020 11:05:01 +0800 Subject: [PATCH 5/5] Update PeripheralPins.c Servo and fan use the same timer conflict --- buildroot/share/PlatformIO/variants/FLY_F407ZG/PeripheralPins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/share/PlatformIO/variants/FLY_F407ZG/PeripheralPins.c b/buildroot/share/PlatformIO/variants/FLY_F407ZG/PeripheralPins.c index bd2a47062c19..f0f2c4b80c43 100644 --- a/buildroot/share/PlatformIO/variants/FLY_F407ZG/PeripheralPins.c +++ b/buildroot/share/PlatformIO/variants/FLY_F407ZG/PeripheralPins.c @@ -144,7 +144,7 @@ WEAK const PinMap PinMap_PWM[] = { {PE_5, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 1, 0)}, // TIM9_CH1 {PE_6, TIM9, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM9, 2, 0)}, // TIM9_CH2 //{PE_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 - {PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 + //{PE_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 {PF_6, TIM10, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM10, 1, 0)}, // TIM10_CH1 {PF_7, TIM11, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM11, 1, 0)}, // TIM11_CH1 {PF_8, TIM13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1