pull/1/head
Terje Io 2021-06-07 00:17:49 +02:00
rodzic a8a022cd8a
commit 95559fca59
1 zmienionych plików z 38 dodań i 35 usunięć

Wyświetl plik

@ -1,56 +1,59 @@
## Driver capabilities at a glance:
| Processor -> |[iMXRT1062](https://github.com/grblHAL/iMXRT1062)|[STM32F4xx](https://github.com/grblHAL/STM32F4xx)|[STM32F3xx](https://github.com/grblHAL/STM32F3xx)|[RP&nbsp;2040](https://github.com/grblHAL/RP2040)<sup>4</sup>|[STM32F1xx](https://github.com/grblHAL/STM32F1xx)<sup>11</sup>|[SAM3X8E](https://github.com/grblHAL/SAM3X8E)|[SAMD21](https://github.com/grblHAL/SAMD21)|[ESP32](https://github.com/grblHAL/ESP32)|[MSP432](https://github.com/grblHAL/MSP432P401R)|[LPC1768/1769](https://github.com/grblHAL/LPC176x)|[TMC123](https://github.com/grblHAL/TM4C123)|[TMC129x](https://github.com/grblHAL/TM4C1294)|[MSP432E401Y](https://github.com/grblHAL/MSP432E401Y)|[PSoC&nbsp;5](https://github.com/grblHAL/PSoC5)|[MSP430F5529](https://github.com/grblHAL/MSP430F5529)|
|--------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-------------------|---------------|---------------|---------------|-------------|--------------|
| Board |Teensy 4.x|Blackpill / Nucleo-F411RE / Nucleo-F446RE|BlackPill|Pi Pico |Bluepill | Due | MKRZERO | | LaunchPad | Re-Arm / Bigtreetech SKR 1.3 / BTT SKR 1.4|LaunchPad|LaunchPad|LaunchPad|CY8CKIT-059|LaunchPad |
| MCU speed \(MHz\) | 600 | 84/100/180 | 72 | 133 | 72 | 84 | 48 | 2x240 | 48 | 100/120 | 80 | 120 | 120 | 80 | 25 \(16 bit\)|
| Floating point unit | yes | yes | yes | no | no | no | no | yes | yes | no | yes | yes | yes | no | no |
| Non-volatile storage |Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>| Flash<sup>1</sup> | EEPROM | EEPROM | EEPROM | EEPROM |no<sup>1</sup>|
| Number of axes | up to 5 | up to 6 | up to 6 | up to 6 | up to 6 | up to 6 | 3 | 3 | 3 | up to 5 | 3 | up to 6 | up to 6 |3<sup>2</sup>| 3 |
| Processor -> |[iMXRT1062](https://github.com/grblHAL/iMXRT1062)|[STM32F4xx](https://github.com/grblHAL/STM32F4xx)|[STM32F7xx](https://github.com/grblHAL/STM32F3xx)|[STM32F3xx](https://github.com/grblHAL/STM32F3xx)|[RP&nbsp;2040](https://github.com/grblHAL/RP2040)<sup>4</sup>|[STM32F1xx](https://github.com/grblHAL/STM32F1xx)<sup>11</sup>|[SAM3X8E](https://github.com/grblHAL/SAM3X8E)|[SAMD21](https://github.com/grblHAL/SAMD21)|[ESP32](https://github.com/grblHAL/ESP32)|[MSP432](https://github.com/grblHAL/MSP432P401R)|[LPC1768/1769](https://github.com/grblHAL/LPC176x)|[TMC123](https://github.com/grblHAL/TM4C123)|[TMC129x](https://github.com/grblHAL/TM4C1294)|[MSP432E401Y](https://github.com/grblHAL/MSP432E401Y)|[PSoC&nbsp;5](https://github.com/grblHAL/PSoC5)|[MSP430F5529](https://github.com/grblHAL/MSP430F5529)|
|--------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-------------------|---------------|---------------|---------------|-------------|--------------|
| Board |Teensy 4.x|Blackpill / Nucleo-F411RE / Nucleo-F446RE|Nucleo-F756ZG|BlackPill|Pi Pico |Bluepill | Due | MKRZERO | | LaunchPad | Re-Arm / Bigtreetech SKR 1.3 / BTT SKR 1.4|LaunchPad|LaunchPad|LaunchPad|CY8CKIT-059|LaunchPad |
| MCU speed \(MHz\) | 600 | 84/100/180 | 216 |72 | 133 | 72 | 84 | 48 | 2x240 | 48 | 100/120 | 80 | 120 | 120 | 80 | 25 \(16 bit\)|
| Floating point unit | yes | yes | yes |yes | no | no | no | no | yes | yes | no | yes | yes | yes | no | no |
| Non-volatile storage |Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>|Flash<sup>1</sup>| Flash<sup>1</sup> | EEPROM | EEPROM | EEPROM | EEPROM |no<sup>1</sup>|
| Number of axes | up to 5 | up to 6 | up to 6 | up to 6 | up to 6 | up to 6 | up to 6 | 3 | 3 | 3 | up to 5 | 3 | up to 6 | up to 6 |3<sup>2</sup>| 3 |
| Variable spindle | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| Ramped spindle | no | no | no | no | no | no | no | yes | no | no | yes | yes | yes | no | no |
| Inverted spindle PWM | no | no | no | yes | yes | no | no | yes | yes | no | yes | yes | yes | no | yes |
| RC Servo/ESC for spindle<sup>13</sup>| | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | yes |
| ModBus spindle<sup>14</sup> | yes<sup>15</sup>| no | no | yes | no | no | no | yes | yes<sup>15</sup>| no | no | no | no | no | no |
| Spindle at speed | yes | no | no | no | no | no | no | no | yes<sup>3</sup> | no | no | no | no | no | no |
| Spindle sync | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no |
| Closed loop spindle RPM | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no |
| Native USB streaming | yes | yes | yes | yes | yes | yes | yes | no | no | yes | no | no | no | no | no |
| Bluetooth streaming | no | no | no | no | no | no | no | yes | no | no | no | no | no | no | no |
| Telnet streaming \(raw\) | ethernet | no | no | no | no | no | no | wifi | no | no | no | ethernet | ethernet | no | no |
| Websocket streaming | ethernet | no | no | no | no | no | no | wifi | no | no | no | ethernet | ethernet | no | no |
| SD Card streaming | yes | TBC | TBC | yes | yes | no | yes | yes | no | yes | yes | no | no | no | no |
| I2C Keypad | yes | no | yes | yes | yes | no | yes | yes | yes | no | yes | no | no | yes | no |
| I2C IO Expander | no | no | no | yes | no | no | yes | yes | no | no | no | no | no | no | no |
| MPG stream input | TBC | no | no | yes | no | no | no | no | yes | no | yes | yes | yes | no | no |
| Manual tool change<sup>5</sup> | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | no |
| Automatic tool change<sup>6</sup> | no | no | no | no | no | no | no | no | planned | no | no | no | no | no | no |
| Laser PPI mode<sup>7</sup> | yes | yes | no | no | no | no | no | no | no | no | yes | no | no | no | no |
| Trinamic support<sup>8</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | no |TBC<sup>9</sup>|TBC<sup>9</sup>|TBC<sup>9</sup>| no | no |
| Runs as FreeRTOS task | no | no | no | no | no | no | no | yes | no | no | no | no | option | no | no |
| CNC BoosterPack support | yes<sup>10</sup>| no | yes<sup>10</sup>| yes<sup>10</sup>| yes<sup>10</sup>| no | yes<sup>10</sup>| yes<sup>10</sup>| 1 | no | 1 | 2 | 2 | no | 1 |
| WebUI support | no | no | no | no | no | no | no | yes<sup>12</sup>| no | no | no | no | no | no | no |
| Compiler/IDE | Arduino | STMCubeIDE | STMCubeIDE | VS Code | STMCubeIDE | Arduino | Arduino | ESP IDF | CCS | MCUExpresso | CCS | CCS | CCS | PSOC Creator| CCS |
| Ramped spindle | no | no | no | no | no | no | no | no | yes | no | no | yes | yes | yes | no | no |
| Inverted spindle PWM | no | no | no | no | yes | yes | no | no | yes | yes | no | yes | yes | yes | no | yes |
| RC Servo/ESC for spindle<sup>13</sup>| | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | yes |
| ModBus spindle<sup>14</sup> | yes<sup>15</sup>| no | no | no | yes | no | no | no | yes | yes<sup>15</sup>| no | no | no | no | no | no |
| Spindle at speed | yes | yes | yes | no | no | no | no | no | no | yes<sup>3</sup> | no | no | no | no | no | no |
| Spindle sync | yes<sup>4</sup> | yes<sup>4</sup> | yes | no | no | no | no | no | no | yes<sup>4</sup> | no | no | no | no | no | no |
| Closed loop spindle RPM | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no |
| Native USB streaming | yes | yes | yes | yes | yes | yes | yes | yes | no | no | yes | no | no | no | no | no |
| Bluetooth streaming | no | no | no | no | no | no | no | no | yes | no | no | no | no | no | no | no |
| Telnet streaming \(raw\) | ethernet | no | ethernet | no | no | no | no | no | wifi | no | no | no | ethernet | ethernet | no | no |
| Websocket streaming | ethernet | no | ethernet | no | no | no | no | no | wifi | no | no | no | ethernet | ethernet | no | no |
| FTP to SD&nbsp;card | ethernet | no | ethernet | no | no | no | no | no | wifi | no | no | no | no (\?\) | ethernet | no | no |
| SD Card streaming | yes | TBC | yes | TBC | yes | yes | no | yes | yes | no | yes | yes | no | no | no | no |
| I2C Keypad | yes | no | yes | yes | yes | yes | no | yes | yes | yes | no | yes | no | no | yes | no |
| I2C IO Expander | no | no | no | no | yes | no | no | yes | yes | no | no | no | no | no | no | no |
| Digital Aux I/O | 3/4<sup>15</sup>| 2/2<sup>15</sup>| yes | no | 0/8<sup>15</sup>| no | no | no | no | no | no | no | no | no | no | no |
| MPG stream input | TBC | no | no | no | yes | no | no | no | no | yes | no | yes | yes | yes | no | no |
| Manual tool change<sup>5</sup> | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | no |
| Automatic tool change<sup>6</sup> | no | no | no | no | no | no | no | no | no | planned | no | no | no | no | no | no |
| Laser PPI mode<sup>7</sup> | yes | yes | yes | no | no | no | no | no | no | no | no | yes | no | no | no | no |
| Trinamic support<sup>8</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | TBC<sup>9</sup> | no |TBC<sup>9</sup>|TBC<sup>9</sup>|TBC<sup>9</sup>| no | no |
| Runs as FreeRTOS task | no | no | no | no | no | no | no | no | yes | no | no | no | no | option | no | no |
| CNC BoosterPack support | yes<sup>10</sup>| no | no | yes<sup>10</sup>| yes<sup>10</sup>| yes<sup>10</sup>| no | yes<sup>10</sup>| yes<sup>10</sup>| 1 | no | 1 | 2 | 2 | no | 1 |
| WebUI support | no | no | no | no | no | no | no | no | yes<sup>12</sup>| no | no | no | no | no | no | no |
| Compiler/IDE | Arduino | STMCubeIDE | STMCubeIDE STMCubeIDE | VS Code | STMCubeIDE | Arduino | Arduino | ESP IDF | CCS | MCUExpresso | CCS | CCS | CCS | PSOC Creator| CCS |
<br><sup>1</sup> Plugin for I2C EEPROM or FRAM available. FRAM is faster and can sustain more write cycles than EEPROM.
<br><sup>1</sup> 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](https://github.com/grblHAL/Plugin_odometer).
<br><sup>2</sup> Should be fairly easy to extend.
<br><sup>3</sup> In combination with ramped spindle, signals end of ramp - not programmed speed obtained.
<br><sup>4</sup> To be completed \(TBC\), work in good progress.
<br><sup>5</sup> Protocol extension, requires compatible GCode sender.
<br><sup>6</sup> Grbl core has functionality and HAL driver entry points are provided, needs verification!
<br><sup>5</sup> Protocol extension, requires compatible GCode sender such as [ioSender](https://github.com/terjeio/ioSender).
<br><sup>6</sup> grblHAL core has functionality and HAL driver entry points are provided, needs verification!
<br><sup>7</sup> Driver specific M codes added for control. PPI = Pulses Per Inch.
<br><sup>8</sup> Initial version ready for TMC2130 drivers, new [CNC BoosterPack](https://github.com/terjeio/CNC_Boosterpack) design for Texas Instrument LaunchPads ready and initial testing ok.
<br><sup>9</sup> Implementation provided for TMC2130, with initial focus on [I2C](https://github.com/terjeio/Trinamic_TMC2130_I2C_SPI_Bridge) interfaces. Work in good progress - code published.
<br><sup>10</sup> Via "motherboard" that accommodates [CNC BoosterPack](https://github.com/terjeio/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.
<br><sup>11</sup> Requires 128KB of flash \(STM32F103CB\), many STM32F1038B based Blue Pill boards has that too?
<br><sup>11</sup> Requires 128KB of flash \(STM32F103CB\), many STM32F1038B 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.
<br><sup>12</sup> Luc's [ESP3D-WEBUI](https://github.com/luc-github/ESP3D-webui), backend partially implemented. Work in progress.
<br><sup>13</sup> 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.
<br><sup>14</sup> Currently only for Huanyang VFDs. Defaults to 19200 baud, implicit spindle at speed. Not supported for all alternative board map files.
<br><sup>15</sup> Auto direction detect only.
<br><sup>16</sup> Dependent on breakout board and plugin configuration.
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, MSP432E401Y and TMC129x, ESP32 is not bad but it is a bit unstable - maybe due to outstanding [bugs](https://github.com/espressif/esp-idf/issues) in the [ESP-IDF](https://github.com/espressif/esp-idf) and the system architecture - program code is stored off chip in external serial flash.
---
2021-04-28
2021-06-03