Getting grblHAL to work on the Scylla 1.0 board

Firmware Source

The Scylla-capable STM32H7xx driver is from:

cd ~/git/grblHAL
git clone https://github.com/dresco/STM32H7xx.git

Initialize submodules from inside the driver repo:

git submodule update --init --recursive

The required submodules are checked out from their active branches instead of the commits pinned by the parent repository:

git -C grbl switch master
git -C motors switch master
git -C trinamic switch master
git -C sdcard switch master
git -C plugins switch main
git -C spindle switch master

Update those branches before building:

git -C grbl pull --ff-only
git -C motors pull --ff-only
git -C trinamic pull --ff-only
git -C sdcard pull --ff-only
git -C plugins pull --ff-only
git -C spindle pull --ff-only

Build Tools

Install PlatformIO CLI. The working installation used pipx:

pipx install platformio

Check it is available:

pio --version

Firmware Configuration

The custom PlatformIO environments are in:

~/git/grblHAL/STM32H7xx/platformio.ini

The currently relevant environment is:

btt_scylla_h723_tmc5160_dualy_pwm_bl128

It is linked for the Scylla 128K bootloader offset and includes:

-D BOARD_BTT_SCYLLA
-D HSE_VALUE=25000000
-D TRINAMIC_ENABLE=5160
-D Y_AUTO_SQUARE=1
-D SPINDLE0_ENABLE=SPINDLE_PWM0
-D ESTOP_ENABLE=1
-D CONTROL_ENABLE=CONTROL_ESTOP
-D PROBE_ENABLE=1
-D TOOLSETTER_ENABLE=1

The E-stop flags are required so the Scylla X-MAX input is handled as a blocking grblHAL E-stop, not only reported in Pn:E status output. Confirm after flashing:

$pins

Expected E-stop pin assignment:

[PIN:PC6,Emergency stop]

The toolsetter flag is required for the Scylla Tool-IN input to be exposed as the dedicated grblHAL toolsetter input. The Scylla board map uses PE7 for Tool-IN. Confirm after flashing with:

$pins

Expected toolsetter pin assignment:

[PIN:PE7,Toolsetter]

Scylla Driver Status

The E-stop and claimed aux-input interrupt fixes are included in the current STM32H7xx driver and grblHAL sources. No local source patches are required.

Build Firmware

From inside ~/git/grblHAL/STM32H7xx:

pio run -e btt_scylla_h723_tmc5160_dualy_pwm_bl128

The SD-card/bootloader firmware output is:

.pio/build/btt_scylla_h723_tmc5160_dualy_pwm_bl128/firmware.bin

Flash Firmware By SD Card

Use the *_bl128 build for SD-card flashing:

.pio/build/btt_scylla_h723_tmc5160_dualy_pwm_bl128/firmware.bin

General process:

  1. Copy firmware.bin to the root of a FAT32-formatted SD card.
  2. Power off the Scylla.
  3. Insert the SD card.
  4. Power on the Scylla.
  5. Wait for the bootloader to flash the firmware.
  6. Reconnect USB/gSender.

After flashing, confirm the board reports correctly:

$I

Expected key lines:

[FIRMWARE:grblHAL]
[DRIVER:STM32H723@480MHz]
[BOARD:BTT Scylla]
[PLUGIN:Trinamic v0.33]
[PLUGIN:SDCARD v1.27]