Fysetc AIO II / Cheetah STM32F1 (#14407)

This commit is contained in:
Eric Ptak 2019-06-26 07:40:29 +02:00 committed by Scott Lahteine
parent 8e23e9b16c
commit 8934b32f1b
26 changed files with 14513 additions and 34 deletions

View File

@ -68,6 +68,7 @@ typedef uint16_t hal_timer_t;
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
// --------------------------------------------------------------------------

View File

@ -80,6 +80,7 @@
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
//

View File

@ -63,6 +63,8 @@ uint8_t _getc();
#include "HAL_timers.h"
#include "serial.h"
#define SHARED_SERVOS HAS_SERVOS
extern HalSerial usb_serial;
#define MYSERIAL0 usb_serial
#define NUM_SERIAL 1

View File

@ -22,7 +22,6 @@
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
#include "../../inc/MarlinConfig.h"
#if HAS_SERVOS

View File

@ -49,7 +49,7 @@
#define TEMP_TIMER 17
#endif
#elif defined STM32F1xx
#elif defined(STM32F1xx)
#define HAL_TIMER_RATE (F_CPU) // frequency of timer peripherals
@ -61,19 +61,7 @@
#define TEMP_TIMER 2
#endif
#elif defined STM32F4xx
#define HAL_TIMER_RATE (F_CPU/2) // frequency of timer peripherals
#ifndef STEP_TIMER
#define STEP_TIMER 5
#endif
#ifndef TEMP_TIMER
#define TEMP_TIMER 7
#endif
#elif defined STM32F7xx
#elif defined(STM32F4xx) || defined(STM32F7xx)
#define HAL_TIMER_RATE (F_CPU/2) // frequency of timer peripherals

View File

@ -55,8 +55,10 @@ typedef uint16_t hal_timer_t;
#else
#define STEP_TIMER_NUM 5 // for other boards, five is fine.
#endif
#define TEMP_TIMER_NUM 2 // index of timer to use for temperature
#define TEMP_TIMER_NUM 2 // index of timer to use for temperature
//#define TEMP_TIMER_NUM 4 // 2->4, Timer 2 for Stepper Current PWM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#define SERVO0_TIMER_NUM 1 // SERVO0 or BLTOUCH
#define TEMP_TIMER_PRESCALE 1000 // prescaler for setting Temp timer, 72Khz
#define TEMP_TIMER_FREQUENCY 1000 // temperature interrupt frequency

View File

@ -53,7 +53,7 @@
#include "../../inc/MarlinConfig.h"
#if HAS_SERVOS && !(IS_32BIT_TEENSY || defined(TARGET_LPC1768) || defined(STM32F1) || defined(STM32F1xx) || defined(STM32F4) || defined(STM32F4xx) || defined(STM32F7xx) || defined(ARDUINO_ARCH_ESP32))
#if SHARED_SERVOS
#include "servo.h"
#include "servo_private.h"
@ -157,4 +157,4 @@ void Servo::move(const int value) {
}
}
#endif // HAS_SERVOS
#endif // SHARED_SERVOS

View File

@ -250,6 +250,8 @@
#define BOARD_MKS_ROBIN_MINI 1813 // MKS Robin Mini / STM32F103VET6
#define BOARD_BIGTREE_SKR_MINI_V1_1 1814 // STM32F103RC
#define BOARD_JGAURORA_A5S_A1 1820 // JGAurora A5S A1 / STM32F103ZET6
#define BOARD_FYSETC_AIO_II 1890 // FYSETC AIO_II
#define BOARD_FYSETC_CHEETAH 1891 // FYSETC CHEETAH
//
// STM32 ARM Cortex-M4F

View File

