浏览代码

Add TMC2209 support (#14249)

Scott Lahteine 4 年前
父节点
当前提交
4df4c47994
没有帐户链接到提交者的电子邮件
共有 100 个文件被更改,包括 1427 次插入397 次删除
  1. 4
    4
      Marlin/Configuration.h
  2. 30
    7
      Marlin/Configuration_adv.h
  3. 1
    1
      Marlin/Makefile
  4. 2
    2
      Marlin/src/Marlin.cpp
  5. 9
    0
      Marlin/src/core/drivers.h
  6. 56
    28
      Marlin/src/feature/tmc_util.cpp
  7. 93
    20
      Marlin/src/feature/tmc_util.h
  8. 10
    10
      Marlin/src/gcode/feature/trinamic/M911-M914.cpp
  9. 5
    5
      Marlin/src/gcode/gcode.h
  10. 3
    3
      Marlin/src/inc/Conditionals_post.h
  11. 124
    78
      Marlin/src/inc/SanityCheck.h
  12. 6
    6
      Marlin/src/lcd/extensible_ui/ui_api.cpp
  13. 1
    1
      Marlin/src/lcd/menu/menu_tmc.cpp
  14. 17
    17
      Marlin/src/module/configuration_store.cpp
  15. 84
    39
      Marlin/src/module/stepper_indirection.cpp
  16. 4
    4
      Marlin/src/module/stepper_indirection.h
  17. 2
    2
      Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h
  18. 1
    1
      Marlin/src/pins/pins_FYSETC_F6_13.h
  19. 2
    2
      Marlin/src/pins/pins_MKS_SBASE.h
  20. 1
    1
      Marlin/src/pins/pins_MKS_SGEN.h
  21. 2
    2
      Marlin/src/pins/pins_RAMPS.h
  22. 2
    2
      Marlin/src/pins/pins_RAMPS_FD_V1.h
  23. 2
    2
      Marlin/src/pins/pins_RAMPS_LINUX.h
  24. 2
    2
      Marlin/src/pins/pins_RAMPS_RE_ARM.h
  25. 3
    2
      buildroot/share/tests/megaatmega2560-tests
  26. 4
    4
      config/default/Configuration.h
  27. 23
    0
      config/default/Configuration_adv.h
  28. 4
    4
      config/examples/3DFabXYZ/Migbot/Configuration.h
  29. 23
    0
      config/examples/3DFabXYZ/Migbot/Configuration_adv.h
  30. 4
    4
      config/examples/AlephObjects/TAZ4/Configuration.h
  31. 23
    0
      config/examples/AlephObjects/TAZ4/Configuration_adv.h
  32. 4
    4
      config/examples/AliExpress/CL-260/Configuration.h
  33. 4
    4
      config/examples/AliExpress/UM2pExt/Configuration.h
  34. 23
    0
      config/examples/AliExpress/UM2pExt/Configuration_adv.h
  35. 4
    4
      config/examples/Anet/A2/Configuration.h
  36. 23
    0
      config/examples/Anet/A2/Configuration_adv.h
  37. 4
    4
      config/examples/Anet/A2plus/Configuration.h
  38. 23
    0
      config/examples/Anet/A2plus/Configuration_adv.h
  39. 4
    4
      config/examples/Anet/A6/Configuration.h
  40. 23
    0
      config/examples/Anet/A6/Configuration_adv.h
  41. 4
    4
      config/examples/Anet/A8/Configuration.h
  42. 23
    0
      config/examples/Anet/A8/Configuration_adv.h
  43. 4
    4
      config/examples/Anet/A8plus/Configuration.h
  44. 23
    0
      config/examples/Anet/A8plus/Configuration_adv.h
  45. 4
    4
      config/examples/Anet/E16/Configuration.h
  46. 23
    0
      config/examples/Anet/E16/Configuration_adv.h
  47. 4
    4
      config/examples/AnyCubic/i3/Configuration.h
  48. 23
    0
      config/examples/AnyCubic/i3/Configuration_adv.h
  49. 4
    4
      config/examples/ArmEd/Configuration.h
  50. 23
    0
      config/examples/ArmEd/Configuration_adv.h
  51. 4
    4
      config/examples/Azteeg/X5GT/Configuration.h
  52. 4
    4
      config/examples/BIBO/TouchX/cyclops/Configuration.h
  53. 23
    0
      config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
  54. 4
    4
      config/examples/BIBO/TouchX/default/Configuration.h
  55. 23
    0
      config/examples/BIBO/TouchX/default/Configuration_adv.h
  56. 4
    4
      config/examples/BQ/Hephestos/Configuration.h
  57. 23
    0
      config/examples/BQ/Hephestos/Configuration_adv.h
  58. 4
    4
      config/examples/BQ/Hephestos_2/Configuration.h
  59. 23
    0
      config/examples/BQ/Hephestos_2/Configuration_adv.h
  60. 4
    4
      config/examples/BQ/WITBOX/Configuration.h
  61. 23
    0
      config/examples/BQ/WITBOX/Configuration_adv.h
  62. 4
    4
      config/examples/Cartesio/Configuration.h
  63. 23
    0
      config/examples/Cartesio/Configuration_adv.h
  64. 4
    4
      config/examples/Creality/CR-10/Configuration.h
  65. 23
    0
      config/examples/Creality/CR-10/Configuration_adv.h
  66. 4
    4
      config/examples/Creality/CR-10S/Configuration.h
  67. 23
    0
      config/examples/Creality/CR-10S/Configuration_adv.h
  68. 4
    4
      config/examples/Creality/CR-10_5S/Configuration.h
  69. 23
    0
      config/examples/Creality/CR-10_5S/Configuration_adv.h
  70. 4
    4
      config/examples/Creality/CR-10mini/Configuration.h
  71. 23
    0
      config/examples/Creality/CR-10mini/Configuration_adv.h
  72. 4
    4
      config/examples/Creality/CR-8/Configuration.h
  73. 23
    0
      config/examples/Creality/CR-8/Configuration_adv.h
  74. 4
    4
      config/examples/Creality/Ender-2/Configuration.h
  75. 23
    0
      config/examples/Creality/Ender-2/Configuration_adv.h
  76. 4
    4
      config/examples/Creality/Ender-3/Configuration.h
  77. 23
    0
      config/examples/Creality/Ender-3/Configuration_adv.h
  78. 4
    4
      config/examples/Creality/Ender-4/Configuration.h
  79. 23
    0
      config/examples/Creality/Ender-4/Configuration_adv.h
  80. 4
    4
      config/examples/Dagoma/Disco Ultimate/Configuration.h
  81. 23
    0
      config/examples/Dagoma/Disco Ultimate/Configuration_adv.h
  82. 4
    4
      config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
  83. 23
    0
      config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration_adv.h
  84. 4
    4
      config/examples/Einstart-S/Configuration.h
  85. 23
    0
      config/examples/Einstart-S/Configuration_adv.h
  86. 4
    4
      config/examples/Felix/Configuration.h
  87. 23
    0
      config/examples/Felix/Configuration_adv.h
  88. 4
    4
      config/examples/Felix/DUAL/Configuration.h
  89. 4
    4
      config/examples/FlashForge/CreatorPro/Configuration.h
  90. 23
    0
      config/examples/FlashForge/CreatorPro/Configuration_adv.h
  91. 4
    4
      config/examples/FolgerTech/i3-2020/Configuration.h
  92. 23
    0
      config/examples/FolgerTech/i3-2020/Configuration_adv.h
  93. 4
    4
      config/examples/Formbot/Raptor/Configuration.h
  94. 23
    0
      config/examples/Formbot/Raptor/Configuration_adv.h
  95. 4
    4
      config/examples/Formbot/T_Rex_2+/Configuration.h
  96. 23
    0
      config/examples/Formbot/T_Rex_2+/Configuration_adv.h
  97. 4
    4
      config/examples/Formbot/T_Rex_3/Configuration.h
  98. 23
    0
      config/examples/Formbot/T_Rex_3/Configuration_adv.h
  99. 4
    4
      config/examples/Geeetech/A10/Configuration.h
  100. 0
    0
      config/examples/Geeetech/A10/Configuration_adv.h

+ 4
- 4
Marlin/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 30
- 7
Marlin/Configuration_adv.h 查看文件

@@ -1716,7 +1716,6 @@
1716 1716
   //#define E5_CS_PIN         -1
1717 1717
 
1718 1718
   /**
1719
-   * Use software SPI for TMC2130.
1720 1719
    * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
1721 1720
    * The default SW SPI pins are defined the respective pins files,
1722 1721
    * but you can override or define them here.
@@ -1727,6 +1726,29 @@
1727 1726
   //#define TMC_SW_SCK        -1
1728 1727
 
1729 1728
   /**
1729
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1730
+   * Set the address using jumpers on pins MS1 and MS2.
1731
+   * Address | MS1  | MS2
1732
+   *       0 | LOW  | LOW
1733
+   *       1 | HIGH | LOW
1734
+   *       2 | LOW  | HIGH
1735
+   *       3 | HIGH | HIGH
1736
+   */
1737
+  #define  X_SLAVE_ADDRESS 0
1738
+  #define  Y_SLAVE_ADDRESS 0
1739
+  #define  Z_SLAVE_ADDRESS 0
1740
+  #define X2_SLAVE_ADDRESS 0
1741
+  #define Y2_SLAVE_ADDRESS 0
1742
+  #define Z2_SLAVE_ADDRESS 0
1743
+  #define Z3_SLAVE_ADDRESS 0
1744
+  #define E0_SLAVE_ADDRESS 0
1745
+  #define E1_SLAVE_ADDRESS 0
1746
+  #define E2_SLAVE_ADDRESS 0
1747
+  #define E3_SLAVE_ADDRESS 0
1748
+  #define E4_SLAVE_ADDRESS 0
1749
+  #define E5_SLAVE_ADDRESS 0
1750
+
1751
+  /**
1730 1752
    * Software enable
1731 1753
    *
1732 1754
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
@@ -1735,7 +1757,7 @@
1735 1757
   //#define SOFTWARE_DRIVER_ENABLE
1736 1758
 
1737 1759
   /**
1738
-   * TMC2130, TMC2160, TMC2208, TMC5130 and TMC5160 only
1760
+   * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
1739 1761
    * Use Trinamic's ultra quiet stepping mode.
1740 1762
    * When disabled, Marlin will use spreadCycle stepping mode.
1741 1763
    */
@@ -1761,7 +1783,7 @@
1761 1783
 
1762 1784
   /**
1763 1785
    * Monitor Trinamic drivers for error conditions,
1764
-   * like overtemperature and short to ground. TMC2208 requires hardware serial.
1786
+   * like overtemperature and short to ground.
1765 1787
    * In the case of overtemperature Marlin can decrease the driver current until error condition clears.
1766 1788
    * Other detected conditions can be used to stop the current print.
1767 1789
    * Relevant g-codes:
@@ -1779,7 +1801,7 @@
1779 1801
   #endif
1780 1802
 
1781 1803
   /**
1782
-   * TMC2130, TMC2160, TMC2208, TMC5130 and TMC5160 only
1804
+   * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
1783 1805
    * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
1784 1806
    * This mode allows for faster movements at the expense of higher noise levels.
1785 1807
    * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD.
@@ -1802,7 +1824,7 @@
1802 1824
   #define E5_HYBRID_THRESHOLD     30
1803 1825
 
1804 1826
   /**
1805
-   * TMC2130, TMC2160, TMC2660, TMC5130, and TMC5160 only
1827
+   * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
1806 1828
    * Use StallGuard2 to sense an obstacle and trigger an endstop.
1807 1829
    * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
1808 1830
    * X, Y, and Z homing will always be done in spreadCycle mode.
@@ -1814,7 +1836,7 @@
1814 1836
    * It is advised to set X/Y/Z_HOME_BUMP_MM to 0.
1815 1837
    * M914 X/Y/Z to live tune the setting
1816 1838
    */
1817
-  //#define SENSORLESS_HOMING // TMC2130 only
1839
+  //#define SENSORLESS_HOMING // StallGuard capable drivers only
1818 1840
 
1819 1841
   /**
1820 1842
    * Use StallGuard2 to probe the bed with the nozzle.
@@ -1822,9 +1844,10 @@
1822 1844
    * CAUTION: This could cause damage to machines that use a lead screw or threaded rod
1823 1845
    *          to move the Z axis. Take extreme care when attempting to enable this feature.
1824 1846
    */
1825
-  //#define SENSORLESS_PROBING // TMC2130 only
1847
+  //#define SENSORLESS_PROBING // StallGuard capable drivers only
1826 1848
 
1827 1849
   #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
1850
+    // TMC2209: 0...255. TMC2130: -64...63
1828 1851
     #define X_STALL_SENSITIVITY  8
1829 1852
     #define Y_STALL_SENSITIVITY  8
1830 1853
     //#define Z_STALL_SENSITIVITY  8

+ 1
- 1
Marlin/Makefile 查看文件

@@ -593,7 +593,7 @@ ifeq ($(U8GLIB), 1)
593 593
 endif
594 594
 
595 595
 ifeq ($(TMC), 1)
596
-  LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp  GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp  RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
596
+  LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
597 597
 endif
598 598
 
599 599
 ifeq ($(RELOC_WORKAROUND), 1)

+ 2
- 2
Marlin/src/Marlin.cpp 查看文件

@@ -861,8 +861,8 @@ void setup() {
861 861
 
862 862
   setup_killpin();
863 863
 
864
-  #if HAS_DRIVER(TMC2208)
865
-    tmc2208_serial_begin();
864
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
865
+    tmc_serial_begin();
866 866
   #endif
867 867
 
868 868
   setup_powerhold();

+ 9
- 0
Marlin/src/core/drivers.h 查看文件

@@ -37,6 +37,8 @@
37 37
 #define _TMC2160_STANDALONE 2161
38 38
 #define _TMC2208            2208
39 39
 #define _TMC2208_STANDALONE 0x00A
40
+#define _TMC2209            2209
41
+#define _TMC2209_STANDALONE 0x00D
40 42
 #define _TMC26X             0x10B
41 43
 #define _TMC26X_STANDALONE  0x00B
42 44
 #define _TMC2660            2660
@@ -77,6 +79,7 @@
77 79
 #define HAS_TRINAMIC (    HAS_DRIVER(TMC2130) \
78 80
                        || HAS_DRIVER(TMC2160) \
79 81
                        || HAS_DRIVER(TMC2208) \
82
+                       || HAS_DRIVER(TMC2209) \
80 83
                        || HAS_DRIVER(TMC2660) \
81 84
                        || HAS_DRIVER(TMC5130) \
82 85
                        || HAS_DRIVER(TMC5160) )
@@ -84,6 +87,7 @@
84 87
 #define AXIS_IS_TMC(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
85 88
                            || AXIS_DRIVER_TYPE(A,TMC2160) \
86 89
                            || AXIS_DRIVER_TYPE(A,TMC2208) \
90
+                           || AXIS_DRIVER_TYPE(A,TMC2209) \
87 91
                            || AXIS_DRIVER_TYPE(A,TMC2660) \
88 92
                            || AXIS_DRIVER_TYPE(A,TMC5130) \
89 93
                            || AXIS_DRIVER_TYPE(A,TMC5160) )
