#
# Marlin Firmware
# PlatformIO Configuration File
#

#################################
#
# STM32G0 Architecture
#
# Naming Example: STM32G0B1RET6
#
#   G : Foundation
#   0 : Cortex M0+ core (0:M0, 1-2:M3, 3-4:M4, 7:M7)
#  B1 : Line/Features
#   R : 64 pins  (R:64 or 66, F:20)
#   E : 512KB Flash-memory  (B:128KB C:256KB, D:384KB, E:512KB, G:1024KB)
#   T : LQFP package
#   6 : -40...85°C   (7: ...105°C)
#
#################################

#
# This I2C2(PB3:I2C2_SCL PB4:I2C2_SDA) is used by EBB42 V1.1
#
[stm32g0_I2C2]
build_flags = -DPIN_WIRE_SCL=PB3 -DPIN_WIRE_SDA=PB4

#
# BigTreeTech EBB42 V1.1 (STM32G0B1CBT6 ARM Cortex-M0+)
# This board is being used to control Filament extruders. This is not supported for 3D printing, as it has no kinematics control
#
[env:BTT_EBB42_V1_1_filament_extruder]
extends                     = stm32_variant
platform                    = ststm32@17.1.0
platform_packages           = framework-arduinoststm32@~4.20600.231001
                              toolchain-gccarmnoneeabi@1.120301.0
board                       = marlin_BTT_EBB42_V1_1
board_build.offset          = 0x0000
board_upload.offset_address = 0x08000000
build_flags                 = ${stm32_variant.build_flags} ${stm32g0_I2C2.build_flags}
                              -flto
                              -Wl,--no-warn-rwx-segment
debug_tool                  = stlink
upload_protocol             = dfu
upload_command              = dfu-util -a 0 -s 0x08000000:leave -D "$SOURCE"

#
# BigTreeTech SKR Mini E3 V3.0 (STM32G0B0RET6 / STM32G0B1RET6 ARM Cortex-M0+)
#
[env:STM32G0B1RE_btt]
extends                     = stm32_variant
platform                    = ststm32@17.1.0
platform_packages           = framework-arduinoststm32@~4.20600.231001
                              toolchain-gccarmnoneeabi@1.120301.0
board                       = marlin_STM32G0B1RE
board_build.offset          = 0x2000
board_upload.offset_address = 0x08002000
build_flags                 = ${stm32_variant.build_flags}
                              -DPIN_SERIAL4_RX=PC_11 -DPIN_SERIAL4_TX=PC_10
                              -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024
                              -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4
                              -DSTEP_TIMER_IRQ_PRIO=0
                              -Wl,--no-warn-rwx-segment
upload_protocol             = stlink
debug_tool                  = stlink

#
# BigTreeTech SKR Mini E3 V3.0 (STM32G0B0RET6 / STM32G0B1RET6 ARM Cortex-M0+)
# Custom upload to SD via Marlin with Binary Protocol
# Requires Marlin with BINARY_FILE_TRANSFER already installed on the target board.
# If CUSTOM_FIRMWARE_UPLOAD is also installed, Marlin will reboot the board to install the firmware.
# Currently CUSTOM_FIRMWARE_UPLOAD must also be enabled to use 'xfer' build envs.
#
[env:STM32G0B1RE_btt_xfer]
extends         = env:STM32G0B1RE_btt
build_flags     = ${env:STM32G0B1RE_btt.build_flags} -DXFER_BUILD
extra_scripts   = ${env:STM32G0B1RE_btt.extra_scripts}
                  pre:buildroot/share/scripts/upload.py
upload_protocol = custom

#
# BigTreeTech Manta M4P V2.1 (STM32G0B0RET6 ARM Cortex-M0+)
# BigTreeTech Manta E3 EZ V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+)
#
[env:STM32G0B1RE_manta_btt]
extends         = env:STM32G0B1RE_btt
build_flags     = ${env:STM32G0B1RE_btt.build_flags}
                  -DPIN_SERIAL3_RX=PD_9 -DPIN_SERIAL3_TX=PD_8 -DENABLE_HWSERIAL3

#
# BigTreeTech Manta M4P V2.1 (STM32G0B0RET6 ARM Cortex-M0+)
# BigTreeTech Manta E3 EZ V1.0 / Manta M5P V1.0 (STM32G0B1RET6 ARM Cortex-M0+)
# Custom upload to SD via Marlin with Binary Protocol
# Requires Marlin with BINARY_FILE_TRANSFER already installed on the target board.
# If CUSTOM_FIRMWARE_UPLOAD is also installed, Marlin will reboot the board to install the firmware.
# Currently CUSTOM_FIRMWARE_UPLOAD must also be enabled to use 'xfer' build envs.
#
[env:STM32G0B1RE_manta_btt_xfer]
extends         = env:STM32G0B1RE_manta_btt
build_flags     = ${env:STM32G0B1RE_manta_btt.build_flags} -DXFER_BUILD
extra_scripts   = ${env:STM32G0B1RE_manta_btt.extra_scripts}
                  pre:buildroot/share/scripts/upload.py
upload_protocol = custom

#
# BigTreeTech Manta M8P V1.x (STM32G0B1VET6 ARM Cortex-M0+)
#
[env:STM32G0B1VE_btt]
extends                     = stm32_variant
platform                    = ststm32@17.1.0
platform_packages           = framework-arduinoststm32@~4.20600.231001
                              toolchain-gccarmnoneeabi@1.120301.0
board                       = marlin_STM32G0B1VE
board_build.offset          = 0x2000
board_upload.offset_address = 0x08002000
build_flags                 = ${stm32_variant.build_flags}
                              -DPIN_SERIAL4_RX=PE_9 -DPIN_SERIAL4_TX=PE_8
                              -DPIN_SERIAL5_RX=PE_11 -DPIN_SERIAL5_TX=PE_10
                              -DSERIAL_RX_BUFFER_SIZE=1024 -DSERIAL_TX_BUFFER_SIZE=1024
                              -DTIMER_SERVO=TIM3 -DTIMER_TONE=TIM4
                              -DSTEP_TIMER_IRQ_PRIO=0
                              -Wl,--no-warn-rwx-segment
upload_protocol             = stlink
debug_tool                  = stlink

#
# BigTreeTech Manta M8P V1.x (STM32G0B1VET6 ARM Cortex-M0+)
# Custom upload to SD via Marlin with Binary Protocol
#
[env:STM32G0B1VE_btt_xfer]
extends         = env:STM32G0B1VE_btt
build_flags     = ${env:STM32G0B1VE_btt.build_flags} -DXFER_BUILD
extra_scripts   = ${env:STM32G0B1VE_btt.extra_scripts}
                  pre:buildroot/share/scripts/upload.py
upload_protocol = custom