Multiple TMC2209 on serial bus?

Can multiple TMC2209 UART TX and RX pins share the same soft serial pins? Individual TMC2209's are enabled as needed.

If You can put one of them in tristate, yes. Else, no.
Why not use 2 serial channels?

Would this be true if I'm sending the same info on TX to each drive and controlling motion with STEP DIR and EN? Would they not receive the same parameters?

Perhaps, if the TMC2209 does not acknowledge receipt of a command.

Assuming only one transmits and the others receive this would be fine. However the other transmitters must not be logically connected to this buse. This can be accomplished by tristate drivers. Take a look at CAN, it would work great and allow anybody to talk whenever.

What is the target and how much data is being transferred?

It would be nice to understand the TMC 2209 UART better. I have not found TMCStepper in GitHub to be very useful. Might there be other documentation on function commands and parameter settings for the TMCStepper libary.

I found this info:https://github.com/janelia-arduino/TMC2209#serial-addresses which suggested it can be done by addressing the individual TMC2209's with the MS1 and 2 pins.


#include <Arduino.h>
#include <TMC2209.h>

// Instantiate the two TMC2209
TMC2209 stepper_driver_0;
const TMC2209::SerialAddress SERIAL_ADDRESS_0 = TMC2209::SERIAL_ADDRESS_0;
TMC2209 stepper_driver_1;
const TMC2209::SerialAddress SERIAL_ADDRESS_1 = TMC2209::SERIAL_ADDRESS_1;
const long SERIALX_BAUD_RATE = 115200;

void setup()
{
  // TMC2209::SERIAL_ADDRESS_0 is used by default if not specified
  stepper_driver_0.setup(Serial1,SERIALX_BAUD_RATE,SERIAL_ADDRESS_0);
  stepper_driver_1.setup(Serial1,SERIALX_BAUD_RATE,SERIAL_ADDRESS_1);
}

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