@@ -96,8 +100,12 @@
96 100
                            || AXIS_DRIVER_TYPE(A,TMC5130) \
97 101
                            || AXIS_DRIVER_TYPE(A,TMC5160) )
98 102
 
103
+#define AXIS_HAS_UART(A) (    AXIS_DRIVER_TYPE(A,TMC2208) \
104
+                           || AXIS_DRIVER_TYPE(A,TMC2209) )
105
+
99 106
 #define AXIS_HAS_STALLGUARD(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
100 107
                                    || AXIS_DRIVER_TYPE(A,TMC2160) \
108
+                                   || AXIS_DRIVER_TYPE(A,TMC2209) \
101 109
                                    || AXIS_DRIVER_TYPE(A,TMC2660) \
102 110
                                    || AXIS_DRIVER_TYPE(A,TMC5130) \
103 111
                                    || AXIS_DRIVER_TYPE(A,TMC5160) )
@@ -105,5 +113,6 @@
105 113
 #define AXIS_HAS_STEALTHCHOP(A)  (    AXIS_DRIVER_TYPE(A,TMC2130) \
106 114
                                    || AXIS_DRIVER_TYPE(A,TMC2160) \
107 115
                                    || AXIS_DRIVER_TYPE(A,TMC2208) \
116
+                                   || AXIS_DRIVER_TYPE(A,TMC2209) \
108 117
                                    || AXIS_DRIVER_TYPE(A,TMC5130) \
109 118
                                    || AXIS_DRIVER_TYPE(A,TMC5160) )

+ 56
- 28
Marlin/src/feature/tmc_util.cpp 查看文件

@@ -69,7 +69,7 @@
69 69
          #endif
70 70
       ;
71 71
     #if ENABLED(TMC_DEBUG)
72
-      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208)
72
+      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
73 73
         uint8_t cs_actual;
74 74
       #endif
75 75
       #if HAS_STALLGUARD
@@ -97,6 +97,7 @@
97 97
       TMC_driver_data data;
98 98
       const auto ds = data.drv_status = st.DRV_STATUS();
99 99
       #ifdef __AVR__
100
+
100 101
         // 8-bit optimization saves up to 70 bytes of PROGMEM per axis
101 102
         uint8_t spart;
102 103
         #if ENABLED(TMC_DEBUG)
@@ -115,6 +116,7 @@
115 116
           data.is_standstill = TEST(spart, STST_bp - 24);
116 117
           data.sg_result_reasonable = !data.is_standstill; // sg_result has no reasonable meaning while standstill
117 118
         #endif
119
+
118 120
       #else // !__AVR__
119 121
 
120 122
         data.is_ot = TEST(ds, OT_bp);
@@ -137,7 +139,7 @@
137 139
 
138 140
   #endif // HAS_TMCX1X0
139 141
 
140
-  #if HAS_DRIVER(TMC2208)
142
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
141 143
 
142 144
     #if ENABLED(TMC_DEBUG)
143 145
       static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); }
@@ -174,7 +176,7 @@
174 176
       return data;
175 177
     }
176 178
 
177
-  #endif // TMC2208
179
+  #endif // TMC2208 || TMC2209
178 180
 
179 181
   #if HAS_DRIVER(TMC2660)
180 182
 
@@ -228,9 +230,7 @@
228 230
     SERIAL_ECHO(timestamp);
229 231
     SERIAL_ECHOPGM(": ");
230 232
     st.printLabel();
231
-    SERIAL_ECHOPGM(" driver overtemperature warning! (");
232
-    SERIAL_ECHO(st.getMilliamps());
233
-    SERIAL_ECHOLNPGM("mA)");
233
+    SERIAL_ECHOLNPAIR(" driver overtemperature warning! (", st.getMilliamps(), "mA)");
234 234
   }
235 235
 
236 236
   template<typename TMC>
@@ -239,7 +239,7 @@
239 239
     st.printLabel();
240 240
     SERIAL_CHAR(':'); SERIAL_PRINT(pwm_scale, DEC);
241 241
     #if ENABLED(TMC_DEBUG)
242
-      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208)
242
+      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
243 243
         SERIAL_CHAR('/'); SERIAL_PRINT(data.cs_actual, DEC);
244 244
       #endif
245 245
       #if HAS_STALLGUARD
@@ -386,7 +386,7 @@
386 386
       if ((report_tmc_status_interval = update_interval))
387 387
         SERIAL_ECHOLNPGM("axis:pwm_scale"
388 388
           #if HAS_STEALTHCHOP
389
-            "/current_scale"
389
+            "/curr_scale"
390 390
           #endif
391 391
           #if HAS_STALLGUARD
392 392
             "/mech_load"
@@ -398,6 +398,7 @@
398 398
 
399 399
   enum TMC_debug_enum : char {
400 400
     TMC_CODES,
401
+    TMC_UART_ADDR,
401 402
     TMC_ENABLED,
402 403
     TMC_CURRENT,
403 404
     TMC_RMS_CURRENT,
@@ -482,9 +483,9 @@
482 483
   #if HAS_TMCX1X0
483 484
     static void _tmc_parse_drv_status(TMC2130Stepper &st, const TMC_drv_status_enum i) {
484 485
       switch (i) {
485
-        case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('X'); break;
486
-        case TMC_SG_RESULT:  SERIAL_PRINT(st.sg_result(), DEC);   break;
487
-        case TMC_FSACTIVE:   if (st.fsactive())   SERIAL_CHAR('X'); break;
486
+        case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('*'); break;
487
+        case TMC_SG_RESULT:  SERIAL_PRINT(st.sg_result(), DEC); break;
488
+        case TMC_FSACTIVE:   if (st.fsactive())   SERIAL_CHAR('*'); break;
488 489
         case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
489 490
         default: break;
490 491
       }
@@ -515,22 +516,37 @@
515 516
     }
516 517
   #endif
517 518
 
518
-  #if HAS_DRIVER(TMC2208)
519
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
519 520
     static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
520 521
       switch (i) {
521 522
         case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break;
522 523
         case TMC_STEALTHCHOP: serialprint_truefalse(st.stealth()); break;
523
-        case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('X'); break;
524
-        case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('X'); break;
524
+        case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('*'); break;
525
+        case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('*'); break;
525 526
         default: break;
526 527
       }
527 528
     }
529
+
530
+    #if HAS_DRIVER(TMC2209)
531
+      template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
532
+      static void _tmc_status(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const TMC_debug_enum i) {
533
+        switch (i) {
534
+          case TMC_SGT:       SERIAL_PRINT(st.SGTHRS(), DEC); break;
535
+          case TMC_UART_ADDR: SERIAL_PRINT(st.get_address(), DEC); break;
536
+          default:
537
+            TMC2208Stepper *parent = &st;
538
+            _tmc_status(*parent, i);
539
+            break;
540
+        }
541
+      }
542
+    #endif
543
+
528 544
     static void _tmc_parse_drv_status(TMC2208Stepper &st, const TMC_drv_status_enum i) {
529 545
       switch (i) {
530
-        case TMC_T157: if (st.t157()) SERIAL_CHAR('X'); break;
531
-        case TMC_T150: if (st.t150()) SERIAL_CHAR('X'); break;
532
-        case TMC_T143: if (st.t143()) SERIAL_CHAR('X'); break;
533
-        case TMC_T120: if (st.t120()) SERIAL_CHAR('X'); break;
546
+        case TMC_T157: if (st.t157()) SERIAL_CHAR('*'); break;
547
+        case TMC_T150: if (st.t150()) SERIAL_CHAR('*'); break;
548
+        case TMC_T143: if (st.t143()) SERIAL_CHAR('*'); break;
549
+        case TMC_T120: if (st.t120()) SERIAL_CHAR('*'); break;
534 550
         case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
535 551
         default: break;
536 552
       }
@@ -620,13 +636,13 @@
620 636
     SERIAL_CHAR('\t');
621 637
     switch (i) {
622 638
       case TMC_DRV_CODES:     st.printLabel();  break;
623
-      case TMC_STST:          if (st.stst())         SERIAL_CHAR('X'); break;
624
-      case TMC_OLB:           if (st.olb())          SERIAL_CHAR('X'); break;
625
-      case TMC_OLA:           if (st.ola())          SERIAL_CHAR('X'); break;
626
-      case TMC_S2GB:          if (st.s2gb())         SERIAL_CHAR('X'); break;
627
-      case TMC_S2GA:          if (st.s2ga())         SERIAL_CHAR('X'); break;
628
-      case TMC_DRV_OTPW:      if (st.otpw())         SERIAL_CHAR('X'); break;
629
-      case TMC_OT:            if (st.ot())           SERIAL_CHAR('X'); break;
639
+      case TMC_STST:          if (st.stst())         SERIAL_CHAR('*'); break;
640
+      case TMC_OLB:           if (st.olb())          SERIAL_CHAR('*'); break;
641
+      case TMC_OLA:           if (st.ola())          SERIAL_CHAR('*'); break;
642
+      case TMC_S2GB:          if (st.s2gb())         SERIAL_CHAR('*'); break;
643
+      case TMC_S2GA:          if (st.s2ga())         SERIAL_CHAR('*'); break;
644
+      case TMC_DRV_OTPW:      if (st.otpw())         SERIAL_CHAR('*'); break;
645
+      case TMC_OT:            if (st.ot())           SERIAL_CHAR('*'); break;
630 646
       case TMC_DRV_STATUS_HEX: {
631 647
         const uint32_t drv_status = st.DRV_STATUS();
632 648
         SERIAL_CHAR('\t');
@@ -759,6 +775,9 @@
759 775
     #define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL);  tmc_debug_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
760 776
     #define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
761 777
     TMC_REPORT("\t",                 TMC_CODES);
778
+    #if HAS_DRIVER(TMC2209)
779
+      TMC_REPORT("Address\t",        TMC_UART_ADDR);
780
+    #endif
762 781
     TMC_REPORT("Enabled\t",          TMC_ENABLED);
763 782
     TMC_REPORT("Set current",        TMC_CURRENT);
764 783
     TMC_REPORT("RMS current",        TMC_RMS_CURRENT);
@@ -770,7 +789,7 @@
770 789
     #endif
771 790
     TMC_REPORT("CS actual\t",        TMC_CS_ACTUAL);
772 791
     TMC_REPORT("PWM scale",          TMC_PWM_SCALE);
773
-    #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208)
792
+    #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
774 793
       TMC_REPORT("vsense\t",         TMC_VSENSE);
775 794
     #endif
776 795
     TMC_REPORT("stealthChop",        TMC_STEALTHCHOP);
@@ -802,7 +821,7 @@
802 821
     DRV_REPORT("s2ga\t",             TMC_S2GA);
803 822
     DRV_REPORT("otpw\t",             TMC_DRV_OTPW);
804 823
     DRV_REPORT("ot\t",               TMC_OT);
805
-    #if HAS_DRIVER(TMC2208)
824
+    #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
806 825
       DRV_REPORT("157C\t",           TMC_T157);
807 826
       DRV_REPORT("150C\t",           TMC_T150);
808 827
       DRV_REPORT("143C\t",           TMC_T143);
@@ -826,7 +845,7 @@
826 845
       }
827 846
     }
828 847
   #endif
829
-  #if HAS_DRIVER(TMC2208)
848
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
830 849
     static void tmc_get_ic_registers(TMC2208Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); }
831 850
   #endif
832 851
 
@@ -961,6 +980,15 @@
961 980
     st.en_pwm_mode(restore_stealth);
962 981
     st.diag1_stall(false);
963 982
   }
983
+
984
+  bool tmc_enable_stallguard(TMC2209Stepper &st) {
985
+    st.TCOOLTHRS(0xFFFFF);
986
+    return true;
987
+  }
988
+  void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth) {
989
+    st.TCOOLTHRS(0);
990
+  }
991
+
964 992
   bool tmc_enable_stallguard(TMC2660Stepper) {
965 993
     // TODO
966 994
     return false;

+ 93
- 20
Marlin/src/feature/tmc_util.h 查看文件

@@ -92,7 +92,7 @@ class TMCStorage {
92 92
         uint8_t hybrid_thrs = 0;
93 93
       #endif
94 94
       #if USE_SENSORLESS
95
-        int8_t homing_thrs = 0;
95
+        int16_t homing_thrs = 0;
96 96
       #endif
97 97
     } stored;
98 98
 };
@@ -100,10 +100,10 @@ class TMCStorage {
100 100
 template<class TMC, char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
101 101
 class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
102 102
   public:
103
-    TMCMarlin(uint16_t cs_pin, float RS) :
103
+    TMCMarlin(const uint16_t cs_pin, const float RS) :
104 104
       TMC(cs_pin, RS)
105 105
       {}
106
-    TMCMarlin(uint16_t CS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK) :
106
+    TMCMarlin(const uint16_t CS, const float RS, const uint16_t pinMOSI, const uint16_t pinMISO, const uint16_t pinSCK) :
107 107
       TMC(CS, RS, pinMOSI, pinMISO, pinSCK)
108 108
       {}
109 109
     inline uint16_t rms_current() { return TMC::rms_current(); }
@@ -111,7 +111,7 @@ class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
111 111
       this->val_mA = mA;
112 112
       TMC::rms_current(mA);
113 113
     }
114
-    inline void rms_current(uint16_t mA, float mult) {
114
+    inline void rms_current(const uint16_t mA, const float mult) {
115 115
       this->val_mA = mA;
116 116
       TMC::rms_current(mA, mult);
117 117
     }
@@ -132,8 +132,9 @@ class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
132 132
       }
133 133
     #endif
134 134
     #if USE_SENSORLESS