@ -787,7 +787,7 @@ void DGUSDisplay::ProcessRx() {
while (dgusserial.available()) {
switch (rx_datagram_state) {
case DGUS_IDLE: // Waiting for the first header byte
case DGUS_IDLE: // Waiting for the first header byte
receivedbyte = dgusserial.read();
//DEBUG_ECHOPAIR("< ",x);
if (DGUS_HEADER1 == receivedbyte) rx_datagram_state = DGUS_HEADER1_SEEN;
@ -842,7 +842,7 @@ void DGUSDisplay::ProcessRx() {
if (command == DGUS_CMD_READVAR) {
const uint16_t vp = tmp[0] << 8 | tmp[1];
const uint8_t dlen = tmp[2] << 1; // Convert to Bytes. (Display works with words)
//DEBUG_ECHOPAIR(" vp=", vp); DEBUG_ECHOPAIR(" dlen=", dlen);
//DEBUG_ECHOPAIR(" vp=", vp, " dlen=", dlen);
DGUS_VP_Variable ramcopy;
if (populate_VPVar(vp, &ramcopy)) {
if (!(dlen == ramcopy.size || (dlen == 2 && ramcopy.size == 1)))

View File

@ -591,6 +591,7 @@
#endif
st.GSTAT(0b111); // Clear
delay(200);
}
#endif // TMC2209

View File

@ -351,7 +351,7 @@ temp_range_t Temperature::temp_range[HOTENDS] = ARRAY_BY_HOTENDS(sensor_heater_0
float max = 0, min = 10000;
const bool isbed = (heater < 0);
#if HAS_PID_FOR_BOTH
#define GHV(B,H) (isbed ? (B) : (H))
#define SHV(B,H) do{ if (isbed) temp_bed.soft_pwm_amount = B; else temp_hotend[heater].soft_pwm_amount = H; }while(0)

View File

@ -434,6 +434,10 @@
#include "pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini
#elif MB(JGAURORA_A5S_A1)
#include "pins_JGAURORA_A5S_A1.h" // STM32F1 env:JGAURORA_A5S_A1
#elif MB(FYSETC_AIO_II)
#include "pins_FYSETC_AIO_II.h" // STM32F1 env:fysetc_STM32F1
#elif MB(FYSETC_CHEETAH)
#include "pins_FYSETC_CHEETAH.h" // STM32F1 env:fysetc_STM32F1
//
// STM32 ARM Cortex-M4F
@ -456,8 +460,6 @@
#elif MB(STEVAL)
#include "pins_STEVAL.h" // STM32F4 env:STM32F4
//
// ARM Cortex M7
//

View File

@ -0,0 +1,178 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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/>.
*
*/
#ifndef __STM32F1__
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#endif
#define BOARD_NAME "FYSETC AIO II"
#define BOARD_WEBSITE_URL "https://fysetc.com"
#define pins_v2_20190128 // geo-f:add for new pins define
// Ignore temp readings during develpment.
#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
//
// Limit Switches
//
#define X_STOP_PIN PA1
#define Y_STOP_PIN PA0
#define Z_STOP_PIN PB14
//
// Filament runout
//
#ifdef pins_v2_20190128
#define FIL_RUNOUT_PIN PB15
#else
#define FIL_RUNOUT_PIN PB5
#endif
//
// Steppers
//
#define X_STEP_PIN PB8
#define X_DIR_PIN PB9
#define X_ENABLE_PIN PA8
#define Y_STEP_PIN PB2
#ifdef pins_v2_20190128
#define Y_DIR_PIN PB3
#else
#define Y_DIR_PIN PB0
#endif
#define Y_ENABLE_PIN PB1
#define Z_STEP_PIN PC0
#define Z_DIR_PIN PC1
#define Z_ENABLE_PIN PC2
#define E0_STEP_PIN PC15
#define E0_DIR_PIN PC14
#define E0_ENABLE_PIN PC13
//
// Stepper current PWM
//
// X:PA2 Y:PA3 Z:PB12 E:PB13 // changed for test
#define MOTOR_CURRENT_PWM_XY_PIN PA3
#define MOTOR_CURRENT_PWM_Z_PIN PA2 // PB12
//#define MOTOR_CURRENT_PWM_XY_PIN PB6
//#define MOTOR_CURRENT_PWM_Z_PIN PB7 // PB12
#define MOTOR_CURRENT_PWM_E_PIN -1 // PB13
// Motor current PWM conversion, PWM value = MotorCurrentSetting * 255 / range
#ifndef MOTOR_CURRENT_PWM_RANGE
#define MOTOR_CURRENT_PWM_RANGE 1500 // geo-f:old 2000
#endif
#define DEFAULT_PWM_MOTOR_CURRENT {500, 500, 400} // geo-f:old 1300 1300 1250
// 采用 SDIO PCB从左到右数
// 1:PC10 - SDIO_D2
// 2:PC11 - SDIO_D3
// 3:PD2 - SDIO_CMD
// 4:VCC
// 5:PC12 - SDIO_CK
// 6:VDD
// 7:PC8 - SDIO_D0
// 8:PC9 - SDIO_D1
// 9:PA15 - SD_DETECT_PIN
//
// Heaters / Fans
//
#define HEATER_0_PIN PC7
#define HEATER_BED_PIN PC6
#ifndef FAN_PIN
#define FAN_PIN PC8
#endif
//
// Temperature Sensors
//
#define TEMP_BED_PIN PC5 // Analog Input
#define TEMP_0_PIN PC4 // Analog Input
//
// Misc. Functions
//
#define SDSS PA4
//
// LCD Pins
//
#if ENABLED(ULTRA_LCD)
#define BEEPER_PIN PC9
#if HAS_GRAPHICAL_LCD
#define DOGLCD_A0 PA15
#ifdef pins_v2_20190128
#define DOGLCD_CS PB5
#else
#define DOGLCD_CS PB7
#endif
//#define LCD_CONTRAST 190
//#define LCD_SCREEN_ROT_90
//#define LCD_SCREEN_ROT_180
//#define LCD_SCREEN_ROT_270
#endif
// not connected to a pin
#define SD_DETECT_PIN PC3
#if ENABLED(NEWPANEL)
// The encoder and click button
#define BTN_EN1 PC10
#define BTN_EN2 PC11
#define BTN_ENC PC12
#endif
#ifdef pins_v2_20190128
#define LCD_RESET_PIN PB4
#ifndef RGB_LED_R_PIN
#define RGB_LED_R_PIN PB0
#endif
#ifndef RGB_LED_G_PIN
#define RGB_LED_G_PIN PB6
#endif
#ifndef RGB_LED_B_PIN
#define RGB_LED_B_PIN PB7
#endif
#else
#define LCD_RESET_PIN PB6
#ifndef RGB_LED_R_PIN
#define RGB_LED_R_PIN PB3
#endif
#ifndef RGB_LED_G_PIN
#define RGB_LED_G_PIN PB4
#endif
#ifndef RGB_LED_B_PIN
#define RGB_LED_B_PIN PB5
#endif
#endif
#endif

View File

@ -0,0 +1,142 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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/>.
*
*/
#ifndef __STM32F1__
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#endif
#define DEFAULT_MACHINE_NAME "3D Printer"
#define BOARD_NAME "FYSETC CHEETAH"
#define BOARD_WEBSITE_URL "https://fysetc.com"
// Ignore temp readings during develpment.
#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
//
// Servos
//
#define SERVO0_PIN PA0
//
// Limit Switches
//
#define X_STOP_PIN PA1
#define Y_STOP_PIN PB4
#define Z_STOP_PIN PA15
//
// Filament runout
//
#define FIL_RUNOUT_PIN PB5
//
// Steppers
//
#define X_STEP_PIN PB8
#define X_DIR_PIN PB9
#define X_ENABLE_PIN PA8
#define Y_STEP_PIN PB2
#define Y_DIR_PIN PB3
#define Y_ENABLE_PIN PB1
#define Z_STEP_PIN PC0
#define Z_DIR_PIN PC1
#define Z_ENABLE_PIN PC2
#define E0_STEP_PIN PC15
#define E0_DIR_PIN PC14
#define E0_ENABLE_PIN PC13
#define X_HARDWARE_SERIAL MSerial2 // Port correct?
#define Y_HARDWARE_SERIAL MSerial2
#define Z_HARDWARE_SERIAL MSerial2
#define E0_HARDWARE_SERIAL MSerial2
//
// Heaters / Fans
//
#define HEATER_0_PIN PC6
#define HEATER_BED_PIN PC7
#ifndef FAN_PIN
#define FAN_PIN PC8
#endif
//
// Temperature Sensors
//
#define TEMP_BED_PIN PC5 // Analog Input
#define TEMP_0_PIN PC4 // Analog Input
//
// Misc. Functions
//
#define SDSS PA4
//
// LCD Pins
//
#if ENABLED(ULTRA_LCD)
#define BEEPER_PIN PC9
#if HAS_GRAPHICAL_LCD
#define DOGLCD_A0 PB14
#define DOGLCD_CS PB12
#define DOGLCD_SCK PB13
#define DOGLCD_MOSI PB15
//#define LCD_SCREEN_ROT_90
//#define LCD_SCREEN_ROT_180
//#define LCD_SCREEN_ROT_270
#if ENABLED(FYSETC_MINI_12864) || ENABLED(U8GLIB_ST7920)
#define FORCE_SOFT_SPI
#endif
#endif
#define LCD_PINS_RS PB12 // CS -- SOFT SPI for ENDER3 LCD
#define LCD_PINS_D4 PB13 // SCLK
#define LCD_PINS_ENABLE PB15 // DATA MOSI
// not connected to a pin
#define SD_DETECT_PIN PC3
#ifndef RGB_LED_R_PIN
#define RGB_LED_R_PIN PB0
#endif
#ifndef RGB_LED_G_PIN
#define RGB_LED_G_PIN PB7
#endif
#ifndef RGB_LED_B_PIN
#define RGB_LED_B_PIN PB6
#endif
//#define LCD_CONTRAST 190
#if ENABLED(NEWPANEL)
#define BTN_EN1 PC11
#define BTN_EN2 PC10
#define BTN_ENC PC12
#endif
#endif

View File

@ -118,17 +118,18 @@
#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
// Software serial
#define X_SERIAL_RX_PIN 71
// At the moment, F6 rx pins are not pc interrupt pins
#define X_SERIAL_RX_PIN -1 // 71
#define X_SERIAL_TX_PIN 72
#define Y_SERIAL_RX_PIN 73
#define Y_SERIAL_RX_PIN -1 // 73
#define Y_SERIAL_TX_PIN 75
#define Z_SERIAL_RX_PIN 78
#define Z_SERIAL_RX_PIN -1 // 78
#define Z_SERIAL_TX_PIN 79
#define E0_SERIAL_RX_PIN 76
#define E0_SERIAL_RX_PIN -1 // 76
#define E0_SERIAL_TX_PIN 77
#define E1_SERIAL_RX_PIN 80
#define E1_SERIAL_RX_PIN -1 // 80
#define E1_SERIAL_TX_PIN 81
#define E2_SERIAL_RX_PIN 22
#define E2_SERIAL_RX_PIN -1 // 22
#define E2_SERIAL_TX_PIN 82
#endif

View File

@ -47,7 +47,7 @@
// Enable EEPROM Emulation for this board
//#define FLASH_EEPROM_EMULATION 1
//#define E2END 0xFFF //((uint32)(EEPROM_START_ADDRESS + EEPROM_PAGE_SIZE + EEPROM_PAGE_SIZE)) // not 0xFFF
//#define E2END 0xFFF //((uint32)(EEPROM_START_ADDRESS + EEPROM_PAGE_SIZE + EEPROM_PAGE_SIZE)) // not 0xFFF
//#define EEPROM_CHITCHAT
//#define DEBUG_EEPROM_READWRITE

View File

@ -0,0 +1,18 @@
/*
* Linker script for Generic STM32F103RC boards, using the generic bootloader (which takes the lower 8k of memory)
*/
MEMORY
{
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K
rom (rx) : ORIGIN = 0x08010000, LENGTH = 256K-40K
}
/* 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

View File

@ -0,0 +1,40 @@
from os.path import join
Import("env", "projenv")
# Relocate firmware from 0x08000000 to 0x08002000
#env['CPPDEFINES'].remove(("VECT_TAB_ADDR", 134217728))
#env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08010000"))
#env.Replace(LDSCRIPT_PATH="buildroot/share/PlatformIO/ldscripts/fysetc_aio_ii.ld")
# Custom HEX from ELF
env.AddPostAction(
"$BUILD_DIR/${PROGNAME}.elf",
env.VerboseAction(" ".join([
"$OBJCOPY",
"-O",
"ihex",
"$BUILD_DIR/${PROGNAME}.elf",
"$BUILD_DIR/${PROGNAME}.hex"
]), "Building $TARGET"))
# please keep $SOURCE variable, it will be replaced with a path to firmware
# Generic
#env.Replace(
# UPLOADER="serial_upload.bat"
# UPLOADCMD="$UPLOADER stm32loader.py $SOURCE"
#)
# In-line command with arguments
#env.Replace(
# UPLOADCMD="executable -arg1 -arg2 $SOURCE"
#)
# Python callback
#def on_upload(source, target, env):
# print source, target
# firmware_path = str(source[0])
# # do something
# env.Execute(".\serial_upload.bat")
#env.Replace(UPLOADCMD=on_upload)

View File

@ -17,7 +17,7 @@ X (Width) 227
Y (Depth) 148
Z (Heigth) 150
Extruder 1 -
Extruder 1 -
Nozzle size: 0.4
Compatible material diameter: 1.75
Nozzle offset X: 0
@ -55,7 +55,7 @@ X (Width) 227
Y (Depth) 148
Z (Heigth) 150
Extruder 1 -
Extruder 1 -
Nozzle size: 0.4
Compatible material diameter: 1.75
Nozzle offset X: -34
@ -95,7 +95,7 @@ X (Width) 295 <---- bed width + 2 x nozzle offset
Y (Depth) 148
Z (Heigth) 150
Extruder 1 -
Extruder 1 -
Nozzle size: 0.4
Compatible material diameter: 1.75
Nozzle offset X: 0
@ -105,7 +105,7 @@ Extruder 1 -
G1 X150 Y70 F9000;move away from print in case extrusion cool down speed modifier too low
;Extruder End G-code;
Extruder 2 -
Extruder 2 -
Nozzle size: 0.4
Compatible material diameter: 1.75
Nozzle offset X: -34

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -274,6 +274,32 @@ lib_ignore = U8glib-HAL
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32F1>
monitor_speed = 250000
#
# fysetc_STM32F1
#
[env:fysetc_STM32F1]
platform = ststm32
framework = arduino
board = genericSTM32F103RC
#board_build.core = maple
extra_scripts = buildroot/share/PlatformIO/scripts/fysetc_STM32F1.py
build_flags = !python Marlin/src/HAL/HAL_STM32F1/STM32F1_flag_script.py
${common.build_flags}
lib_deps = ${common.lib_deps}
lib_ignore =
c1921b4
libf3c
lib066
Adafruit NeoPixel_ID28
Adafruit NeoPixel
libf3e
TMC26XStepper
lib_ldf_mode = 1
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32F1>
monitor_speed = 250000
debug_tool = stlink
upload_protocol = serial
#
# BIGTREE_SKR_MINI
#