TMC SPI daisy chain support (experimental) (#15081)

This commit is contained in:
Bob Kuhn
2019-08-30 17:39:45 -05:00
committed by Scott Lahteine
parent 0bcb64403c
commit ba91bca1eb
105 changed files with 1592 additions and 0 deletions

View File

@ -102,3 +102,6 @@
// Extensible UI pin mapping for RepRapDiscount
#define TOUCH_UI_ULTIPANEL ENABLED(LULZBOT_TOUCH_UI) && ANY(AO_EXP1_PINMAP, AO_EXP2_PINMAP, CR10_TFT_PINMAP)
// TMC SPI Chaining
#define TMC_USE_CHAIN (X_CHAIN_POS||Y_CHAIN_POS||Z_CHAIN_POS||X2_CHAIN_POS||Y2_CHAIN_POS||Z2_CHAIN_POS||Z3_CHAIN_POS||E0_CHAIN_POS||E1_CHAIN_POS||E2_CHAIN_POS||E3_CHAIN_POS||E4_CHAIN_POS||E5_CHAIN_POS)

View File

@ -2128,6 +2128,70 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#error "STEALTHCHOP requires TMC2130, TMC2160, TMC2208, TMC2209, or TMC5160 stepper drivers."
#endif
#if TMC_USE_CHAIN
#if (X_CHAIN_POS && !PIN_EXISTS(X_CS) ) \
|| (Y_CHAIN_POS && !PIN_EXISTS(Y_CS) ) \
|| (Z_CHAIN_POS && !PIN_EXISTS(Z_CS) ) \
|| (X2_CHAIN_POS && !PIN_EXISTS(X2_CS)) \
|| (Y2_CHAIN_POS && !PIN_EXISTS(Y2_CS)) \
|| (Z2_CHAIN_POS && !PIN_EXISTS(Z2_CS)) \
|| (Z3_CHAIN_POS && !PIN_EXISTS(Z3_CS)) \
|| (E0_CHAIN_POS && !PIN_EXISTS(E0_CS)) \
|| (E1_CHAIN_POS && !PIN_EXISTS(E1_CS)) \
|| (E2_CHAIN_POS && !PIN_EXISTS(E2_CS)) \
|| (E3_CHAIN_POS && !PIN_EXISTS(E3_CS)) \
|| (E4_CHAIN_POS && !PIN_EXISTS(E4_CS)) \
|| (E5_CHAIN_POS && !PIN_EXISTS(E5_CS))
#error "With TMC_USE_CHAIN all chained TMC drivers need a CS pin."
#else
#if X_CHAIN_POS
#define CS_COMPARE X_CS_PIN
#elif Y_CHAIN_POS
#define CS_COMPARE Y_CS_PIN
#elif Z_CHAIN_POS
#define CS_COMPARE Z_CS_PIN
#elif X2_CHAIN_POS
#define CS_COMPARE X2_CS_PIN
#elif Y2_CHAIN_POS
#define CS_COMPARE Y2_CS_PIN
#elif Z2_CHAIN_POS
#define CS_COMPARE Z2_CS_PIN
#elif Z3_CHAIN_POS
#define CS_COMPARE Z3_CS_PIN
#elif E0_CHAIN_POS
#define CS_COMPARE E0_CS_PIN
#elif E1_CHAIN_POS
#define CS_COMPARE E1_CS_PIN
#elif E2_CHAIN_POS
#define CS_COMPARE E2_CS_PIN
#elif E3_CHAIN_POS
#define CS_COMPARE E3_CS_PIN
#elif E4_CHAIN_POS
#define CS_COMPARE E4_CS_PIN
#elif E5_CHAIN_POS
#define CS_COMPARE E5_CS_PIN
#else
#error "With TMC_USE_CHAIN some TMC drivers should be chained."
#endif
#if (X_CHAIN_POS && X_CS_PIN != CS_COMPARE) \
|| (Y_CHAIN_POS && Y_CS_PIN != CS_COMPARE) \
|| (Z_CHAIN_POS && Z_CS_PIN != CS_COMPARE) \
|| (X2_CHAIN_POS && X2_CS_PIN != CS_COMPARE) \
|| (Y2_CHAIN_POS && Y2_CS_PIN != CS_COMPARE) \
|| (Z2_CHAIN_POS && Z2_CS_PIN != CS_COMPARE) \
|| (Z3_CHAIN_POS && Z3_CS_PIN != CS_COMPARE) \
|| (E0_CHAIN_POS && E0_CS_PIN != CS_COMPARE) \
|| (E1_CHAIN_POS && E1_CS_PIN != CS_COMPARE) \
|| (E2_CHAIN_POS && E2_CS_PIN != CS_COMPARE) \
|| (E3_CHAIN_POS && E3_CS_PIN != CS_COMPARE) \
|| (E4_CHAIN_POS && E4_CS_PIN != CS_COMPARE) \
|| (E5_CHAIN_POS && E5_CS_PIN != CS_COMPARE)
#error "With TMC_USE_CHAIN all TMC drivers must use the same CS pin."
#endif
#endif
#undef CS_COMPARE
#endif // TMC_USE_CHAIN
#if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))
#error "STEALTHCHOP_XY and STEALTHCHOP_Z must be the same on DELTA."
#endif