135
-      inline int8_t sgt() { return TMC::sgt(); }
136
-      void sgt(const int8_t sgt_val) {
135
+      inline int16_t homing_threshold() { return TMC::sgt(); }
136
+      void homing_threshold(int16_t sgt_val) {
137
+        sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
137 138
         TMC::sgt(sgt_val);
138 139
         #if HAS_LCD_MENU
139 140
           this->stored.homing_thrs = sgt_val;
@@ -148,25 +149,28 @@ class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
148 149
         inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
149 150
       #endif
150 151
       #if USE_SENSORLESS
151
-        inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); }
152
+        inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
152 153
       #endif
153 154
     #endif
155
+
156
+    static constexpr int8_t sgt_min = -64,
157
+                            sgt_max =  63;
154 158
 };
155 159
 template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
156 160
 class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2208Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
157 161
   public:
158
-    TMCMarlin(Stream * SerialPort, float RS, bool has_rx=true) :
159
-      TMC2208Stepper(SerialPort, RS, has_rx=true)
162
+    TMCMarlin(Stream * SerialPort, const float RS, const uint8_t) :
163
+      TMC2208Stepper(SerialPort, RS, /*has_rx=*/true)
160 164
       {}
161
-    TMCMarlin(uint16_t RX, uint16_t TX, float RS, bool has_rx=true) :
162
-      TMC2208Stepper(RX, TX, RS, has_rx=true)
165
+    TMCMarlin(const uint16_t RX, const uint16_t TX, const float RS, const uint8_t, const bool has_rx=true) :
166
+      TMC2208Stepper(RX, TX, RS, has_rx)
163 167
       {}
164 168
     uint16_t rms_current() { return TMC2208Stepper::rms_current(); }
165
-    inline void rms_current(uint16_t mA) {
169
+    inline void rms_current(const uint16_t mA) {
166 170
       this->val_mA = mA;
167 171
       TMC2208Stepper::rms_current(mA);
168 172
     }
169
-    inline void rms_current(uint16_t mA, float mult) {
173
+    inline void rms_current(const uint16_t mA, const float mult) {
170 174
       this->val_mA = mA;
171 175
       TMC2208Stepper::rms_current(mA, mult);
172 176
     }
@@ -195,24 +199,87 @@ class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC220
195 199
       #endif
196 200
     #endif
197 201
 };
202
+
203
+template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
204
+class TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2209Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
205
+  public:
206
+    TMCMarlin(Stream * SerialPort, const float RS, const uint8_t addr) :
207
+      TMC2209Stepper(SerialPort, RS, addr)
208
+      {}
209
+    TMCMarlin(const uint16_t RX, const uint16_t TX, const float RS, const uint8_t addr, const bool) :
210
+      TMC2209Stepper(RX, TX, RS, addr)
211
+      {}
212
+    uint8_t get_address() { return slave_address; }
213
+    uint16_t rms_current() { return TMC2209Stepper::rms_current(); }
214
+    inline void rms_current(const uint16_t mA) {
215
+      this->val_mA = mA;
216
+      TMC2209Stepper::rms_current(mA);
217
+    }
218
+    inline void rms_current(const uint16_t mA, const float mult) {
219
+      this->val_mA = mA;
220
+      TMC2209Stepper::rms_current(mA, mult);
221
+    }
222
+
223
+    #if HAS_STEALTHCHOP
224
+      inline void refresh_stepping_mode() { en_spreadCycle(!this->stored.stealthChop_enabled); }
225
+      inline bool get_stealthChop_status() { return !this->en_spreadCycle(); }
226
+    #endif
227
+    #if ENABLED(HYBRID_THRESHOLD)
228
+      uint32_t get_pwm_thrs() {
229
+        return _tmc_thrs(this->microsteps(), this->TPWMTHRS(), planner.settings.axis_steps_per_mm[AXIS_ID]);
230
+      }
231
+      void set_pwm_thrs(const uint32_t thrs) {
232
+        TMC2209Stepper::TPWMTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID]));
233
+        #if HAS_LCD_MENU
234
+          this->stored.hybrid_thrs = thrs;
235
+        #endif
236
+      }
237
+    #endif
238
+    #if USE_SENSORLESS
239
+      inline int16_t homing_threshold() { return TMC2209Stepper::SGTHRS(); }
240
+      void homing_threshold(int16_t sgt_val) {
241
+        sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
242
+        TMC2209Stepper::SGTHRS(sgt_val);
243
+        #if HAS_LCD_MENU
244
+          this->stored.homing_thrs = sgt_val;
245
+        #endif
246
+      }
247
+    #endif
248
+
249
+    #if HAS_LCD_MENU
250
+      inline void refresh_stepper_current() { rms_current(this->val_mA); }
251
+
252
+      #if ENABLED(HYBRID_THRESHOLD)
253
+        inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
254
+      #endif
255
+      #if USE_SENSORLESS
256
+        inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
257
+      #endif
258
+    #endif
259
+
260
+    static constexpr uint8_t sgt_min = 0,
261
+                             sgt_max = 255;
262
+};
263
+
198 264
 template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
199 265
 class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2660Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
200 266
   public:
201
-    TMCMarlin(uint16_t cs_pin, float RS) :
267
+    TMCMarlin(const uint16_t cs_pin, const float RS) :
202 268
       TMC2660Stepper(cs_pin, RS)
203 269
       {}
204
-    TMCMarlin(uint16_t CS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK) :
270
+    TMCMarlin(const uint16_t CS, const float RS, const uint16_t pinMOSI, const uint16_t pinMISO, const uint16_t pinSCK) :
205 271
       TMC2660Stepper(CS, RS, pinMOSI, pinMISO, pinSCK)
206 272
       {}
207 273
     inline uint16_t rms_current() { return TMC2660Stepper::rms_current(); }
208
-    inline void rms_current(uint16_t mA) {
274
+    inline void rms_current(const uint16_t mA) {
209 275
       this->val_mA = mA;
210 276
       TMC2660Stepper::rms_current(mA);
211 277
     }
212 278
 
213 279
     #if USE_SENSORLESS
214
-      inline int8_t sgt() { return TMC2660Stepper::sgt(); }
215
-      void sgt(const int8_t sgt_val) {
280
+      inline int16_t homing_threshold() { return TMC2660Stepper::sgt(); }
281
+      void homing_threshold(int16_t sgt_val) {
282
+        sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
216 283
         TMC2660Stepper::sgt(sgt_val);
217 284
         #if HAS_LCD_MENU
218 285
           this->stored.homing_thrs = sgt_val;
@@ -224,9 +291,12 @@ class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC266
224 291
       inline void refresh_stepper_current() { rms_current(this->val_mA); }
225 292
 
226 293
       #if USE_SENSORLESS
227
-        inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); }
294
+        inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
228 295
       #endif
229 296
     #endif
297
+
298
+    static constexpr int8_t sgt_min = -64,
299
+                            sgt_max =  63;
230 300
 };
231 301
 
232 302
 template<typename TMC>
@@ -262,7 +332,7 @@ void tmc_print_current(TMC &st) {
262 332
   void tmc_print_sgt(TMC &st) {
263 333
     st.printLabel();
264 334
     SERIAL_ECHOPGM(" homing sensitivity: ");
265
-    SERIAL_PRINTLN(st.sgt(), DEC);
335
+    SERIAL_PRINTLN(st.homing_threshold(), DEC);
266 336
   }
267 337
 #endif
268 338
 
@@ -293,6 +363,9 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z
293 363
   bool tmc_enable_stallguard(TMC2130Stepper &st);
294 364
   void tmc_disable_stallguard(TMC2130Stepper &st, const bool restore_stealth);
295 365
 
366
+  bool tmc_enable_stallguard(TMC2209Stepper &st);
367
+  void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth);
368
+
296 369
   bool tmc_enable_stallguard(TMC2660Stepper);
297 370
   void tmc_disable_stallguard(TMC2660Stepper, const bool);
298 371
 #endif

+ 10
- 10
Marlin/src/gcode/feature/trinamic/M911-M914.cpp 查看文件

@@ -32,7 +32,7 @@
32 32
 
33 33
 #if ENABLED(MONITOR_DRIVER_STATUS)
34 34
 
35
-  #define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160))
35
+  #define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2209) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160))
36 36
   #define M91x_USE_E(N) (E_STEPPERS > N && M91x_USE(E##N))
37 37
 
38 38
   #define M91x_SOME_X (M91x_USE(X) || M91x_USE(X2))
@@ -41,7 +41,7 @@
41 41
   #define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5))
42 42
 
43 43
   #if !M91x_SOME_X && !M91x_SOME_Y && !M91x_SOME_Z && !M91x_SOME_E
44
-    #error "MONITOR_DRIVER_STATUS requires at least one TMC2130, TMC2208, or TMC2660."
44
+    #error "MONITOR_DRIVER_STATUS requires at least one TMC2130, 2160, 2208, 2209, 2660, 5130, or 5160."
45 45
   #endif
46 46
 
47 47
   /**
@@ -313,39 +313,39 @@
313 313
     bool report = true;
314 314
     const uint8_t index = parser.byteval('I');
315 315
     LOOP_XYZ(i) if (parser.seen(axis_codes[i])) {
316
-      const int8_t value = (int8_t)constrain(parser.value_int(), -64, 63);
316
+      const int16_t value = parser.value_int();
317 317
       report = false;
318 318
       switch (i) {
319 319
         #if X_SENSORLESS
320 320
           case X_AXIS:
321 321
             #if AXIS_HAS_STALLGUARD(X)
322
-              if (index < 2) stepperX.sgt(value);
322
+              if (index < 2) stepperX.homing_threshold(value);
323 323
             #endif
324 324
             #if AXIS_HAS_STALLGUARD(X2)
325
-              if (!(index & 1)) stepperX2.sgt(value);
325
+              if (!(index & 1)) stepperX2.homing_threshold(value);
326 326
             #endif
327 327
             break;
328 328
         #endif
329 329
         #if Y_SENSORLESS
330 330
           case Y_AXIS:
331 331
             #if AXIS_HAS_STALLGUARD(Y)
332
-              if (index < 2) stepperY.sgt(value);
332
+              if (index < 2) stepperY.homing_threshold(value);
333 333
             #endif
334 334
             #if AXIS_HAS_STALLGUARD(Y2)
335
-              if (!(index & 1)) stepperY2.sgt(value);
335
+              if (!(index & 1)) stepperY2.homing_threshold(value);
336 336
             #endif
337 337
             break;
338 338
         #endif
339 339
         #if Z_SENSORLESS
340 340
           case Z_AXIS:
341 341
             #if AXIS_HAS_STALLGUARD(Z)
342
-              if (index < 2) stepperZ.sgt(value);
342
+              if (index < 2) stepperZ.homing_threshold(value);
343 343
             #endif
344 344
             #if AXIS_HAS_STALLGUARD(Z2)
345
-              if (index == 0 || index == 2) stepperZ2.sgt(value);
345
+              if (index == 0 || index == 2) stepperZ2.homing_threshold(value);
346 346
             #endif
347 347
             #if AXIS_HAS_STALLGUARD(Z3)
348
-              if (index == 0 || index == 3) stepperZ3.sgt(value);
348
+              if (index == 0 || index == 3) stepperZ3.homing_threshold(value);
349 349
             #endif
350 350
             break;
351 351
         #endif

+ 5
- 5
Marlin/src/gcode/gcode.h 查看文件

@@ -139,7 +139,7 @@
139 139
  * M119 - Report endstops status.
140 140
  * M120 - Enable endstops detection.
141 141
  * M121 - Disable endstops detection.
142
- * M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470)
142
+ * M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660 or L6470)
143 143
  * M125 - Save current position and move to filament change position. (Requires PARK_HEAD_ON_PAUSE)
144 144
  * M126 - Solenoid Air Valve Open. (Requires BARICUDA)
145 145
  * M127 - Solenoid Air Valve Closed. (Requires BARICUDA)
@@ -218,7 +218,7 @@
218 218
  * M504 - Validate EEPROM contents. (Requires EEPROM_SETTINGS)
219 219
  * M524 - Abort the current SD print job started with M24. (Requires SDSUPPORT)
220 220
  * M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires SD_ABORT_ON_ENDSTOP_HIT)
221
- * M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130 or TMC2208)
221
+ * M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130/2160/2208/2209/5130/5160)
222 222
  * M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires ADVANCED_PAUSE_FEATURE)
223 223
  * M603 - Configure filament change: "M603 T<tool> U<unload_length> L<load_length>". (Requires ADVANCED_PAUSE_FEATURE)
224 224
  * M605 - Set Dual X-Carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE)
@@ -241,13 +241,13 @@
241 241
  * M869 - Report position encoder module error.
242 242
  * M876 - Handle Prompt Response. (Requires HOST_PROMPT_SUPPORT and not EMERGENCY_PARSER)
243 243
  * M900 - Get or Set Linear Advance K-factor. (Requires LIN_ADVANCE)
244
- * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470)
244
+ * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660 or L6470)
245 245
  * M907 - Set digital trimpot motor current using axis codes. (Requires a board with digital trimpots)
246 246
  * M908 - Control digital trimpot directly. (Requires DAC_STEPPER_CURRENT or DIGIPOTSS_PIN)
247 247
  * M909 - Print digipot/DAC current value. (Requires DAC_STEPPER_CURRENT)
248 248
  * M910 - Commit digipot/DAC value to external EEPROM via I2C. (Requires DAC_STEPPER_CURRENT)
249
- * M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
250
- * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
249
+ * M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660)
250
+ * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660)
251 251
  * M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD)
252 252
  * M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING)
253 253
  * M916 - L6470 tuning: Increase KVAL_HOLD until thermal warning. (Requires at least one _DRIVER_TYPE L6470)

+ 3
- 3
Marlin/src/inc/Conditionals_post.h 查看文件

@@ -493,7 +493,7 @@
493 493
  *       Preserve this ordering when adding new drivers.
494 494
  */
495 495
 
496
-#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE))
496
+#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC2209_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE))
497 497
 
498 498
 #ifndef MINIMUM_STEPPER_DIR_DELAY
499 499
   #if HAS_DRIVER(TB6560)
@@ -905,8 +905,8 @@
905 905
 #if HAS_TRINAMIC
906 906
   #define HAS_TMCX1X0       (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
907 907
   #define TMC_HAS_SPI       (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
908
-  #define HAS_STALLGUARD    (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
909
-  #define HAS_STEALTHCHOP   (HAS_TMCX1X0 || HAS_DRIVER(TMC2208))
908
+  #define HAS_STALLGUARD    (HAS_TMCX1X0 || HAS_DRIVER(TMC2209) || HAS_DRIVER(TMC2660))
909
+  #define HAS_STEALTHCHOP   (HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
910 910
 
