grblHAL / drivers

Driver overview
31 stars 5 forks source link

Driver capabilities at a glance:

Networking capable:

Processor -> iMXRT1062 STM32F7xx STM32H7xx ESP32 RP 20404 RP 20404 MSP432E401Y TMC129x
Board Teensy 4.x Nucleo-F756ZG Nucleo-H743ZI Pi Pico W Pi Pico LaunchPad LaunchPad
MCU speed (MHz) 600 216 450 2x240 125 125 120 120
Floating point unit (FPU) yes yes yes yes no no yes yes
Non-volatile storage Flash1 Flash1 Flash1 Flash1 Flash1 Flash1 EEPROM EEPROM
Number of axes up to 5 up to 8 up to 8 3 up to 6 up to 6 up to 6 up to 6
Auto-squared/ganged axes17 yes yes no no yes yes no no
Variable spindle yes yes yes yes yes yes yes yes
Ramped spindle no no no yes no no yes yes
Inverted spindle PWM yes yes yes yes yes yes yes yes
RC Servo/ESC for spindle13 yes yes yes yes yes yes yes yes
ModBus spindle14 yes15 no no yes yes yes no no
Spindle at speed yes yes yes no no no no no
Spindle sync yes4 yes yes no no no no no
Closed loop spindle RPM no no no no no no no no
Native USB streaming yes yes yes no yes yes no no
Bluetooth streaming no no no yes yes yes no no
Telnet streaming (raw) ethernet ethernet ethernet wifi wifi/ethernet18 ethernet18 ethernet ethernet
Websocket streaming ethernet ethernet ethernet wifi wifi/ethernet18 ethernet18 ethernet ethernet
HTTP daemon (server) ethernet ethernet ethernet wifi wifi/ethernet18 ethernet18 ethernet ethernet
WebDAV to SD card ethernet ethernet ethernet wifi wifi/ethernet18 ethernet18 ethernet no (\?)
FTP to SD card ethernet ethernet ethernet wifi wifi/ethernet18 ethernet18 ethernet no (\?)
SD Card streaming yes yes yes yes yes yes no no
I2C Keypad yes yes yes yes yes yes no no
I2C IO Expander no no no yes yes yes no no
Digital Aux I/O 3/416 yes yes no 0/816 0/816 no no
MPG stream input TBC no no no yes yes yes yes
Manual tool change5 yes yes yes yes yes yes yes yes
Automatic tool change6 no no no no no no no no
Laser PPI mode7 yes yes yes no no no no no
Trinamic support8 TBC9 TBC9 TBC9 TBC9 TBC9 TBC9 TBC9 TBC9
Runs as FreeRTOS task no no no yes no no option no
CNC BoosterPack support yes10 no no yes10 yes10 yes10 2 2
WebUI support yes12 yes12 yes12 yes12 yes12 yes12 yes12 no
Compiler/IDE Arduino STMCubeIDE STMCubeIDE ESP IDF VS Code VS Code CCS CCS
Web Builder support19 yes yes yes yes yes yes no no

With floating point unit (FPU):

grblHAL does a lot of floating point math, a FPU will improve performance.

Processor -> STM32F7xx STM32F4xx STM32F3xx MSP432 TMC123
Board BTT SKR3 / WeAct MiniSTM32H743 Blackpill / Nucleo-F411RE / Nucleo-F446RE BlackPill LaunchPad LaunchPad
MCU speed (MHz) 450 84/100/180 72 48 80
Non-volatile storage Flash1 Flash1 Flash1 Flash1 EEPROM
Number of axes 3 up to 6 up to 6 3 3
Variable spindle yes yes yes yes yes
Ramped spindle no no no no yes
Inverted spindle PWM no no no yes yes
RC Servo/ESC for spindle13 yes yes yes yes yes
ModBus spindle14 no no no yes15 no
Spindle at speed yes yes no yes3 no
Spindle sync yes4 yes4 no yes4 no
Closed loop spindle RPM no no no no no
Native USB streaming yes yes yes no no
SD Card streaming yes yes TBC no yes
I2C Keypad no no yes yes yes
I2C IO Expander no no no no no
Digital Aux I/O no 2/216 no no no
MPG stream input no no no yes yes
Manual tool change5 yes yes yes yes yes
Automatic tool change6 no no no planned no
Laser PPI mode7 yes yes no no yes
Trinamic support8 TBC9 TBC9 TBC9 TBC9 TBC9
CNC BoosterPack support no no yes10 1 1
Compiler/IDE STMCubeIDE STMCubeIDE STMCubeIDE CCS CCS
Web Builder support19 yes yes No no no

