cancel
Showing results for 
Search instead for 
Did you mean: 

UART to interface with TMC2209-Eval Board problems

RPG
Senior

Hi

I have to connect an STM34 Nucleo board to a TMC2209. I have to setup a single wire UART. Only TX is connected with the TMC board.

I transmitted a datagram and when I try to receive the response I get back the initial data I have e sent.

Does anybody know what could be happening?

does anyone has experience controlling a stepper motor with TRINAMIC TMC2209?

Please, I need help. I am in a bit of a hurry.

Best regards, Raúl

35 REPLIES 35

I was also struggling with the UART communication with TMC2209, in my case transmit was always working fine but receive wasn't. I solved my issue by enabling halfduplex transmitter (HAL_HalfDuplex_EnableTransmitter) before sending and enabling halfduplex receiver (HAL_HalfDuplex_EnableReceiver) before receiving. An example driver code is available on my github page (https://github.com/veysiadn/tmc_2209), the other parts of the code is modified from TMC2209 arduino library (https://github.com/janelia-arduino/TMC2209).

Good luck,

Veysi

Hello,

Sorry to revive an old thread, but were your UART tests performed on the TMC2209 EVAL Board? (https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/tmc2209-eval.html)

I'm facing the same issues of the original poster, and I made sure other aspects discussed in the thread are correct.

Best Regards,

Lucas 

Hi,

First of all thank you for github!!

I am using a tmc2209 with a stm32f411, I can transmit information and make the motor turn with your movement function but i cant read the SallGuard neither the steps couter. I am using you setup from the examples and i changed the uart number for the one i am using. Could it be Uart configuration?? I tried asynchronous and one wire and neither of them work. The most funny thing is that if I call the stallguard get value function and the step counter function right next, I receive values in the stallguard that seem good, the starty at 400 and some and go lower if I apply pressure to the motor.

If you can't read any information from the driver, probably your UART communication is problematic. As I explained above ```

I was also struggling with the UART communication with TMC2209, in my case transmit was always working fine but receive wasn't. I solved my issue by enabling halfduplex transmitter (HAL_HalfDuplex_EnableTransmitter) before sending and enabling halfduplex receiver (HAL_HalfDuplex_EnableReceiver) before receiving. An example driver code is available on my github page (https://github.com/veysiadn/tmc_2209), the other parts of the code is modified from TMC2209 arduino library (https://github.com/janelia-arduino/TMC2209).

```

Hope it works, good luck :)

zhangshuo-666
Associate

I've encountered a similar issue while working with the STM32F103ZET6. 
When configuring USART1 for Half-Duplex mode via STM32CUBEMX, UART communication didn't work, no received data was captured. However, when I used UART4 with the exact same configuration, and explicitly called HAL_HalfDuplex_EnableReceiver and HAL_HalfDuplex_EnableTransmitter before each HAL_UART_Transmitand and HAL_UART_Receive call, it worked perfectly.

Hope this helps you facing the same issue — double-check the HAL control calls for half-duplex mode.