911 911
   #define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
912 912
   #define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)

+ 124
- 78
Marlin/src/inc/SanityCheck.h 查看文件

@@ -275,6 +275,8 @@
275 275
   #error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X. Please update your Configuration.h."
276 276
 #elif defined(HAVE_TMC2130)
277 277
   #error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130. Please update your Configuration.h."
278
+#elif defined(HAVE_TMC2208)
279
+  #error "HAVE_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208. Please update your Configuration.h."
278 280
 #elif defined(HAVE_L6470DRIVER)
279 281
   #error "HAVE_L6470DRIVER is now [AXIS]_DRIVER_TYPE L6470. Please update your Configuration.h."
280 282
 #elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \
@@ -1070,10 +1072,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
1070 1072
    * Require pin options and pins to be defined
1071 1073
    */
1072 1074
   #if ENABLED(SENSORLESS_PROBING)
1073
-    #if ENABLED(DELTA) && (!AXIS_DRIVER_TYPE_X(TMC2130) || !AXIS_DRIVER_TYPE_Y(TMC2130) || !AXIS_DRIVER_TYPE_Z(TMC2130))
1074
-      #error "SENSORLESS_PROBING requires TMC2130 drivers on X, Y, and Z."
1075
-    #elif !AXIS_DRIVER_TYPE_Z(TMC2130)
1076
-      #error "SENSORLESS_PROBING requires a TMC2130 driver on Z."
1075
+    #if ENABLED(DELTA) && !(AXIS_HAS_STALLGUARD(X) && AXIS_HAS_STALLGUARD(Y) && AXIS_HAS_STALLGUARD(Z))
1076
+      #error "SENSORLESS_PROBING requires TMC2130/2160/2209/5130/5160 drivers on X, Y, and Z."
1077
+    #elif !AXIS_HAS_STALLGUARD(Z)
1078
+      #error "SENSORLESS_PROBING requires a TMC2130/2160/2209/5130/5160 driver on Z."
1077 1079
     #endif
1078 1080
   #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
1079 1081
     #if DISABLED(USE_ZMIN_PLUG)
@@ -1876,73 +1878,106 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
1876 1878
 /**
1877 1879
  * Check existing CS pins against enabled TMC SPI drivers.
1878 1880
  */
1879
-#define INVALID_TMC2130(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) && !PIN_EXISTS(ST##_CS))
1880
-#if INVALID_TMC2130(X)
1881
-  #error "TMC2130 on X requires X_CS_PIN."
1882
-#elif INVALID_TMC2130(X2)
1883
-  #error "TMC2130 on X2 requires X2_CS_PIN."
1884
-#elif INVALID_TMC2130(Y)
1885
-  #error "TMC2130 on Y requires Y_CS_PIN."
1886
-#elif INVALID_TMC2130(Y2)
1887
-  #error "TMC2130 on Y2 requires Y2_CS_PIN."
1888
-#elif INVALID_TMC2130(Z)
1889
-  #error "TMC2130 on Z requires Z_CS_PIN."
1890
-#elif INVALID_TMC2130(Z2)
1891
-  #error "TMC2130 on Z2 requires Z2_CS_PIN."
1892
-#elif INVALID_TMC2130(Z3)
1893
-  #error "TMC2130 on Z3 requires Z3_CS_PIN."
1894
-#elif INVALID_TMC2130(E0)
1895
-  #error "TMC2130 on E0 requires E0_CS_PIN."
1896
-#elif INVALID_TMC2130(E1)
1897
-  #error "TMC2130 on E1 requires E1_CS_PIN."
1898
-#elif INVALID_TMC2130(E2)
1899
-  #error "TMC2130 on E2 requires E2_CS_PIN."
1900
-#elif INVALID_TMC2130(E3)
1901
-  #error "TMC2130 on E3 requires E3_CS_PIN."
1902
-#elif INVALID_TMC2130(E4)
1903
-  #error "TMC2130 on E4 requires E4_CS_PIN."
1904
-#elif INVALID_TMC2130(E5)
1905
-  #error "TMC2130 on E5 requires E5_CS_PIN."
1906
-#endif
1907
-#undef INVALID_TMC2130
1881
+#define INVALID_TMC_SPI(ST) (AXIS_HAS_SPI && !PIN_EXISTS(ST##_CS))
1882
+#if INVALID_TMC_SPI(X)
1883
+  #error "An SPI driven TMC driver on X requires X_CS_PIN."
1884
+#elif INVALID_TMC_SPI(X2)
1885
+  #error "An SPI driven TMC driver on X2 requires X2_CS_PIN."
1886
+#elif INVALID_TMC_SPI(Y)
1887
+  #error "An SPI driven TMC driver on Y requires Y_CS_PIN."
1888
+#elif INVALID_TMC_SPI(Y2)
1889
+  #error "An SPI driven TMC driver on Y2 requires Y2_CS_PIN."
1890
+#elif INVALID_TMC_SPI(Z)
1891
+  #error "An SPI driven TMC driver on Z requires Z_CS_PIN."
1892
+#elif INVALID_TMC_SPI(Z2)
1893
+  #error "An SPI driven TMC driver on Z2 requires Z2_CS_PIN."
1894
+#elif INVALID_TMC_SPI(Z3)
1895
+  #error "An SPI driven TMC driver on Z3 requires Z3_CS_PIN."
1896
+#elif INVALID_TMC_SPI(E0)
1897
+  #error "An SPI driven TMC driver on E0 requires E0_CS_PIN."
1898
+#elif INVALID_TMC_SPI(E1)
1899
+  #error "An SPI driven TMC driver on E1 requires E1_CS_PIN."
1900
+#elif INVALID_TMC_SPI(E2)
1901
+  #error "An SPI driven TMC driver on E2 requires E2_CS_PIN."
1902
+#elif INVALID_TMC_SPI(E3)
1903
+  #error "An SPI driven TMC driver on E3 requires E3_CS_PIN."
1904
+#elif INVALID_TMC_SPI(E4)
1905
+  #error "An SPI driven TMC driver on E4 requires E4_CS_PIN."
1906
+#elif INVALID_TMC_SPI(E5)
1907
+  #error "An SPI driven TMC driver on E5 requires E5_CS_PIN."
1908
+#endif
1909
+#undef INVALID_TMC_SPI
1908 1910
 
1909 1911
 /**
1910 1912
  * Check existing RX/TX pins against enable TMC UART drivers.
1911 1913
  */
1912
-#define INVALID_TMC2208(ST) (AXIS_DRIVER_TYPE(ST, TMC2208) && !(defined(ST##_HARDWARE_SERIAL) || (PIN_EXISTS(ST##_SERIAL_RX, ST##_SERIAL_TX))))
1913
-#if INVALID_TMC2208(X)
1914
-  #error "TMC2208 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."
1915
-#elif INVALID_TMC2208(X2)
1916
-  #error "TMC2208 on X2 requires X2_HARDWARE_SERIAL or X2_SERIAL_(RX|TX)_PIN."
1917
-#elif INVALID_TMC2208(Y)
1918
-  #error "TMC2208 on Y requires Y_HARDWARE_SERIAL or Y_SERIAL_(RX|TX)_PIN."
1919
-#elif INVALID_TMC2208(Y2)
1920
-  #error "TMC2208 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN."
1921
-#elif INVALID_TMC2208(Z)
1922
-  #error "TMC2208 on Z requires Z_HARDWARE_SERIAL or Z_SERIAL_(RX|TX)_PIN."
1923
-#elif INVALID_TMC2208(Z2)
1924
-  #error "TMC2208 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
1925
-#elif INVALID_TMC2208(Z3)
1926
-  #error "TMC2208 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
1927
-#elif INVALID_TMC2208(E0)
1928
-  #error "TMC2208 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
1929
-#elif INVALID_TMC2208(E1)
1930
-  #error "TMC2208 on E1 requires E1_HARDWARE_SERIAL or E1_SERIAL_(RX|TX)_PIN."
1931
-#elif INVALID_TMC2208(E2)
1932
-  #error "TMC2208 on E2 requires E2_HARDWARE_SERIAL or E2_SERIAL_(RX|TX)_PIN."
1933
-#elif INVALID_TMC2208(E3)
1934
-  #error "TMC2208 on E3 requires E3_HARDWARE_SERIAL or E3_SERIAL_(RX|TX)_PIN."
1935
-#elif INVALID_TMC2208(E4)
1936
-  #error "TMC2208 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN."
1937
-#elif INVALID_TMC2208(E5)
1938
-  #error "TMC2208 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN."
1939
-#endif
1940
-#undef INVALID_TMC2208
1941
-
1942
-/**
1943
- * TMC2208 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
1944
- */
1945
-#if HAS_DRIVER(TMC2208) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \
1914
+#define INVALID_TMC_UART(ST) (AXIS_HAS_UART(ST) && !(defined(ST##_HARDWARE_SERIAL) || (PIN_EXISTS(ST##_SERIAL_RX, ST##_SERIAL_TX))))
1915
+#if INVALID_TMC_UART(X)
1916
+  #error "TMC2208 or TMC2209 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."
1917
+#elif INVALID_TMC_UART(X2)
1918
+  #error "TMC2208 or TMC2209 on X2 requires X2_HARDWARE_SERIAL or X2_SERIAL_(RX|TX)_PIN."
1919
+#elif INVALID_TMC_UART(Y)
1920
+  #error "TMC2208 or TMC2209 on Y requires Y_HARDWARE_SERIAL or Y_SERIAL_(RX|TX)_PIN."
1921
+#elif INVALID_TMC_UART(Y2)
1922
+  #error "TMC2208 or TMC2209 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN."
1923
+#elif INVALID_TMC_UART(Z)
1924
+  #error "TMC2208 or TMC2209 on Z requires Z_HARDWARE_SERIAL or Z_SERIAL_(RX|TX)_PIN."
1925
+#elif INVALID_TMC_UART(Z2)
1926
+  #error "TMC2208 or TMC2209 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
1927
+#elif INVALID_TMC_UART(Z3)
1928
+  #error "TMC2208 or TMC2209 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
1929
+#elif INVALID_TMC_UART(E0)
1930
+  #error "TMC2208 or TMC2209 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
1931
+#elif INVALID_TMC_UART(E1)
1932
+  #error "TMC2208 or TMC2209 on E1 requires E1_HARDWARE_SERIAL or E1_SERIAL_(RX|TX)_PIN."
1933
+#elif INVALID_TMC_UART(E2)
1934
+  #error "TMC2208 or TMC2209 on E2 requires E2_HARDWARE_SERIAL or E2_SERIAL_(RX|TX)_PIN."
1935
+#elif INVALID_TMC_UART(E3)
1936
+  #error "TMC2208 or TMC2209 on E3 requires E3_HARDWARE_SERIAL or E3_SERIAL_(RX|TX)_PIN."
1937
+#elif INVALID_TMC_UART(E4)
1938
+  #error "TMC2208 or TMC2209 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN."
1939
+#elif INVALID_TMC_UART(E5)
1940
+  #error "TMC2208 or TMC2209 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN."
1941
+#endif
1942
+#undef INVALID_TMC_UART
1943
+
1944
+/**
1945
+ * TMC2209 slave address values
1946
+ */
1947
+#define INVALID_TMC_ADDRESS(ST) static_assert(0 <= ST##_SLAVE_ADDRESS && ST##_SLAVE_ADDRESS <= 3, "TMC2209 slave address must be 0, 1, 2 or 3")
1948
+#if AXIS_DRIVER_TYPE_X(TMC2209)
1949
+  INVALID_TMC_ADDRESS(X);
1950
+#elif AXIS_DRIVER_TYPE_X2(TMC2209)
1951
+  INVALID_TMC_ADDRESS(X2);
1952
+#elif AXIS_DRIVER_TYPE_Y(TMC2209)
1953
+  INVALID_TMC_ADDRESS(Y);
1954
+#elif AXIS_DRIVER_TYPE_Y2(TMC2209)
1955
+  INVALID_TMC_ADDRESS(Y2);
1956
+#elif AXIS_DRIVER_TYPE_Z(TMC2209)
1957
+  INVALID_TMC_ADDRESS(Z);
1958
+#elif AXIS_DRIVER_TYPE_Z2(TMC2209)
1959
+  INVALID_TMC_ADDRESS(Z2);
1960
+#elif AXIS_DRIVER_TYPE_Z3(TMC2209)
1961
+  INVALID_TMC_ADDRESS(Z3);
1962
+#elif AXIS_DRIVER_TYPE_E0(TMC2209)
1963
+  INVALID_TMC_ADDRESS(E0);
1964
+#elif AXIS_DRIVER_TYPE_E1(TMC2209)
1965
+  INVALID_TMC_ADDRESS(E1);
1966
+#elif AXIS_DRIVER_TYPE_E2(TMC2209)
1967
+  INVALID_TMC_ADDRESS(E2);
1968
+#elif AXIS_DRIVER_TYPE_E3(TMC2209)
1969
+  INVALID_TMC_ADDRESS(E3);
1970
+#elif AXIS_DRIVER_TYPE_E4(TMC2209)
1971
+  INVALID_TMC_ADDRESS(E4);
1972
+#elif AXIS_DRIVER_TYPE_E5(TMC2209)
1973
+  INVALID_TMC_ADDRESS(E5);
1974
+#endif
1975
+#undef INVALID_TMC_ADDRESS
1976
+
1977
+/**
1978
+ * TMC2208/2209 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
1979
+ */
1980
+#if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \
1946 1981
        defined(X_HARDWARE_SERIAL ) \
1947 1982
     || defined(X2_HARDWARE_SERIAL) \
1948 1983
     || defined(Y_HARDWARE_SERIAL ) \
@@ -1960,9 +1995,9 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
1960 1995
 #endif
1961 1996
 
1962 1997
 /**
1963
- * TMC2208 software UART is only supported on AVR
1998
+ * TMC2208/2209 software UART is only supported on AVR and LPC
1964 1999
  */
1965
-#if HAS_DRIVER(TMC2208) && !defined(__AVR__) && !defined(TARGET_LPC1768) && !( \
2000
+#if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && !defined(__AVR__) && !defined(TARGET_LPC1768) && !( \
1966 2001
        defined(X_HARDWARE_SERIAL ) \
1967 2002
     || defined(X2_HARDWARE_SERIAL) \
