Is it possible to use only the UART to control the TMC2209 without using the DIR and STEP pins?

Basic Information:

MCU / Printerboard: Arduino Uno

I am designing an Arduino Uno sized Shield for the Voron 0. This Arduino has exactly one fewer pin count than needed, so I am looking for ways to reduce the number of pins used.

I noticed that instead of using the DIR and STEP pins, the TMC2209 can be controlled using only the UART. This would allow control of four drivers using only two pins, allowing me to use more pins for fans, heaters, and sensors.

I don’t know if the Klipper supports this operation though, and if it doesn’t I guess I’ll just have to connect some fans to the Raspberry Pi.

AFAIK, no.

The UART is meant to control higher levels of the driver (https://www.instructables.com/UART-This-Serial-Control-of-Stepper-Motors-With-th/)

Basic control is done with DIR/STEP/EN

Care to explain why?
An 8 bit, 16 MHz MCU from 2010 seems anachronistic. In addition, its low performance might even limit the achievable step rate.

This is not a Klipper limitation. These drivers cannot be controlled by UART, only their settings can be managed by this, as @EddyMI3D indicated.

The UART motion controls in TMC22xx stepper drivers are not meant for precision operation. My specific experience is with the TMC2225 so there may be some slight differences with the TIMC2209 but I doubt it.

I used this mode in mobile robots that use steppers for driving the wheels/tracks and it works great in this application but you can’t expect the kind of accuracy required for a 3D printer. At the end of the motion sequence the drivers stop at a full cycle, not a partial cycle. Along with that, serial commands can get queued up inside the TMC22xx driver meaning that when movement starts and ends is a bit unpredictable.

These issues aren’t a problem for something like a robot that is following a line, avoiding obstacles, etc. but make using UART motion control in a 3D printer unacceptable.

I second what @Sineos has said but would ask if you have the skills to put design an Arduino shield, why don’t you just drop in something like a STM32G0B1 or RP2040 in the middle of the board and come up with your own controller board? Lots of information/reference designs on how to do that and the size and cost would be about the same as the board you’re thinking of AND the total cost would be a lot less without the Arduino.

Thanks for the reply, I see now that it looks like I should still use STEP and DIR to make the movement more accurate.

Regarding your question, it’s true that designing the board directly with a newer model MCU would have been a better choice, however the reason I designed it as a Shield is that I intend to utilize the Uno I already have.

You’re going to design a board, incurring the time and cost, that you know won’t meet your requirements because you want to use an Arduino Uno that probably cost you less than $20 and you can replace for less than $5?

Sorry, that doesn’t compute.

If you’re unsure of your design skills and knowledge when it comes to adding a MCU to your design, then why don’t you splurge and buy an Arduino Mega2560 (you can get clones for much less than $20) which will have enough IO for your design as well as enough Flash space (I believe there is an challenges loading Klipper onto the 32 KB of Flash built into the Uno’s ATmega328P) for things to be comfortable.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.