Without floating point unit (FPU):

Processor -> RP 20404 STM32F1xx11 SAM3X8E SAMD21 LPC1768/1769 PSoC 5 MSP430F5529
Board Pi Pico Bluepill Due MKRZERO Re-Arm / Bigtreetech SKR 1.3 / BTT SKR 1.4 CY8CKIT-059 LaunchPad
MCU speed (MHz) 125 72 84 48 100/120 80 25 (16 bit)
Non-volatile storage Flash1 Flash1 Flash1 Flash1 Flash1 EEPROM no1
Number of axes up to 6 up to 6 up to 6 3 up to 5 32 3
Auto-squared/ganged axes17 yes yes yes no yes no no
Variable spindle yes yes yes yes yes yes yes
Ramped spindle no no no no no no no
Inverted spindle PWM yes yes no no no no yes
RC Servo/ESC for spindle13 yes yes yes yes yes no yes
ModBus spindle14 yes no no no no no no
Spindle at speed no no no no no no no
Spindle sync no no no no no no no
Closed loop spindle RPM no no no no no no no
Native USB streaming yes yes yes yes yes no no
SD Card streaming yes yes no yes yes no no
I2C Keypad yes yes no yes no yes no
I2C IO Expander yes no no yes no no no
Digital Aux I/O 0/816 no no no no no no
MPG stream input yes no no no no no no
Manual tool change5 yes yes yes yes yes yes no
Automatic tool change6 no no no no no no no
Laser PPI mode7 no no no no no no no
Trinamic support8 TBC9 TBC9 TBC9 TBC9 no no no
CNC BoosterPack support yes10 yes10 no yes10 no no 1
Compiler/IDE VS Code STMCubeIDE Arduino Arduino MCUExpresso PSOC Creator CCS
Web Builder support19 yes yes yes no no no no


1 Plugin for I2C EEPROM or FRAM available. FRAM is faster and can sustain more write cycles than EEPROM. FRAM is reccomended for the Odometer plugin.
2 Should be fairly easy to extend.
3 In combination with ramped spindle, signals end of ramp - not programmed speed obtained.
4 To be completed (TBC), work in good progress.
5 Protocol extension, requires compatible GCode sender such as ioSender.
6 grblHAL core has functionality and HAL driver entry points are provided, needs verification!
7 Driver specific M codes added for control. PPI = Pulses Per Inch.
8 Initial version ready for TMC2130 drivers, new CNC BoosterPack design for Texas Instrument LaunchPads ready and initial testing ok.
9 Implementation provided for TMC2130, with initial focus on I2C interfaces. Work in good progress - code published.
10 Via "motherboard" that accommodates CNC BoosterPack and processor board. Prototypes made, includes 8-bit I2C GPIO expander (not available/needed for STM32F1xx or IMXRT1062). "motherboards" has option for isolated level-shifted spindle PWM or DC output. BoosterPack has an onboard EEPROM and an I2C level shifter.
11 Requires 128KB of flash (STM32F103CB), some STM32F103C8 based Bluepill boards has that. Not recommended due to limited memories, use a STM32F303 or STM32F411 based Blackpill instead for a board with the same form factor as Red- and Bluepills.
12 Luc's ESP3D-WEBUI. Support both v2 and v3, with auto-detect feature.
13 Set $33=50 (PWM frequency), $34=5, $35=5 and $36=10 to generate a "standard" PWM signal: 20ms repetition rate, 1 - 2ms pulse length range.
14 Supports a number of VFDs. Defaults to 19200 baud, implicit spindle at speed. Not supported for all alternative board map files.
15 Auto direction detect only.
16 Dependent on breakout board and plugin configuration.
17 Dependent on breakout board capability. ABC motors will be added from the first motor available and upward, auto-squared/ganged motors from the last and downward.
18 Ethernet is via SPI interface to an external WizNet W5100S or W5500 module. Not necessarily supported by all boards.
19 The Web Builder can be used to create the firmware without installing a toolchain.

Please note that some of the capabilities should be fairly easy to port from one driver to another, but be aware some are dependent on MCU peripheral availability and thus not possible, or hard, to port.

The fastest and most deterministic MCUs seems to be iMRXT1062, STM32H7xx and STM32F7, ESP32 is not bad but it is a bit unstable - maybe due to outstanding bugs in the ESP-IDF and the system architecture - program code is stored off chip in external serial flash.


Excel tables to markdown done with thisDaveJ web-based utility.


2024-01-15