Browse Source

Add JGAurora A5S and A1 (STM32F103ZET6) (#14291)

- Now compiles and works correctly with changes to HAL timers and watchdog.
- Does NOT include awesome work on touch screen function.
- Does have working LCD and SD-based EEPROM.
pull/1/head
pinchies 6 years ago
committed by Scott Lahteine
parent
commit
3021097888
  1. 1
      Marlin/src/core/boards.h
  2. 2
      Marlin/src/pins/pins.h
  3. 125
      Marlin/src/pins/pins_JGAURORA_A5S_A1.h
  4. 14
      buildroot/share/PlatformIO/ldscripts/jgaurora_a5s_a1.ld
  5. 43
      buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py
  6. BIN
      buildroot/share/PlatformIO/scripts/jgaurora_bootloader.bin
  7. 2147
      config/examples/JGAurora/A1/Configuration.h
  8. 2514
      config/examples/JGAurora/A1/Configuration_adv.h
  9. 2147
      config/examples/JGAurora/A5S/Configuration.h
  10. 2514
      config/examples/JGAurora/A5S/Configuration_adv.h
  11. 22
      platformio.ini

1
Marlin/src/core/boards.h

@ -247,6 +247,7 @@
#define BOARD_MORPHEUS 1806 // STM32F103C8/STM32F103CB Libmaple based stm32f1 controller
#define BOARD_MKS_ROBIN 1808 // MKS Robin / STM32F103ZET6
#define BOARD_BIGTREE_SKR_MINI_V1_1 1814 // STM32F103RC
#define BOARD_JGAURORA_A5S_A1 1810 // JGAurora A5S A1 / STM32F103ZET6
//
// STM32 ARM Cortex-M4F

2
Marlin/src/pins/pins.h

@ -428,6 +428,8 @@
#include "pins_MORPHEUS.h" // STM32F1 env:STM32F1
#elif MB(MKS_ROBIN)
#include "pins_MKS_ROBIN.h" // STM32F1 env:mks_robin
#elif MB(JGAURORA_A5S_A1)
#include "pins_JGAURORA_A5S_A1.h" // STM32F1 env:JGAURORA_A5S_A1
//
// STM32 ARM Cortex-M4F

125
Marlin/src/pins/pins_JGAURORA_A5S_A1.h

@ -0,0 +1,125 @@
/**
* 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/>.
*
*/
/**
* 2017 Victor Perez Marlin for stm32f1 test
* 2018 Modified by Pablo Crespo for Morpheus Board (https://github.com/pscrespo/Morpheus-STM32)
* 2019 Modified by Roberto Mariani & Samuel Pinches for JGAurora A5S & A1 Board.
*/
/**
* JGAurora A5S A1 Board pin assignments
*/
#ifndef __STM32F1__
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#endif
#define BOARD_NAME "JGAurora A5S A1 board"
// #define STM32_XL_DENSITY // required, but should be set by platformio flags, not here! (why? not sure.)
//#define MCU_STM32F103ZE // not yet required
// // I2C EEPROM with 64K of space - AT24C64
// #define I2C_EEPROM
// #define E2END 0x7FFF
// 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 EEPROM_CHITCHAT
//#define DEBUG_EEPROM_READWRITE
//
// Limit Switches
//
#define X_STOP_PIN PC6
#define Y_STOP_PIN PG8
#define Z_STOP_PIN PG7
//
// Steppers
//
#define X_STEP_PIN PD6
#define X_DIR_PIN PD3
#define X_ENABLE_PIN PG9
#define Y_STEP_PIN PG12
#define Y_DIR_PIN PG11
#define Y_ENABLE_PIN PG13
#define Z_STEP_PIN PG15
#define Z_DIR_PIN PG14
#define Z_ENABLE_PIN PB8
#define E0_STEP_PIN PE2
#define E0_DIR_PIN PB9
#define E0_ENABLE_PIN PE3
#define E1_STEP_PIN PE5
#define E1_DIR_PIN PE4
#define E1_ENABLE_PIN PE6
//
// Temperature Sensors
//
#define TEMP_0_PIN PC2
#define TEMP_BED_PIN PC1
//
// Heaters / Fans
//
#define HEATER_0_PIN PA2
#define HEATER_BED_PIN PA3
#define FAN_PIN PA1
#define PS_ON_PIN PA0
#define FIL_RUNOUT_PIN PC7
//
// LCD
//
#define LCD_BACKLIGHT_PIN PF11
#define FSMC_CS_PIN PD7
#define FSMC_RS_PIN PG0
//
// SD Card
//
#define SD_DETECT_PIN PF10
//
// Misc.
//
#define BEEPER_PIN PC3 // use PB7 to shut up if desired
#define LED_PIN PC13
// Touch support
#define BTN_ENC PA11 // Real pin is needed to enable encoder's push button functionality used by touch screen. PA11 gives stable value.
#define TOUCH_CS PA4
//#define TOUCH_INTERRUPT PC4 // Not yet implemented
#define NO_PAUSE_AFTER_PRINT

14
buildroot/share/PlatformIO/ldscripts/jgaurora_a5s_a1.ld

@ -0,0 +1,14 @@
MEMORY
{
ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 64K - 3K
rom (rx) : ORIGIN = 0x0800A000, LENGTH = 512K - 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

43
buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py

@ -0,0 +1,43 @@
Import("env")
# Relocate firmware from 0x08000000 to 0x0800A000
env['CPPDEFINES'].remove(("VECT_TAB_ADDR", "0x8000000"))
#alternatively, for STSTM <=5.1.0 use line below
#env['CPPDEFINES'].remove(("VECT_TAB_ADDR", 134217728))
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x0800A000"))
env.Replace(LDSCRIPT_PATH="buildroot/share/PlatformIO/ldscripts/jgaurora_a5s_a1.ld")
#append ${PROGNAME}.bin firmware after bootloader and save it as 'jgaurora_firmware.bin'
def addboot(source,target,env):
import os
firmware = open(target[0].path, "rb")
lengthfirmware = os.path.getsize(target[0].path)
bootloader_dir = "buildroot/share/PlatformIO/scripts/jgaurora_bootloader.bin"
bootloader = open(bootloader_dir, "rb")
lengthbootloader = os.path.getsize(bootloader_dir)
firmware_with_boothloader_dir = target[0].dir.path +'/firmware_with_bootloader.bin'
if os.path.exists(firmware_with_boothloader_dir):
os.remove(firmware_with_boothloader_dir)
firmwareimage = open(firmware_with_boothloader_dir, "wb")
position = 0
while position < lengthbootloader:
byte = bootloader.read(1)
firmwareimage.write(byte)
position += 1
position = 0
while position < lengthfirmware:
byte = firmware.read(1)
firmwareimage.write(byte)
position += 1
bootloader.close()
firmware.close()
firmwareimage.close()
firmware_without_bootloader_dir = target[0].dir.path+'/firmware_for_sd_upload.bin'
if os.path.exists(firmware_without_bootloader_dir):
os.remove(firmware_without_bootloader_dir)
os.rename(target[0].path, firmware_without_bootloader_dir)
#os.rename(target[0].dir.path+'/firmware_with_bootloader.bin', target[0].dir.path+'/firmware.bin')
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", addboot);

BIN
buildroot/share/PlatformIO/scripts/jgaurora_bootloader.bin

Binary file not shown.

2147
config/examples/JGAurora/A1/Configuration.h

File diff suppressed because it is too large

2514
config/examples/JGAurora/A1/Configuration_adv.h

File diff suppressed because it is too large

2147
config/examples/JGAurora/A5S/Configuration.h

File diff suppressed because it is too large

2514
config/examples/JGAurora/A5S/Configuration_adv.h

File diff suppressed because it is too large

22
platformio.ini

@ -349,6 +349,28 @@ lib_ignore = c1921b4
TMC26XStepper
U8glib-HAL
#
# JGAurora A5S A1 (STM32F103ZET6)
#
[env:JGAURORA_A5S_A1]
platform = ststm32@5.3.0
framework = arduino
board = genericSTM32F103ZE
extra_scripts = buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py
build_flags = !python Marlin/src/HAL/HAL_STM32F1/STM32F1_flag_script.py
${common.build_flags} -DSTM32_XL_DENSITY
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32F1>
lib_deps = ${common.lib_deps}
lib_ignore = c1921b4
libf3c
lib066
Adafruit NeoPixel_ID28
Adafruit NeoPixel
libf3e
TMC26XStepper
lib_ldf_mode = 1
monitor_speed = 250000
#
# STM32F407VET6 with RAMPS-like shield
# 'Black' STM32F407VET6 board - http://wiki.stm32duino.com/index.php?title=STM32F407

Loading…
Cancel
Save