From 5b49fccf80e0f17aa107262c649ba2777f8d5cc2 Mon Sep 17 00:00:00 2001
From: etagle <ejtagle@hotmail.com>
Date: Sat, 23 Jun 2018 14:31:18 -0300
Subject: [PATCH] Add stepper driver DIR delay configuration option

...and recommended pulse width configuration for A4988
---
 Marlin/Configuration_adv.h                          | 13 +++++++++++++
 Marlin/src/config/default/Configuration_adv.h       | 13 +++++++++++++
 .../examples/AlephObjects/TAZ4/Configuration_adv.h  | 13 +++++++++++++
 .../src/config/examples/Anet/A6/Configuration_adv.h | 13 +++++++++++++
 .../src/config/examples/Anet/A8/Configuration_adv.h | 13 +++++++++++++
 .../config/examples/Azteeg/X5GT/Configuration_adv.h | 13 +++++++++++++
 .../BIBO/TouchX/cyclops/Configuration_adv.h         | 13 +++++++++++++
 .../BIBO/TouchX/default/Configuration_adv.h         | 13 +++++++++++++
 .../examples/BQ/Hephestos/Configuration_adv.h       | 13 +++++++++++++
 .../examples/BQ/Hephestos_2/Configuration_adv.h     | 13 +++++++++++++
 .../config/examples/BQ/WITBOX/Configuration_adv.h   | 13 +++++++++++++
 .../config/examples/Cartesio/Configuration_adv.h    | 13 +++++++++++++
 .../examples/Creality/CR-10/Configuration_adv.h     | 13 +++++++++++++
 .../examples/Creality/CR-10S/Configuration_adv.h    | 13 +++++++++++++
 .../examples/Creality/CR-10mini/Configuration_adv.h | 13 +++++++++++++
 .../examples/Creality/CR-8/Configuration_adv.h      | 13 +++++++++++++
 .../examples/Creality/Ender-2/Configuration_adv.h   | 13 +++++++++++++
 .../examples/Creality/Ender-3/Configuration_adv.h   | 13 +++++++++++++
 .../examples/Creality/Ender-4/Configuration_adv.h   | 13 +++++++++++++
 .../src/config/examples/Felix/Configuration_adv.h   | 13 +++++++++++++
 .../examples/FolgerTech/i3-2020/Configuration_adv.h | 13 +++++++++++++
 .../Geeetech/Prusa i3 Pro C/Configuration_adv.h     | 13 +++++++++++++
 .../Geeetech/Prusa i3 Pro W/Configuration_adv.h     | 13 +++++++++++++
 .../examples/Infitary/i3-M508/Configuration_adv.h   | 13 +++++++++++++
 .../config/examples/JGAurora/A5/Configuration_adv.h | 13 +++++++++++++
 .../config/examples/MakerParts/Configuration_adv.h  | 13 +++++++++++++
 .../config/examples/Malyan/M150/Configuration_adv.h | 13 +++++++++++++
 .../config/examples/Malyan/M200/Configuration_adv.h | 13 +++++++++++++
 .../Micromake/C1/enhanced/Configuration_adv.h       | 13 +++++++++++++
 .../config/examples/Mks/Sbase/Configuration_adv.h   | 13 +++++++++++++
 .../config/examples/RigidBot/Configuration_adv.h    | 13 +++++++++++++
 .../src/config/examples/SCARA/Configuration_adv.h   | 13 +++++++++++++
 .../examples/Sanguinololu/Configuration_adv.h       | 13 +++++++++++++
 .../src/config/examples/TheBorg/Configuration_adv.h | 13 +++++++++++++
 .../config/examples/TinyBoy2/Configuration_adv.h    | 13 +++++++++++++
 .../UltiMachine/Archim2/Configuration_adv.h         | 13 +++++++++++++
 .../examples/Velleman/K8200/Configuration_adv.h     | 13 +++++++++++++
 .../examples/Velleman/K8400/Configuration_adv.h     | 13 +++++++++++++
 .../Wanhao/Duplicator 6/Configuration_adv.h         | 13 +++++++++++++
 .../delta/FLSUN/auto_calibrate/Configuration_adv.h  | 13 +++++++++++++
 .../examples/delta/FLSUN/kossel/Configuration_adv.h | 13 +++++++++++++
 .../delta/FLSUN/kossel_mini/Configuration_adv.h     | 13 +++++++++++++
 .../examples/delta/generic/Configuration_adv.h      | 13 +++++++++++++
 .../examples/delta/kossel_mini/Configuration_adv.h  | 13 +++++++++++++
 .../examples/delta/kossel_pro/Configuration_adv.h   | 13 +++++++++++++
 .../examples/delta/kossel_xl/Configuration_adv.h    | 13 +++++++++++++
 .../examples/gCreate/gMax1.5+/Configuration_adv.h   | 13 +++++++++++++
 .../src/config/examples/makibox/Configuration_adv.h | 13 +++++++++++++
 .../examples/tvrrug/Round2/Configuration_adv.h      | 13 +++++++++++++
 .../src/config/examples/wt150/Configuration_adv.h   | 13 +++++++++++++
 Marlin/src/module/stepper.cpp                       |  5 +++++
 51 files changed, 655 insertions(+)

diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index f3a4b7f47e..b8cc639f58 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/default/Configuration_adv.h b/Marlin/src/config/default/Configuration_adv.h
index f3a4b7f47e..b8cc639f58 100644
--- a/Marlin/src/config/default/Configuration_adv.h
+++ b/Marlin/src/config/default/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h b/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
index 78862f4a9e..8d84be5a29 100644
--- a/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
+++ b/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Anet/A6/Configuration_adv.h b/Marlin/src/config/examples/Anet/A6/Configuration_adv.h
index 0cdc3b0923..7e75ee7ec0 100644
--- a/Marlin/src/config/examples/Anet/A6/Configuration_adv.h
+++ b/Marlin/src/config/examples/Anet/A6/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Anet/A8/Configuration_adv.h b/Marlin/src/config/examples/Anet/A8/Configuration_adv.h
index 5a06ca0611..359dea7632 100644
--- a/Marlin/src/config/examples/Anet/A8/Configuration_adv.h
+++ b/Marlin/src/config/examples/Anet/A8/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h b/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
index f3a4b7f47e..b8cc639f58 100644
--- a/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
+++ b/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h b/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
index c4b938bf66..3030fadb6f 100644
--- a/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
+++ b/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/BIBO/TouchX/default/Configuration_adv.h b/Marlin/src/config/examples/BIBO/TouchX/default/Configuration_adv.h
index 7bfab90ddc..2351b44f2a 100644
--- a/Marlin/src/config/examples/BIBO/TouchX/default/Configuration_adv.h
+++ b/Marlin/src/config/examples/BIBO/TouchX/default/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h b/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
index ad8a92605e..2e9dd996dd 100644
--- a/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
+++ b/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h b/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
index d9a850e36b..7a1f07bcce 100644
--- a/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
+++ b/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
@@ -840,9 +840,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h b/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
index ad8a92605e..2e9dd996dd 100644
--- a/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
+++ b/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Cartesio/Configuration_adv.h b/Marlin/src/config/examples/Cartesio/Configuration_adv.h
index c85e2d9c58..de63b64e93 100644
--- a/Marlin/src/config/examples/Cartesio/Configuration_adv.h
+++ b/Marlin/src/config/examples/Cartesio/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h b/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
index 4a810e3b3b..8114222abf 100755
--- a/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h b/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
index f04b19d960..79b4592310 100644
--- a/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Creality/CR-10mini/Configuration_adv.h b/Marlin/src/config/examples/Creality/CR-10mini/Configuration_adv.h
index ca6b97c006..0c927457a6 100644
--- a/Marlin/src/config/examples/Creality/CR-10mini/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/CR-10mini/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Creality/CR-8/Configuration_adv.h b/Marlin/src/config/examples/Creality/CR-8/Configuration_adv.h
index 02b40beefe..4a5bcf53f8 100644
--- a/Marlin/src/config/examples/Creality/CR-8/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/CR-8/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Creality/Ender-2/Configuration_adv.h b/Marlin/src/config/examples/Creality/Ender-2/Configuration_adv.h
index f83add0e47..dfd82bcf55 100644
--- a/Marlin/src/config/examples/Creality/Ender-2/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/Ender-2/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Creality/Ender-3/Configuration_adv.h b/Marlin/src/config/examples/Creality/Ender-3/Configuration_adv.h
index 1cc916d5de..11def57b6b 100644
--- a/Marlin/src/config/examples/Creality/Ender-3/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/Ender-3/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Creality/Ender-4/Configuration_adv.h b/Marlin/src/config/examples/Creality/Ender-4/Configuration_adv.h
index 02b40beefe..4a5bcf53f8 100644
--- a/Marlin/src/config/examples/Creality/Ender-4/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/Ender-4/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Felix/Configuration_adv.h b/Marlin/src/config/examples/Felix/Configuration_adv.h
index 00ab7db363..00c355a5cd 100644
--- a/Marlin/src/config/examples/Felix/Configuration_adv.h
+++ b/Marlin/src/config/examples/Felix/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h b/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
index aa1dd3d329..439be1705a 100644
--- a/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
+++ b/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h
index 5e18375ae6..4ed2e5d0f0 100644
--- a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h	
+++ b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h	
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h
index 5e18375ae6..4ed2e5d0f0 100644
--- a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h	
+++ b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h	
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h b/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
index 70f957ca54..29802c8d49 100644
--- a/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
+++ b/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h b/Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h
index a71eab4072..ee38261085 100644
--- a/Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h
+++ b/Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/MakerParts/Configuration_adv.h b/Marlin/src/config/examples/MakerParts/Configuration_adv.h
index 538f637b33..bb8b4f5db5 100644
--- a/Marlin/src/config/examples/MakerParts/Configuration_adv.h
+++ b/Marlin/src/config/examples/MakerParts/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h b/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
index cd97fedf99..9d37952195 100644
--- a/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
+++ b/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h b/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
index 0324882a4a..760fb7b56b 100644
--- a/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
+++ b/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h b/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
index 3166336ade..acd86a336c 100644
--- a/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
+++ b/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h b/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
index ee8ab05db7..6e5e729c1f 100644
--- a/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
+++ b/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
@@ -840,9 +840,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/RigidBot/Configuration_adv.h b/Marlin/src/config/examples/RigidBot/Configuration_adv.h
index 3da6611f04..b39dd81e88 100644
--- a/Marlin/src/config/examples/RigidBot/Configuration_adv.h
+++ b/Marlin/src/config/examples/RigidBot/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/SCARA/Configuration_adv.h b/Marlin/src/config/examples/SCARA/Configuration_adv.h
index 59351c734c..09d1259c77 100644
--- a/Marlin/src/config/examples/SCARA/Configuration_adv.h
+++ b/Marlin/src/config/examples/SCARA/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h b/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
index 5f3b3a50cb..8393383c08 100644
--- a/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
+++ b/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/TheBorg/Configuration_adv.h b/Marlin/src/config/examples/TheBorg/Configuration_adv.h
index d7bdbcd4f8..16350e7bb7 100644
--- a/Marlin/src/config/examples/TheBorg/Configuration_adv.h
+++ b/Marlin/src/config/examples/TheBorg/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h b/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
index b5dc6bd095..7702d7485a 100644
--- a/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
+++ b/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h b/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
index 1e50c0178e..76adbf628e 100644
--- a/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
+++ b/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h b/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
index 6f8deff9e8..844a4ad753 100644
--- a/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
+++ b/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
@@ -835,9 +835,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h b/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
index 3ca8f2999a..e07138bab7 100644
--- a/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
+++ b/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h b/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
index 16d547804f..2bf5925727 100644
--- a/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h	
+++ b/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h	
@@ -834,9 +834,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h b/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
index 5f2f0e5df9..e096e76131 100644
--- a/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
@@ -834,9 +834,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h b/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h
index ef518d9be9..727dcb5b46 100644
--- a/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h
@@ -834,9 +834,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h b/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
index 79d016523e..4812e6a4ca 100644
--- a/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
@@ -834,9 +834,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/delta/generic/Configuration_adv.h b/Marlin/src/config/examples/delta/generic/Configuration_adv.h
index 79d016523e..4812e6a4ca 100644
--- a/Marlin/src/config/examples/delta/generic/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/generic/Configuration_adv.h
@@ -834,9 +834,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h b/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
index 79d016523e..4812e6a4ca 100644
--- a/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
@@ -834,9 +834,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h b/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
index 449b9e2516..4ff9a3fcb7 100644
--- a/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
@@ -839,9 +839,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h b/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
index a25bc32e59..b11ac887f1 100644
--- a/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
@@ -834,9 +834,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h b/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
index f0520426d2..00c4676fdb 100644
--- a/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
+++ b/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/makibox/Configuration_adv.h b/Marlin/src/config/examples/makibox/Configuration_adv.h
index 8e8bb7bc18..d29730d8de 100644
--- a/Marlin/src/config/examples/makibox/Configuration_adv.h
+++ b/Marlin/src/config/examples/makibox/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h b/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
index 348dec0e14..92cd3e8b54 100644
--- a/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
+++ b/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
@@ -832,9 +832,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/config/examples/wt150/Configuration_adv.h b/Marlin/src/config/examples/wt150/Configuration_adv.h
index 09d2229ef4..17bd7b4a50 100644
--- a/Marlin/src/config/examples/wt150/Configuration_adv.h
+++ b/Marlin/src/config/examples/wt150/Configuration_adv.h
@@ -833,9 +833,22 @@
 // Moves (or segments) with fewer steps than this will be joined with the next move
 #define MIN_STEPS_PER_SEGMENT 6
 
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ *    0 : No delay (Expect at least 10µS since one Stepper ISR must transpire)
+ *   20 : Minimum for TMC2xxx drivers
+ *  200 : Minimum for A4988 drivers
+ *  500 : Minimum for LV8729 drivers (guess, no info in datasheet)
+ *  650 : Minimum for DRV8825 drivers
+ * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet)
+ *15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ */
+#define MINIMUM_STEPPER_DIR_DELAY 0
+
 /**
  * Minimum stepper driver pulse width (in µs)
  *   0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ *   1 : Minimum for A4988 stepper drivers
  *   1 : Minimum for LV8729 stepper drivers
  *   2 : Minimum for DRV8825 stepper drivers
  *   3 : Minimum for TB6600 stepper drivers
diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp
index 45f23b7a18..4208924af9 100644
--- a/Marlin/src/module/stepper.cpp
+++ b/Marlin/src/module/stepper.cpp
@@ -332,6 +332,11 @@ void Stepper::set_directions() {
       }
     #endif
   #endif // !LIN_ADVANCE
+
+  // A small delay may be needed after changing direction
+  #if MINIMUM_STEPPER_DIR_DELAY > 0
+    DELAY_NS(MINIMUM_STEPPER_DIR_DELAY);
+  #endif
 }
 
 #if ENABLED(S_CURVE_ACCELERATION)
-- 
GitLab