1968 2003
     || defined(Y_HARDWARE_SERIAL ) \
@@ -1983,25 +2018,36 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
1983 2018
   // is necessary in order to reset the stallGuard indication between the initial movement of all three
1984 2019
   // towers to +Z and the individual homing of each tower. This restriction can be removed once a means of
1985 2020
   // clearing the stallGuard activated status is found.
2021
+
2022
+  // Stall detection DIAG = HIGH : TMC2209
2023
+  // Stall detection DIAG = LOW  : TMC2130/TMC2160/TMC2660/TMC5130/TMC5160
2024
+  #define X_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(X,TMC2209)
2025
+  #define Y_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Y,TMC2209)
2026
+  #define Z_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Z,TMC2209)
2027
+
1986 2028
   #if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z)
1987 2029
     #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z."
1988
-  #elif X_SENSORLESS && X_HOME_DIR == -1 && (!X_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMIN))
2030
+  #elif X_SENSORLESS && X_HOME_DIR == -1 && (X_MIN_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMIN))
1989 2031
     #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMIN when homing to X_MIN."
1990
-  #elif X_SENSORLESS && X_HOME_DIR ==  1 && (!X_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMAX))
2032
+  #elif X_SENSORLESS && X_HOME_DIR ==  1 && (X_MAX_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMAX))
1991 2033
     #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMAX when homing to X_MAX."
1992
-  #elif Y_SENSORLESS && Y_HOME_DIR == -1 && (!Y_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMIN))
2034
+  #elif Y_SENSORLESS && Y_HOME_DIR == -1 && (Y_MIN_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMIN))
1993 2035
     #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMIN when homing to Y_MIN."
1994
-  #elif Y_SENSORLESS && Y_HOME_DIR ==  1 && (!Y_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMAX))
2036
+  #elif Y_SENSORLESS && Y_HOME_DIR ==  1 && (Y_MAX_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMAX))
1995 2037
     #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMAX when homing to Y_MAX."
1996
-  #elif Z_SENSORLESS && Z_HOME_DIR == -1 && (!Z_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMIN))
2038
+  #elif Z_SENSORLESS && Z_HOME_DIR == -1 && (Z_MIN_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMIN))
1997 2039
     #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMIN when homing to Z_MIN."
1998
-  #elif Z_SENSORLESS && Z_HOME_DIR ==  1 && (!Z_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMAX))
2040
+  #elif Z_SENSORLESS && Z_HOME_DIR ==  1 && (Z_MAX_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMAX))
1999 2041
     #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMAX when homing to Z_MAX."
2000 2042
   #elif ENDSTOP_NOISE_THRESHOLD
2001 2043
     #error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD."
2002 2044
   #elif !(X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS)
2003 2045
     #error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, or Z axes."
2004 2046
   #endif
2047
+
2048
+  #undef X_ENDSTOP_INVERTING
2049
+  #undef Y_ENDSTOP_INVERTING
2050
+  #undef Z_ENDSTOP_INVERTING
2005 2051
 #endif
2006 2052
 
2007 2053
 // Sensorless probing requirements
@@ -2026,11 +2072,11 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
2026 2072
 #if ENABLED(HYBRID_THRESHOLD) && !STEALTHCHOP_ENABLED
2027 2073
   #error "Enable STEALTHCHOP_(XY|Z|E) to use HYBRID_THRESHOLD."
2028 2074
 #elif ENABLED(SENSORLESS_HOMING) && !HAS_STALLGUARD
2029
-  #error "SENSORLESS_HOMING requires TMC2130 or TMC2160 or TMC5160 stepper drivers."
2075
+  #error "SENSORLESS_HOMING requires TMC2130, TMC2160, TMC2209, TMC2660, or TMC5160 stepper drivers."
2030 2076
 #elif ENABLED(SENSORLESS_PROBING) && !HAS_STALLGUARD
2031
-  #error "SENSORLESS_PROBING requires TMC2130 stepper drivers."
2077
+  #error "SENSORLESS_PROBING requires TMC2130, TMC2160, TMC2209, TMC2660, or TMC5160 stepper drivers."
2032 2078
 #elif STEALTHCHOP_ENABLED && !HAS_STEALTHCHOP
2033
-  #error "STEALTHCHOP requires TMC2130 or TMC2160 or TMC2208 or TMC5160 stepper drivers."
2079
+  #error "STEALTHCHOP requires TMC2130, TMC2160, TMC2208, TMC2209, or TMC5160 stepper drivers."
2034 2080
 #endif
2035 2081
 
2036 2082
 #if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))

+ 6
- 6
Marlin/src/lcd/extensible_ui/ui_api.cpp 查看文件

@@ -473,13 +473,13 @@ namespace ExtUI {
473 473
     int getTMCBumpSensitivity(const axis_t axis) {
474 474
       switch (axis) {
475 475
         #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
476
-          case X: return stepperX.sgt();
476
+          case X: return stepperX.homing_threshold();
477 477
         #endif
478 478
         #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
479
-          case Y: return stepperY.sgt();
479
+          case Y: return stepperY.homing_threshold();
480 480
         #endif
481 481
         #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
482
-          case Z: return stepperZ.sgt();
482
+          case Z: return stepperZ.homing_threshold();
483 483
         #endif
484 484
         default: return 0;
485 485
       }
@@ -488,13 +488,13 @@ namespace ExtUI {
488 488
     void setTMCBumpSensitivity(const float value, const axis_t axis) {
489 489
       switch (axis) {
490 490
         #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
491
-          case X: stepperX.sgt(clamp(value, -64, 63)); break;
491
+          case X: stepperX.homing_threshold(value); break;
492 492
         #endif
493 493
         #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
494
-          case Y: stepperY.sgt(clamp(value, -64, 63)); break;
494
+          case Y: stepperY.homing_threshold(value); break;
495 495
         #endif
496 496
         #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
497
-          case Z: stepperZ.sgt(clamp(value, -64, 63)); break;
497
+          case Z: stepperZ.homing_threshold(value); break;
498 498
         #endif
499 499
         default: break;
500 500
       }

+ 1
- 1
Marlin/src/lcd/menu/menu_tmc.cpp 查看文件

@@ -212,7 +212,7 @@ void menu_tmc_current() {
212 212
 
213 213
 #if ENABLED(SENSORLESS_HOMING)
214 214
 
215
-  #define TMC_EDIT_STORED_SGT(ST) MENU_ITEM_EDIT_CALLBACK(int8, MSG_##ST, &stepper##ST.stored.homing_thrs, -64, 63, refresh_homing_thrs_##ST);
215
+  #define TMC_EDIT_STORED_SGT(ST) MENU_ITEM_EDIT_CALLBACK(int4, MSG_##ST, &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, refresh_homing_thrs_##ST);
216 216
 
217 217
   #if X_SENSORLESS
218 218
     void refresh_homing_thrs_X()  { stepperX.refresh_homing_thrs();  }

+ 17
- 17
Marlin/src/module/configuration_store.cpp 查看文件

@@ -1051,13 +1051,13 @@ void MarlinSettings::postprocess() {
1051 1051
       tmc_sgt_t tmc_sgt = { 0, 0, 0 };
1052 1052
       #if USE_SENSORLESS
1053 1053
         #if X_SENSORLESS
1054
-          tmc_sgt.X = stepperX.sgt();
1054
+          tmc_sgt.X = stepperX.homing_threshold();
1055 1055
         #endif
1056 1056
         #if Y_SENSORLESS
1057
-          tmc_sgt.Y = stepperY.sgt();
1057
+          tmc_sgt.Y = stepperY.homing_threshold();
1058 1058
         #endif
1059 1059
         #if Z_SENSORLESS
1060
-          tmc_sgt.Z = stepperZ.sgt();
1060
+          tmc_sgt.Z = stepperZ.homing_threshold();
1061 1061
         #endif
1062 1062
       #endif
1063 1063
       EEPROM_WRITE(tmc_sgt);
@@ -1834,29 +1834,29 @@ void MarlinSettings::postprocess() {
1834 1834
           if (!validating) {
1835 1835
             #ifdef X_STALL_SENSITIVITY
1836 1836
               #if AXIS_HAS_STALLGUARD(X)
1837
-                stepperX.sgt(tmc_sgt.X);
1837
+                stepperX.homing_threshold(tmc_sgt.X);
1838 1838
               #endif
1839 1839
               #if AXIS_HAS_STALLGUARD(X2)
1840
-                stepperX2.sgt(tmc_sgt.X);
1840
+                stepperX2.homing_threshold(tmc_sgt.X);
1841 1841
               #endif
1842 1842
             #endif
1843 1843
             #ifdef Y_STALL_SENSITIVITY
1844 1844
               #if AXIS_HAS_STALLGUARD(Y)
1845
-                stepperY.sgt(tmc_sgt.Y);
1845
+                stepperY.homing_threshold(tmc_sgt.Y);
1846 1846
               #endif
1847 1847
               #if AXIS_HAS_STALLGUARD(Y2)
1848
-                stepperY2.sgt(tmc_sgt.Y);
1848
+                stepperY2.homing_threshold(tmc_sgt.Y);
1849 1849
               #endif
1850 1850
             #endif
1851 1851
             #ifdef Z_STALL_SENSITIVITY
1852 1852
               #if AXIS_HAS_STALLGUARD(Z)
1853
-                stepperZ.sgt(tmc_sgt.Z);
1853
+                stepperZ.homing_threshold(tmc_sgt.Z);
1854 1854
               #endif
1855 1855
               #if AXIS_HAS_STALLGUARD(Z2)
1856
-                stepperZ2.sgt(tmc_sgt.Z);
1856
+                stepperZ2.homing_threshold(tmc_sgt.Z);
1857 1857
               #endif
1858 1858
               #if AXIS_HAS_STALLGUARD(Z3)
1859
-                stepperZ3.sgt(tmc_sgt.Z);
1859
+                stepperZ3.homing_threshold(tmc_sgt.Z);
1860 1860
               #endif
1861 1861
             #endif
1862 1862
           }
@@ -3259,13 +3259,13 @@ void MarlinSettings::reset() {
3259 3259
         #if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS
3260 3260
           say_M914();
3261 3261
           #if X_SENSORLESS
3262
-            SERIAL_ECHOPAIR(" X", stepperX.sgt());
3262
+            SERIAL_ECHOPAIR(" X", stepperX.homing_threshold());
3263 3263
           #endif
3264 3264
           #if Y_SENSORLESS
3265
-            SERIAL_ECHOPAIR(" Y", stepperY.sgt());
3265
+            SERIAL_ECHOPAIR(" Y", stepperY.homing_threshold());
3266 3266
           #endif
3267 3267
           #if Z_SENSORLESS
3268
-            SERIAL_ECHOPAIR(" Z", stepperZ.sgt());
3268
+            SERIAL_ECHOPAIR(" Z", stepperZ.homing_threshold());
3269 3269
           #endif
3270 3270
           SERIAL_EOL();
3271 3271
         #endif
@@ -3278,20 +3278,20 @@ void MarlinSettings::reset() {
3278 3278
           say_M914();
3279 3279
           SERIAL_ECHOPGM(" I1");
3280 3280
           #if HAS_X2_SENSORLESS
3281
-            SERIAL_ECHOPAIR(" X", stepperX2.sgt());
3281
+            SERIAL_ECHOPAIR(" X", stepperX2.homing_threshold());
3282 3282
           #endif
3283 3283
           #if HAS_Y2_SENSORLESS
3284
-            SERIAL_ECHOPAIR(" Y", stepperY2.sgt());
3284
+            SERIAL_ECHOPAIR(" Y", stepperY2.homing_threshold());
3285 3285
           #endif
3286 3286
           #if HAS_Z2_SENSORLESS
3287
-            SERIAL_ECHOPAIR(" Z", stepperZ2.sgt());
3287
+            SERIAL_ECHOPAIR(" Z", stepperZ2.homing_threshold());
3288 3288
           #endif
3289 3289
           SERIAL_EOL();
3290 3290
         #endif
3291 3291
 
3292 3292
         #if HAS_Z3_SENSORLESS
3293 3293
           say_M914();
3294
-          SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.sgt());
3294
+          SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.homing_threshold());
3295 3295
         #endif
3296 3296
 
3297 3297
       #endif // USE_SENSORLESS

+ 84
- 39
Marlin/src/module/stepper_indirection.cpp 查看文件

@@ -163,8 +163,8 @@
163 163
     #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_CS_PIN, ST##_RSENSE)
164 164
   #endif
165 165
 
166
-  #define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE)
167
-  #define TMC_UART_SW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SERIAL_RX_PIN > -1)
166
+  #define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE, ST##_SLAVE_ADDRESS)
167
+  #define TMC_UART_SW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SLAVE_ADDRESS, ST##_SERIAL_RX_PIN > -1)
168 168
 
169 169
   #define _TMC_SPI_DEFINE(IC, ST, AI) __TMC_SPI_DEFINE(IC, ST, TMC_##ST##_LABEL, AI)
170 170
   #define TMC_SPI_DEFINE(ST, AI) _TMC_SPI_DEFINE(ST##_DRIVER_TYPE, ST, AI##_AXIS)
@@ -318,95 +318,94 @@
318 318
 #endif // TMC2160
319 319
 
320 320
 //
321
-// TMC2208 Driver objects and inits
321
+// TMC2208/2209 Driver objects and inits
322 322
 //
323
-#if HAS_DRIVER(TMC2208)
324
-  // Stepper objects of TMC2208 steppers used
325
-  #if AXIS_DRIVER_TYPE_X(TMC2208)
323
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
324
+  #if AXIS_HAS_UART(X)
326 325
     #ifdef X_HARDWARE_SERIAL
327 326
       TMC_UART_DEFINE(HW, X, X);
328 327
     #else
329 328
       TMC_UART_DEFINE(SW, X, X);
330 329
     #endif
331 330
   #endif
332
-  #if AXIS_DRIVER_TYPE_X2(TMC2208)
331
+  #if AXIS_HAS_UART(X2)
333 332
     #ifdef X2_HARDWARE_SERIAL
334 333
       TMC_UART_DEFINE(HW, X2, X);
335 334
     #else
336 335
       TMC_UART_DEFINE(SW, X2, X);
337 336
     #endif
338 337
   #endif
339
-  #if AXIS_DRIVER_TYPE_Y(TMC2208)
338
+  #if AXIS_HAS_UART(Y)
340 339
     #ifdef Y_HARDWARE_SERIAL
341 340
       TMC_UART_DEFINE(HW, Y, Y);
342 341
     #else
343 342
       TMC_UART_DEFINE(SW, Y, Y);
344 343
     #endif
345 344
   #endif
346
-  #if AXIS_DRIVER_TYPE_Y2(TMC2208)
345
+  #if AXIS_HAS_UART(Y2)
347 346
     #ifdef Y2_HARDWARE_SERIAL
348 347
       TMC_UART_DEFINE(HW, Y2, Y);
349 348
     #else
350 349
       TMC_UART_DEFINE(SW, Y2, Y);
351 350
     #endif
352 351
   #endif
353
-  #if AXIS_DRIVER_TYPE_Z(TMC2208)
352
+  #if AXIS_HAS_UART(Z)
354 353
     #ifdef Z_HARDWARE_SERIAL
355 354
       TMC_UART_DEFINE(HW, Z, Z);
356 355
     #else
357 356
       TMC_UART_DEFINE(SW, Z, Z);
358 357
     #endif
359 358
   #endif
360
-  #if AXIS_DRIVER_TYPE_Z2(TMC2208)
359
+  #if AXIS_HAS_UART(Z2)
361 360
     #ifdef Z2_HARDWARE_SERIAL
362 361
       TMC_UART_DEFINE(HW, Z2, Z);
363 362
     #else
364 363
       TMC_UART_DEFINE(SW, Z2, Z);
365 364
     #endif
366 365
   #endif
367
-  #if AXIS_DRIVER_TYPE_Z3(TMC2208)
366
+  #if AXIS_HAS_UART(Z3)
368 367
     #ifdef Z3_HARDWARE_SERIAL
369 368
       TMC_UART_DEFINE(HW, Z3, Z);
370 369
     #else
371 370
       TMC_UART_DEFINE(SW, Z3, Z);
372 371
     #endif
373 372
   #endif
374
-  #if AXIS_DRIVER_TYPE_E0(TMC2208)
373
+  #if AXIS_HAS_UART(E0)
375 374
     #ifdef E0_HARDWARE_SERIAL
376 375
       TMC_UART_DEFINE_E(HW, 0);
377 376
     #else
378 377
       TMC_UART_DEFINE_E(SW, 0);
379 378
     #endif
380 379
   #endif
381
-  #if AXIS_DRIVER_TYPE_E1(TMC2208)
380
+  #if AXIS_HAS_UART(E1)
382 381
     #ifdef E1_HARDWARE_SERIAL
383 382
       TMC_UART_DEFINE_E(HW, 1);
384 383
     #else
385 384
       TMC_UART_DEFINE_E(SW, 1);
386 385
     #endif
387 386
   #endif
388
-  #if AXIS_DRIVER_TYPE_E2(TMC2208)
387
+  #if AXIS_HAS_UART(E2)
389 388
     #ifdef E2_HARDWARE_SERIAL
390 389
       TMC_UART_DEFINE_E(HW, 2);
391 390
     #else
392 391
       TMC_UART_DEFINE_E(SW, 2);
393 392
     #endif
394 393
   #endif
395
-  #if AXIS_DRIVER_TYPE_E3(TMC2208)
394
+  #if AXIS_HAS_UART(E3)
396 395
     #ifdef E3_HARDWARE_SERIAL
397 396
       TMC_UART_DEFINE_E(HW, 3);
398 397
     #else
399 398
       TMC_UART_DEFINE_E(SW, 3);
400 399
     #endif
401 400
   #endif
402
-  #if AXIS_DRIVER_TYPE_E4(TMC2208)
401
+  #if AXIS_HAS_UART(E4)
403 402
     #ifdef E4_HARDWARE_SERIAL
404 403
       TMC_UART_DEFINE_E(HW, 4);
405 404
     #else
406 405
       TMC_UART_DEFINE_E(SW, 4);
407 406
     #endif
408 407
   #endif
409
-  #if AXIS_DRIVER_TYPE_E5(TMC2208)
408
+  #if AXIS_HAS_UART(E5)
410 409
     #ifdef E5_HARDWARE_SERIAL
411 410
       TMC_UART_DEFINE_E(HW, 5);
412 411
     #else
@@ -414,92 +413,92 @@
414 413
     #endif
415 414
   #endif
416 415
 
417
-  void tmc2208_serial_begin() {
418
-    #if AXIS_DRIVER_TYPE_X(TMC2208)
416
+  void tmc_serial_begin() {
417
+    #if AXIS_HAS_UART(X)
419 418
       #ifdef X_HARDWARE_SERIAL
420 419
         X_HARDWARE_SERIAL.begin(115200);
421 420
       #else
422 421
         stepperX.beginSerial(115200);
423 422
       #endif
424 423
     #endif
425
-    #if AXIS_DRIVER_TYPE_X2(TMC2208)
424
+    #if AXIS_HAS_UART(X2)
426 425
       #ifdef X2_HARDWARE_SERIAL
427 426
         X2_HARDWARE_SERIAL.begin(115200);
428 427
       #else
429 428
         stepperX2.beginSerial(115200);
430 429
       #endif
431 430
     #endif
432
-    #if AXIS_DRIVER_TYPE_Y(TMC2208)
431
+    #if AXIS_HAS_UART(Y)
433 432
       #ifdef Y_HARDWARE_SERIAL
434 433
         Y_HARDWARE_SERIAL.begin(115200);
435 434
       #else
436 435
         stepperY.beginSerial(115200);
437 436
       #endif
438 437
     #endif
439
-    #if AXIS_DRIVER_TYPE_Y2(TMC2208)
438
+    #if AXIS_HAS_UART(Y2)
440 439
       #ifdef Y2_HARDWARE_SERIAL
441 440
         Y2_HARDWARE_SERIAL.begin(115200);
442 441
       #else
443 442
         stepperY2.beginSerial(115200);
444 443
       #endif
445 444
     #endif
446
-    #if AXIS_DRIVER_TYPE_Z(TMC2208)
445
+    #if AXIS_HAS_UART(Z)
447 446
       #ifdef Z_HARDWARE_SERIAL
448 447
         Z_HARDWARE_SERIAL.begin(115200);
449 448
       #else
450 449
         stepperZ.beginSerial(115200);
451 450
       #endif
452 451
     #endif
453
-    #if AXIS_DRIVER_TYPE_Z2(TMC2208)
452
+    #if AXIS_HAS_UART(Z2)
454 453
       #ifdef Z2_HARDWARE_SERIAL
455 454
         Z2_HARDWARE_SERIAL.begin(115200);
456 455
       #else
457 456
         stepperZ2.beginSerial(115200);
458 457
       #endif
459 458
     #endif
460
-    #if AXIS_DRIVER_TYPE_Z3(TMC2208)
459
+    #if AXIS_HAS_UART(Z3)
461 460
       #ifdef Z3_HARDWARE_SERIAL
462 461
         Z3_HARDWARE_SERIAL.begin(115200);
463 462
       #else
464 463
         stepperZ3.beginSerial(115200);
465 464
       #endif
466 465
     #endif
467
-    #if AXIS_DRIVER_TYPE_E0(TMC2208)
466
+    #if AXIS_HAS_UART(E0)
468 467
       #ifdef E0_HARDWARE_SERIAL
469 468
         E0_HARDWARE_SERIAL.begin(115200);
470 469
       #else
471 470
         stepperE0.beginSerial(115200);
472 471
       #endif
473 472
     #endif
474
-    #if AXIS_DRIVER_TYPE_E1(TMC2208)
473
+    #if AXIS_HAS_UART(E1)
475 474
       #ifdef E1_HARDWARE_SERIAL
476 475
         E1_HARDWARE_SERIAL.begin(115200);
477 476
       #else
478 477
         stepperE1.beginSerial(115200);
479 478
       #endif
480 479
     #endif
481
-    #if AXIS_DRIVER_TYPE_E2(TMC2208)
480
+    #if AXIS_HAS_UART(E2)
482 481
       #ifdef E2_HARDWARE_SERIAL
483 482
         E2_HARDWARE_SERIAL.begin(115200);
484 483
       #else
485 484
         stepperE2.beginSerial(115200);
486 485
       #endif
487 486
     #endif
488
-    #if AXIS_DRIVER_TYPE_E3(TMC2208)
487
+    #if AXIS_HAS_UART(E3)
489 488
       #ifdef E3_HARDWARE_SERIAL
490 489
         E3_HARDWARE_SERIAL.begin(115200);
491 490
       #else
492 491
         stepperE3.beginSerial(115200);
493 492
       #endif
494 493
     #endif
495
-    #if AXIS_DRIVER_TYPE_E4(TMC2208)
494
+    #if AXIS_HAS_UART(E4)
496 495
       #ifdef E4_HARDWARE_SERIAL
497 496
         E4_HARDWARE_SERIAL.begin(115200);
498 497
       #else
499 498
         stepperE4.beginSerial(115200);
500 499
       #endif
501 500
     #endif
502
-    #if AXIS_DRIVER_TYPE_E5(TMC2208)
501
+    #if AXIS_HAS_UART(E5)
503 502
       #ifdef E5_HARDWARE_SERIAL
504 503
         E5_HARDWARE_SERIAL.begin(115200);
505 504
       #else
@@ -507,7 +506,9 @@
507 506
       #endif
508 507
     #endif
509 508
   }
509
+#endif
510 510
 
511
+#if HAS_DRIVER(TMC2208)
511 512
   template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
512 513
   void tmc_init(TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
513 514
     TMC2208_n::GCONF_t gconf{0};
@@ -555,6 +556,50 @@
555 556
   }
556 557
 #endif // TMC2208
557 558
 
559
+#if HAS_DRIVER(TMC2209)
560
+  template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
561
+  void tmc_init(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
562
+    TMC2208_n::GCONF_t gconf{0};
563
+    gconf.pdn_disable = true; // Use UART
564
+    gconf.mstep_reg_select = true; // Select microsteps with UART
565
+    gconf.i_scale_analog = false;
566
+    gconf.en_spreadcycle = !stealth;
567
+    st.GCONF(gconf.sr);
568
+    st.stored.stealthChop_enabled = stealth;
569
+
570
+    TMC2208_n::CHOPCONF_t chopconf{0};
571
+    chopconf.tbl = 0b01; // blank_time = 24
572
+    chopconf.toff = chopper_timing.toff;
573
+    chopconf.intpol = INTERPOLATE;
574
+    chopconf.hend = chopper_timing.hend + 3;
575
+    chopconf.hstrt = chopper_timing.hstrt - 1;
576
+    st.CHOPCONF(chopconf.sr);
577
+
578
+    st.rms_current(mA, HOLD_MULTIPLIER);
579
+    st.microsteps(microsteps);
580
+    st.iholddelay(10);
581
+    st.TPOWERDOWN(128); // ~2s until driver lowers to hold current
582
+
583
+    TMC2208_n::PWMCONF_t pwmconf{0};
584
+    pwmconf.pwm_lim = 12;
585
+    pwmconf.pwm_reg = 8;
586
+    pwmconf.pwm_autograd = true;
587
+    pwmconf.pwm_autoscale = true;
588
+    pwmconf.pwm_freq = 0b01;
589
+    pwmconf.pwm_grad = 14;
590
+    pwmconf.pwm_ofs = 36;
591
+    st.PWMCONF(pwmconf.sr);
592
+
593
+    #if ENABLED(HYBRID_THRESHOLD)
594
+      st.set_pwm_thrs(thrs);
595
+    #else
596
+      UNUSED(thrs);
597
+    #endif
598
+
599
+    st.GSTAT(0b111); // Clear
600
+  }
601
+#endif // TMC2209
602
+
558 603
 #if HAS_DRIVER(TMC2660)
559 604
   template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
560 605
   void tmc_init(TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const bool) {
@@ -791,29 +836,29 @@ void reset_stepper_drivers() {
791 836
   #if USE_SENSORLESS
792 837
     #if X_SENSORLESS
793 838
       #if AXIS_HAS_STALLGUARD(X)
794
-        stepperX.sgt(X_STALL_SENSITIVITY);
839
+        stepperX.homing_threshold(X_STALL_SENSITIVITY);
795 840
       #endif
796 841
       #if AXIS_HAS_STALLGUARD(X2)
797
-        stepperX2.sgt(X_STALL_SENSITIVITY);
842
+        stepperX2.homing_threshold(X_STALL_SENSITIVITY);
798 843
       #endif
799 844
     #endif
800 845
     #if Y_SENSORLESS
801 846
       #if AXIS_HAS_STALLGUARD(Y)
802
-        stepperY.sgt(Y_STALL_SENSITIVITY);
847
+        stepperY.homing_threshold(Y_STALL_SENSITIVITY);
803 848
       #endif
804 849
       #if AXIS_HAS_STALLGUARD(Y2)
805
-        stepperY2.sgt(Y_STALL_SENSITIVITY);
850
+        stepperY2.homing_threshold(Y_STALL_SENSITIVITY);
806 851
       #endif
807 852
     #endif
808 853
     #if Z_SENSORLESS
809 854
       #if AXIS_HAS_STALLGUARD(Z)
810
-        stepperZ.sgt(Z_STALL_SENSITIVITY);
855
+        stepperZ.homing_threshold(Z_STALL_SENSITIVITY);
811 856
       #endif
812 857
       #if AXIS_HAS_STALLGUARD(Z2)
813
-        stepperZ2.sgt(Z_STALL_SENSITIVITY);
858
+        stepperZ2.homing_threshold(Z_STALL_SENSITIVITY);
814 859
       #endif
815 860
       #if AXIS_HAS_STALLGUARD(Z3)
816
-        stepperZ3.sgt(Z_STALL_SENSITIVITY);
861
+        stepperZ3.homing_threshold(Z_STALL_SENSITIVITY);
817 862
       #endif
818 863
     #endif
819 864
   #endif

+ 4
- 4
Marlin/src/module/stepper_indirection.h 查看文件

@@ -58,8 +58,8 @@
58 58
 #if HAS_TRINAMIC
59 59
   #include <TMCStepper.h>
60 60
   #include "../feature/tmc_util.h"
61
-  #if TMCSTEPPER_VERSION < 0x000401
62
-    #error "Update TMCStepper library to 0.4.1 or newer."
61
+  #if TMCSTEPPER_VERSION < 0x000405
62
+    #error "Update TMCStepper library to 0.4.5 or newer."
63 63
   #endif
64 64
 
65 65
   #define ____TMC_CLASS(MODEL, A, I, E) TMCMarlin<TMC##MODEL##Stepper, A, I, E>
@@ -81,8 +81,8 @@
81 81
 
82 82
   static constexpr chopper_timing_t chopper_timing = CHOPPER_TIMING;
83 83
 
84
-  #if HAS_DRIVER(TMC2208)
85
-    void tmc2208_serial_begin();
84
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
85
+    void tmc_serial_begin();
86 86
   #endif
87 87
 #endif
88 88
 

+ 2
- 2
Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h 查看文件

@@ -107,9 +107,9 @@
107 107
   #define TMC_SW_SCK       P0_04
108 108
 #endif
109 109
 
110
-#if HAS_DRIVER(TMC2208)
110
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
111 111
     /**
112
-   * TMC2208 stepper drivers
112
+   * TMC2208/TMC2209 stepper drivers
113 113
    *
114 114
    * Hardware serial communication ports.
115 115
    * If undefined software serial is used according to the pins below

+ 1
- 1
Marlin/src/pins/pins_FYSETC_F6_13.h 查看文件

@@ -116,7 +116,7 @@
116 116
 // the jumper next to the limit switch socket when using sensorless homing.
117 117
 //
118 118
 
119
-#if HAS_DRIVER(TMC2208)
119
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
120 120
   // Software serial
121 121
   #define X_SERIAL_RX_PIN  71
122 122
   #define X_SERIAL_TX_PIN  72

+ 2
- 2
Marlin/src/pins/pins_MKS_SBASE.h 查看文件

@@ -288,7 +288,7 @@
288 288
 
289 289
 /**
290 290
  * Example for trinamic drivers using the J8 connector on MKs Sbase.
291
- * 2130s need 1 pin for each driver. 2208s need 2 pins for serial control.
291
+ * 2130s need 1 pin for each driver. 2208/2209s need 2 pins for serial control.
292 292
  * This board does not have enough pins to use hardware serial.
293 293
  */
294 294
 
@@ -316,7 +316,7 @@
316 316
  #endif
317 317
 #endif
318 318
 
319
-#if MB(MKS_SBASE) && HAS_DRIVER(TMC2208)
319
+#if MB(MKS_SBASE) && (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
320 320
   // The shortage of pins becomes apparent.
321 321
   // Worst case you may have to give up the LCD
322 322
   // RX pins need to be interrupt capable

+ 1
- 1
Marlin/src/pins/pins_MKS_SGEN.h 查看文件

@@ -42,7 +42,7 @@
42 42
 //#define BTN_EN1        P1_23   // EXP2.5
43 43
 //#define BTN_EN2        P1_22   // EXP2.3
44 44
 
45
-#if HAS_DRIVER(TMC2208)
45
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
46 46
   // The shortage of pins becomes apparent.
47 47
   // In the worst case you may have to give up the LCD.
48 48
   // RX pins must be interrupt-capable.

+ 2
- 2
Marlin/src/pins/pins_RAMPS.h 查看文件

@@ -293,9 +293,9 @@
293 293
   #endif
294 294
 #endif
295 295
 
296
-#if HAS_DRIVER(TMC2208)
296
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
297 297
   /**
298
-   * TMC2208 stepper drivers
298
+   * TMC2208/TMC2209 stepper drivers
299 299
    *
300 300
    * Hardware serial communication ports.
301 301
    * If undefined software serial is used according to the pins below

+ 2
- 2
Marlin/src/pins/pins_RAMPS_FD_V1.h 查看文件

@@ -204,9 +204,9 @@
204 204
 
205 205
 #endif // ULTRA_LCD
206 206
 
207
-#if HAS_DRIVER(TMC2208)
207
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
208 208
   /**
209
-   * TMC2208 stepper drivers
209
+   * TMC2208/TMC2209 stepper drivers
210 210
    *
211 211
    * Hardware serial communication ports.
212 212
    * If undefined software serial is used according to the pins below

+ 2
- 2
Marlin/src/pins/pins_RAMPS_LINUX.h 查看文件

@@ -268,9 +268,9 @@
268 268
   #endif
269 269
 #endif
270 270
 
271
-#if ENABLED(HAVE_TMC2208)
271
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
272 272
   /**
273
-   * TMC2208 stepper drivers
273
+   * TMC2208/TMC2209 stepper drivers
274 274
    *
275 275
    * Hardware serial communication ports.
276 276
    * If undefined software serial is used according to the pins below

+ 2
- 2
Marlin/src/pins/pins_RAMPS_RE_ARM.h 查看文件

@@ -106,9 +106,9 @@
106 106
   #define TMC_SW_SCK       P1_09   // ETH
107 107
 #endif
108 108
 
109
-#if HAS_DRIVER(TMC2208)
109
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
110 110
   /**
111
-   * TMC2208 stepper drivers
111
+   * TMC2208/TMC2209 stepper drivers
112 112
    *
113 113
    * Hardware serial communication ports.
114 114
    * If undefined software serial is used according to the pins below

+ 3
- 2
buildroot/share/tests/megaatmega2560-tests 查看文件

@@ -298,11 +298,12 @@ use_example_configs SCARA
298 298
 opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
299 299
            EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER \
300 300
            MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING
301
-opt_set X_DRIVER_TYPE TMC2130
301
+opt_set X_MAX_ENDSTOP_INVERTING false
302
+opt_set X_DRIVER_TYPE TMC2209
302 303
 opt_set Y_DRIVER_TYPE TMC2130
303 304
 opt_set Z_DRIVER_TYPE TMC2130
304 305
 opt_set E0_DRIVER_TYPE TMC2660
305
-exec_test $1 $2 "SCARA with TMC2130 and TMC2660"
306
+exec_test $1 $2 "SCARA with TMC2130, TMC2209, and TMC2660"
306 307
 #
307 308
 # Test mixed TMC config
308 309
 #

+ 4
- 4
config/default/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/default/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/3DFabXYZ/Migbot/Configuration.h 查看文件

@@ -642,11 +642,11 @@
642 642
  * A4988 is assumed for unspecified drivers.
643 643
  *
644 644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
645
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
645
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
646
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
646 647
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
648
- *          TMC5160, TMC5160_STANDALONE
649
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
648
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
649
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
650 650
  */
651 651
 //#define X_DRIVER_TYPE  A4988
652 652
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/3DFabXYZ/Migbot/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/AlephObjects/TAZ4/Configuration.h 查看文件

@@ -657,11 +657,11 @@
657 657
  * A4988 is assumed for unspecified drivers.
658 658
  *
659 659
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
660
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
660
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
661
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
661 662
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
662
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
663
- *          TMC5160, TMC5160_STANDALONE
664
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
663
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
664
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
665 665
  */
666 666
 //#define X_DRIVER_TYPE  A4988
667 667
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/AlephObjects/TAZ4/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/AliExpress/CL-260/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 4
- 4
config/examples/AliExpress/UM2pExt/Configuration.h 查看文件

@@ -648,11 +648,11 @@
648 648
  * A4988 is assumed for unspecified drivers.
649 649
  *
650 650
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
651
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
651
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
652
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
652 653
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
653
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
654
- *          TMC5160, TMC5160_STANDALONE
655
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
654
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
655
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
656 656
  */
657 657
 //#define X_DRIVER_TYPE  A4988
658 658
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/AliExpress/UM2pExt/Configuration_adv.h 查看文件

@@ -1729,6 +1729,29 @@
1729 1729
   //#define TMC_SW_SCK        -1
1730 1730
 
1731 1731
   /**
1732
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1733
+   * Set the address using jumpers on pins MS1 and MS2.
1734
+   * Address | MS1  | MS2
1735
+   *       0 | LOW  | LOW
1736
+   *       1 | HIGH | LOW
1737
+   *       2 | LOW  | HIGH
1738
+   *       3 | HIGH | HIGH
1739
+   */
1740
+  #define  X_SLAVE_ADDRESS 0
1741
+  #define  Y_SLAVE_ADDRESS 0
1742
+  #define  Z_SLAVE_ADDRESS 0
1743
+  #define X2_SLAVE_ADDRESS 0
1744
+  #define Y2_SLAVE_ADDRESS 0
1745
+  #define Z2_SLAVE_ADDRESS 0
1746
+  #define Z3_SLAVE_ADDRESS 0
1747
+  #define E0_SLAVE_ADDRESS 0
1748
+  #define E1_SLAVE_ADDRESS 0
1749
+  #define E2_SLAVE_ADDRESS 0
1750
+  #define E3_SLAVE_ADDRESS 0
1751
+  #define E4_SLAVE_ADDRESS 0
1752
+  #define E5_SLAVE_ADDRESS 0
1753
+
1754
+  /**
1732 1755
    * Software enable
1733 1756
    *
1734 1757
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A2/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A2/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A2plus/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A2plus/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A6/Configuration.h 查看文件

@@ -657,11 +657,11 @@
657 657
  * A4988 is assumed for unspecified drivers.
658 658
  *
659 659
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
660
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
660
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
661
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
661 662
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
662
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
663
- *          TMC5160, TMC5160_STANDALONE
664
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
663
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
664
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
665 665
  */
666 666
 //#define X_DRIVER_TYPE  A4988
667 667
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A6/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A8/Configuration.h 查看文件

@@ -650,11 +650,11 @@
650 650
  * A4988 is assumed for unspecified drivers.
651 651
  *
652 652
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
653
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
653
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
654
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
654 655
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
655
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
656
- *          TMC5160, TMC5160_STANDALONE
657
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
656
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
657
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
658 658
  */
659 659
 //#define X_DRIVER_TYPE  A4988
660 660
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A8/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A8plus/Configuration.h 查看文件

@@ -648,11 +648,11 @@
648 648
  * A4988 is assumed for unspecified drivers.
649 649
  *
650 650
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
651
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
651
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
652
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
652 653
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
653
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
654
- *          TMC5160, TMC5160_STANDALONE
655
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
654
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
655
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
656 656
  */
657 657
 #define X_DRIVER_TYPE  A4988
658 658
 #define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A8plus/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/E16/Configuration.h 查看文件

@@ -649,11 +649,11 @@
649 649
  * A4988 is assumed for unspecified drivers.
650 650
  *
651 651
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
652
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
652
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
653
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
653 654
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
654
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
655
- *          TMC5160, TMC5160_STANDALONE
656
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
656
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
657 657
  */
658 658
 #define X_DRIVER_TYPE  A4988
659 659
 #define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/E16/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/AnyCubic/i3/Configuration.h 查看文件

@@ -647,11 +647,11 @@
647 647
  * A4988 is assumed for unspecified drivers.
648 648
  *
649 649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651 652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655 655
  */
656 656
 //#define X_DRIVER_TYPE  A4988
657 657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/AnyCubic/i3/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/ArmEd/Configuration.h 查看文件

@@ -638,11 +638,11 @@
638 638
  * A4988 is assumed for unspecified drivers.
639 639
  *
640 640
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
641
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
641
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
642
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
642 643
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
643
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
644
- *          TMC5160, TMC5160_STANDALONE
645
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
644
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
645
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
646 646
  */
647 647
 //#define X_DRIVER_TYPE  A4988
648 648
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/ArmEd/Configuration_adv.h 查看文件

@@ -1731,6 +1731,29 @@
1731 1731
   //#define TMC_SW_SCK        -1
1732 1732
 
1733 1733
   /**
1734
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1735
+   * Set the address using jumpers on pins MS1 and MS2.
1736
+   * Address | MS1  | MS2
1737
+   *       0 | LOW  | LOW
1738
+   *       1 | HIGH | LOW
1739
+   *       2 | LOW  | HIGH
1740
+   *       3 | HIGH | HIGH
1741
+   */
1742
+  #define  X_SLAVE_ADDRESS 0
1743
+  #define  Y_SLAVE_ADDRESS 0
1744
+  #define  Z_SLAVE_ADDRESS 0
1745
+  #define X2_SLAVE_ADDRESS 0
1746
+  #define Y2_SLAVE_ADDRESS 0
1747
+  #define Z2_SLAVE_ADDRESS 0
1748
+  #define Z3_SLAVE_ADDRESS 0
1749
+  #define E0_SLAVE_ADDRESS 0
1750
+  #define E1_SLAVE_ADDRESS 0
1751
+  #define E2_SLAVE_ADDRESS 0
1752
+  #define E3_SLAVE_ADDRESS 0
1753
+  #define E4_SLAVE_ADDRESS 0
1754
+  #define E5_SLAVE_ADDRESS 0
1755
+
1756
+  /**
1734 1757
    * Software enable
1735 1758
    *
1736 1759
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Azteeg/X5GT/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 4
- 4
config/examples/BIBO/TouchX/cyclops/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BIBO/TouchX/cyclops/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BIBO/TouchX/default/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BIBO/TouchX/default/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BQ/Hephestos/Configuration.h 查看文件

@@ -625,11 +625,11 @@
625 625
  * A4988 is assumed for unspecified drivers.
626 626
  *
627 627
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
628
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
628
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
629
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
629 630
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
630
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
631
- *          TMC5160, TMC5160_STANDALONE
632
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
631
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
632
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
633 633
  */
634 634
 //#define X_DRIVER_TYPE  A4988
635 635
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BQ/Hephestos/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BQ/Hephestos_2/Configuration.h 查看文件

@@ -638,11 +638,11 @@
638 638
  * A4988 is assumed for unspecified drivers.
639 639
  *
640 640
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
641
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
641
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
642
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
642 643
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
643
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
644
- *          TMC5160, TMC5160_STANDALONE
645
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
644
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
645
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
646 646
  */
647 647
 //#define X_DRIVER_TYPE  A4988
648 648
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BQ/Hephestos_2/Configuration_adv.h 查看文件

@@ -1735,6 +1735,29 @@
1735 1735
   //#define TMC_SW_SCK        -1
1736 1736
 
1737 1737
   /**
1738
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1739
+   * Set the address using jumpers on pins MS1 and MS2.
1740
+   * Address | MS1  | MS2
1741
+   *       0 | LOW  | LOW
1742
+   *       1 | HIGH | LOW
1743
+   *       2 | LOW  | HIGH
1744
+   *       3 | HIGH | HIGH
1745
+   */
1746
+  #define  X_SLAVE_ADDRESS 0
1747
+  #define  Y_SLAVE_ADDRESS 0
1748
+  #define  Z_SLAVE_ADDRESS 0
1749
+  #define X2_SLAVE_ADDRESS 0
1750
+  #define Y2_SLAVE_ADDRESS 0
1751
+  #define Z2_SLAVE_ADDRESS 0
1752
+  #define Z3_SLAVE_ADDRESS 0
1753
+  #define E0_SLAVE_ADDRESS 0
1754
+  #define E1_SLAVE_ADDRESS 0
1755
+  #define E2_SLAVE_ADDRESS 0
1756
+  #define E3_SLAVE_ADDRESS 0
1757
+  #define E4_SLAVE_ADDRESS 0
1758
+  #define E5_SLAVE_ADDRESS 0
1759
+
1760
+  /**
1738 1761
    * Software enable
1739 1762
    *
1740 1763
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BQ/WITBOX/Configuration.h 查看文件

@@ -625,11 +625,11 @@
625 625
  * A4988 is assumed for unspecified drivers.
626 626
  *
627 627
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
628
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
628
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
629
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
629 630
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
630
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
631
- *          TMC5160, TMC5160_STANDALONE
632
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
631
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
632
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
633 633
  */
634 634
 //#define X_DRIVER_TYPE  A4988
635 635
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BQ/WITBOX/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Cartesio/Configuration.h 查看文件

@@ -636,11 +636,11 @@
636 636
  * A4988 is assumed for unspecified drivers.
637 637
  *
638 638
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
639
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
640
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
640 641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
641
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
642
- *          TMC5160, TMC5160_STANDALONE
643
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
642
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
643
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
644 644
  */
645 645
 //#define X_DRIVER_TYPE  A4988
646 646
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Cartesio/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10/Configuration.h 查看文件

@@ -647,11 +647,11 @@
647 647
  * A4988 is assumed for unspecified drivers.
648 648
  *
649 649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651 652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655 655
  */
656 656
 //#define X_DRIVER_TYPE  A4988
657 657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10S/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10S/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10_5S/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 //#define X_DRIVER_TYPE  A4988
647 647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10_5S/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10mini/Configuration.h 查看文件

@@ -656,11 +656,11 @@
656 656
  * A4988 is assumed for unspecified drivers.
657 657
  *
658 658
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
659
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
659
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
660
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
660 661
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
661
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
662
- *          TMC5160, TMC5160_STANDALONE
663
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
662
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
663
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
664 664
  */
665 665
 //#define X_DRIVER_TYPE  A4988
666 666
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10mini/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-8/Configuration.h 查看文件

@@ -647,11 +647,11 @@
647 647
  * A4988 is assumed for unspecified drivers.
648 648
  *
649 649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651 652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655 655
  */
656 656
 //#define X_DRIVER_TYPE  A4988
657 657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-8/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/Ender-2/Configuration.h 查看文件

@@ -641,11 +641,11 @@
641 641
  * A4988 is assumed for unspecified drivers.
642 642
  *
643 643
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
644
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
644
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
645
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
645 646
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
646
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
647
- *          TMC5160, TMC5160_STANDALONE
648
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
647
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
648
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
649 649
  */
650 650
 //#define X_DRIVER_TYPE  A4988
651 651
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/Ender-2/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/Ender-3/Configuration.h 查看文件

@@ -641,11 +641,11 @@
641 641
  * A4988 is assumed for unspecified drivers.
642 642
  *
643 643
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
644
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
644
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
645
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
645 646
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
646
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
647
- *          TMC5160, TMC5160_STANDALONE
648
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
647
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
648
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
649 649
  */
650 650
 //#define X_DRIVER_TYPE  A4988
651 651
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/Ender-3/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/Ender-4/Configuration.h 查看文件

@@ -647,11 +647,11 @@
647 647
  * A4988 is assumed for unspecified drivers.
648 648
  *
649 649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651 652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655 655
  */
656 656
 //#define X_DRIVER_TYPE  A4988
657 657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/Ender-4/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Dagoma/Disco Ultimate/Configuration.h 查看文件

@@ -637,11 +637,11 @@
637 637
  * A4988 is assumed for unspecified drivers.
638 638
  *
639 639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641 642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645 645
  */
646 646
 #define X_DRIVER_TYPE  A5984
647 647
 #define Y_DRIVER_TYPE  A5984

+ 23
- 0
config/examples/Dagoma/Disco Ultimate/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h 查看文件

@@ -642,11 +642,11 @@
642 642
  * A4988 is assumed for unspecified drivers.
643 643
  *
644 644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
645
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
645
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
646
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
646 647
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
648
- *          TMC5160, TMC5160_STANDALONE
649
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
648
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
649
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
650 650
  */
651 651
 #define X_DRIVER_TYPE  TMC2100
652 652
 #define Y_DRIVER_TYPE  TMC2100

+ 23
- 0
config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Einstart-S/Configuration.h 查看文件

@@ -647,11 +647,11 @@
647 647
  * A4988 is assumed for unspecified drivers.
648 648
  *
649 649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651 652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655 655
  */
656 656
 //#define X_DRIVER_TYPE  A4988
657 657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Einstart-S/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Felix/Configuration.h 查看文件

@@ -618,11 +618,11 @@
618 618
  * A4988 is assumed for unspecified drivers.
619 619
  *
620 620
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
621
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
621
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
622
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
622 623
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
623
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
624
- *          TMC5160, TMC5160_STANDALONE
625
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
624
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
625
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
626 626
  */
627 627
 //#define X_DRIVER_TYPE  A4988
628 628
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Felix/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Felix/DUAL/Configuration.h 查看文件

@@ -618,11 +618,11 @@
618 618
  * A4988 is assumed for unspecified drivers.
619 619
  *
620 620
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
621
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
621
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
622
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
622 623
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
623
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
624
- *          TMC5160, TMC5160_STANDALONE
625
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
624
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
625
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
626 626
  */
627 627
 //#define X_DRIVER_TYPE  A4988
628 628
 //#define Y_DRIVER_TYPE  A4988

+ 4
- 4
config/examples/FlashForge/CreatorPro/Configuration.h 查看文件

@@ -627,11 +627,11 @@
627 627
  * A4988 is assumed for unspecified drivers.
628 628
  *
629 629
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
630
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
630
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
631
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
631 632
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
632
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
633
- *          TMC5160, TMC5160_STANDALONE
634
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
633
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
634
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
635 635
  */
636 636
 //#define X_DRIVER_TYPE  A4988
637 637
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/FlashForge/CreatorPro/Configuration_adv.h 查看文件

@@ -1726,6 +1726,29 @@
1726 1726
   //#define TMC_SW_SCK        -1
1727 1727
 
1728 1728
   /**
1729
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1730
+   * Set the address using jumpers on pins MS1 and MS2.
1731
+   * Address | MS1  | MS2
1732
+   *       0 | LOW  | LOW
1733
+   *       1 | HIGH | LOW
1734
+   *       2 | LOW  | HIGH
1735
+   *       3 | HIGH | HIGH
1736
+   */
1737
+  #define  X_SLAVE_ADDRESS 0
1738
+  #define  Y_SLAVE_ADDRESS 0
1739
+  #define  Z_SLAVE_ADDRESS 0
1740
+  #define X2_SLAVE_ADDRESS 0
1741
+  #define Y2_SLAVE_ADDRESS 0
1742
+  #define Z2_SLAVE_ADDRESS 0
1743
+  #define Z3_SLAVE_ADDRESS 0
1744
+  #define E0_SLAVE_ADDRESS 0
1745
+  #define E1_SLAVE_ADDRESS 0
1746
+  #define E2_SLAVE_ADDRESS 0
1747
+  #define E3_SLAVE_ADDRESS 0
1748
+  #define E4_SLAVE_ADDRESS 0
1749
+  #define E5_SLAVE_ADDRESS 0
1750
+
1751
+  /**
1729 1752
    * Software enable
1730 1753
    *
1731 1754
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/FolgerTech/i3-2020/Configuration.h 查看文件

@@ -642,11 +642,11 @@
642 642
  * A4988 is assumed for unspecified drivers.
643 643
  *
644 644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
645
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
645
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
646
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
646 647
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
648
- *          TMC5160, TMC5160_STANDALONE
649
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
648
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
649
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
650 650
  */
651 651
 //#define X_DRIVER_TYPE  A4988
652 652
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/FolgerTech/i3-2020/Configuration_adv.h 查看文件

@@ -1727,6 +1727,29 @@
1727 1727
   //#define TMC_SW_SCK        -1
1728 1728
 
1729 1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730 1753
    * Software enable
1731 1754
    *
1732 1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Formbot/Raptor/Configuration.h 查看文件

@@ -689,11 +689,11 @@
689 689
  * A4988 is assumed for unspecified drivers.
690 690
  *
691 691
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
692
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
692
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
693
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
693 694
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
694
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
695
- *          TMC5160, TMC5160_STANDALONE
696
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
695
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
696
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
697 697
  */
698 698
 //#define X_DRIVER_TYPE  A4988
699 699
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Formbot/Raptor/Configuration_adv.h 查看文件

@@ -1729,6 +1729,29 @@
1729 1729
   //#define TMC_SW_SCK        -1
1730 1730
 
1731 1731
   /**
1732
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1733
+   * Set the address using jumpers on pins MS1 and MS2.
1734
+   * Address | MS1  | MS2
1735
+   *       0 | LOW  | LOW
1736
+   *       1 | HIGH | LOW
1737
+   *       2 | LOW  | HIGH
1738
+   *       3 | HIGH | HIGH
1739
+   */
1740
+  #define  X_SLAVE_ADDRESS 0
1741
+  #define  Y_SLAVE_ADDRESS 0
1742
+  #define  Z_SLAVE_ADDRESS 0
1743
+  #define X2_SLAVE_ADDRESS 0
1744
+  #define Y2_SLAVE_ADDRESS 0
1745
+  #define Z2_SLAVE_ADDRESS 0
1746
+  #define Z3_SLAVE_ADDRESS 0
1747
+  #define E0_SLAVE_ADDRESS 0
1748
+  #define E1_SLAVE_ADDRESS 0
1749
+  #define E2_SLAVE_ADDRESS 0
1750
+  #define E3_SLAVE_ADDRESS 0
1751
+  #define E4_SLAVE_ADDRESS 0
1752
+  #define E5_SLAVE_ADDRESS 0
1753
+
1754
+  /**
1732 1755
    * Software enable
1733 1756
    *
1734 1757
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Formbot/T_Rex_2+/Configuration.h 查看文件

@@ -666,11 +666,11 @@
666 666
  * A4988 is assumed for unspecified drivers.
667 667
  *
668 668
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
669
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
669
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
670
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
670 671
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
671
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
672
- *          TMC5160, TMC5160_STANDALONE
673
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
672
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
673
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
674 674
  */
675 675
 //#define X_DRIVER_TYPE  A4988
676 676
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Formbot/T_Rex_2+/Configuration_adv.h 查看文件

@@ -1731,6 +1731,29 @@
1731 1731
   //#define TMC_SW_SCK        -1
1732 1732
 
1733 1733
   /**
1734
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1735
+   * Set the address using jumpers on pins MS1 and MS2.
1736
+   * Address | MS1  | MS2
1737
+   *       0 | LOW  | LOW
1738
+   *       1 | HIGH | LOW
1739
+   *       2 | LOW  | HIGH
1740
+   *       3 | HIGH | HIGH
1741
+   */
1742
+  #define  X_SLAVE_ADDRESS 0
1743
+  #define  Y_SLAVE_ADDRESS 0
1744
+  #define  Z_SLAVE_ADDRESS 0
1745
+  #define X2_SLAVE_ADDRESS 0
1746
+  #define Y2_SLAVE_ADDRESS 0
1747
+  #define Z2_SLAVE_ADDRESS 0
1748
+  #define Z3_SLAVE_ADDRESS 0
1749
+  #define E0_SLAVE_ADDRESS 0
1750
+  #define E1_SLAVE_ADDRESS 0
1751
+  #define E2_SLAVE_ADDRESS 0
1752
+  #define E3_SLAVE_ADDRESS 0
1753
+  #define E4_SLAVE_ADDRESS 0
1754
+  #define E5_SLAVE_ADDRESS 0
1755
+
1756
+  /**
1734 1757
    * Software enable
1735 1758
    *
1736 1759
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Formbot/T_Rex_3/Configuration.h 查看文件

@@ -646,11 +646,11 @@
646 646
  * A4988 is assumed for unspecified drivers.
647 647
  *
648 648
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
649
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
649
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
650
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
650 651
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
651
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
652
- *          TMC5160, TMC5160_STANDALONE
653
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
652
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
653
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
654 654
  */
655 655
 //#define X_DRIVER_TYPE  A4988
656 656
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Formbot/T_Rex_3/Configuration_adv.h 查看文件

@@ -1731,6 +1731,29 @@
1731 1731
   //#define TMC_SW_SCK        -1
1732 1732
 
1733 1733
   /**
1734
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1735
+   * Set the address using jumpers on pins MS1 and MS2.
1736
+   * Address | MS1  | MS2
1737
+   *       0 | LOW  | LOW
1738
+   *       1 | HIGH | LOW
1739
+   *       2 | LOW  | HIGH
1740
+   *       3 | HIGH | HIGH
1741
+   */
1742
+  #define  X_SLAVE_ADDRESS 0
1743
+  #define  Y_SLAVE_ADDRESS 0
1744
+  #define  Z_SLAVE_ADDRESS 0
1745
+  #define X2_SLAVE_ADDRESS 0
1746
+  #define Y2_SLAVE_ADDRESS 0
1747
+  #define Z2_SLAVE_ADDRESS 0
1748
+  #define Z3_SLAVE_ADDRESS 0
1749
+  #define E0_SLAVE_ADDRESS 0
1750
+  #define E1_SLAVE_ADDRESS 0
1751
+  #define E2_SLAVE_ADDRESS 0
1752
+  #define E3_SLAVE_ADDRESS 0
1753
+  #define E4_SLAVE_ADDRESS 0
1754
+  #define E5_SLAVE_ADDRESS 0
1755
+
1756
+  /**
1734 1757
    * Software enable
1735 1758
    *
1736 1759
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Geeetech/A10/Configuration.h 查看文件

@@ -620,11 +620,11 @@
620 620
  * A4988 is assumed for unspecified drivers.
621 621
  *
622 622
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
623
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
623
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
624
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
624 625
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
625
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
626
- *          TMC5160, TMC5160_STANDALONE
627
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
626
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
627
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
628 628
  */
629 629
 //#define X_DRIVER_TYPE  A4988
630 630
 //#define Y_DRIVER_TYPE  A4988

+ 0
- 0
config/examples/Geeetech/A10/Configuration_adv.h 查看文件


部分文件因为文件数量过多而无法显示

正在加载...
取消
保存