TMC 2209's not intialising in UART mode

Basic Information:

Printer Model: Tevo Tornado
MCU / Printerboard: Robin nano V3.1

klippy.log (940.4 KB)

Describe your issue:

So a test print failed due to layer shifting which indicated a stepper/driver issue. At first I tried reducing the speed and acceleration settings and as expected it made no difference. After reading the klippy log it seems the drivers aren’t initialising in UART mode.

So I removed 2 stepper drivers to double check the jumper placement and it appears that they’re on the correct pins according to this
https://github.com/makerbase-mks/MKS-Robin-Nano-V3.X/wiki/Drivers_MKS_TMC2209_2225_2208#uart-mode-settake-x-axis-as-example

I have the board logic set to 5v, is this right for UART mode?

The board came with two trees V2.0 tmc2209 drivers even though it’s an MKS board, I don’t know if that matters. I have checked the pinouts on the MKS and two trees TMC 2209 drivers and they are labeled differently but the UART pins seem to be in the same position on both of them.

I’ve read quite a few other posts about this type of issue and they seem to suggest incorrect jumper settings or wiring which I’m (almost) certain is not my issue.

I did a DUMP_TMC on all the drivers if that’s any help, it’s in the klippy log

I’m not sure what else to check, any suggestions would be appreciated.

The UART connection seems fine. Anyway, if Klipper had trouble with the UART connection it would error out hard, with something like

TMC stepper_x failed to init: Unable to read tmc uart 'stepper_x' register IFCNT

Possible reason for layer shifts are:

  • Run current too low for the given stepper
  • Hard going / binding axes
  • Very hot TMC modules, but not hot enough to completely fail with an overtemp error

The log containes those errors a couple of times if I’m not wrong.
I’m wondering why the TMC dump looks fine so far…

1 Like

I did see that failed to init line in the log a few times for all the axes but there was no error reported during the print through mainsail.
It was only layer shifting on the Y axis, so I suspected the run current could be a bit low for it too. It has a glass ultrabase on it & it weighs a ton.
I rebuilt the whole thing as a standalone to get the board out of that dinky little box and so I could design it with better airflow to the drivers, so now it’s setup with a fan blowing directly at the stepper drivers and it has really good airflow across the drivers and their heatsinks and they’re staying cool to touch when the layer shifts occur.
The motor on the Y axis is running cool to touch too, so I was planning on increasing its run current in small increments but I thought I’d check the log for any problems first.
Something didn’t sound right on that axis though, I can hear it when it changes modes and it gets much louder than it did with an MKS Gen L and TMC2208 drivers. It doesn’t feel like it’s binding when the motors are off but I’ll strip it down give everything a good inspection.

Thanks for the replies guys.

You are right. I must have skipped over it.

Generally these errors are tricky to diagnose. Some general hints here: TMC drivers - Klipper documentation

Cross check against https://github.com/makerbase-mks/MKS-Robin-Nano-V3.X/blob/main/hardware/MKS%20Robin%20Nano%20V3.1_001/MKS%20Robin%20Nano%20V3.1_001%20PIN.pdf and make sure that your jumper settings are correct.

1 Like

Thanks @Sineos I’ll check out those links and see what I can find out.

So I’ve double and triple checked the jumpers and there’s no wiring to be done so it looks like I’m in no mans land. The printer has been power cycled quite a few times too so from what I’ve read the drivers should have reset if they were programmed in a different state when I got them.

All I can think of is setting just one driver to run in UART mode and try to get it to initialise to eliminate any possible addressing conflicts and maybe assign an address to each driver if I can get one running properly. Maybe I’ll just be on a wild goose chase doing that, from what I’ve read and been told here I shouldn’t need to assign an address to them.
Maybe the log will reveal something if I run it with only one driver in UART mode. If I see anything noteworthy in the log I’ll post it here.

Edit: If I jump the diagnostic pins does that generate a hex dump through UART or SPI or is it readable information that will appear in the klippy log?

Can you take a picture of how your jumpers are set?

I’ve worked with the Robin Nano V3.1 quite a bit with TMC2209s without any issues.

Looking over your klippy.log I see a bunch of macros. What happens when you take them out?

I haven’t included any macros myself, I think they’re the ones from the mainsail config. I suppose I could backup that file and modify it but I didn’t want to play with that unless it’s absolutely necessary.

I’ve read quite a few of your posts about the Robin nano over the last week or so and my setup was based on some of the information you’ve posted.

Here’s a picture of how I’ve set the jumpers.


I’m at the stage now where I hope I have set the jumpers on the wrong pins and changing them will solve the problem.
Thanks for the reply @mykepredko

So I removed all the jumpers on the UART pins except the one on the Y axis and edited my printer.cfg to remove the UART config for the X,Z and extruder and ran a DUMP_TMC on the Y axis which seemed OK.
Then I ran a test print and downloaded the klippy log and there is still a failed to init message for the Y axis when it’s only running the Y axis in UART mode.
It caused a crash on X max and stretched the X axis out by a factor of 2 (just guessing that figure) so it needs a different config on the X rotation or microsteps. That was purely operator error on my part and a lack of due diligence there.

New klippy log
klippy.log (842.0 KB)

Edit: I replaced the X UART jumper and config settings, the DUMP_TMC seems OK for the X driver too. Now I have two failed to init messages, one for the X and one for the Y.

I’m at a bit of a loss to understand exactly what’s going on, I can hear the motors change tone as the drivers change step modes and the DUMP_TMC seems OK, so it appears to be working as intended, it’s just that failed to init message bugging me & I’m not sure if I have control of the motor current through the UART settings. The drivers are on their own control pins, so it really shouldn’t be an addressing conflict as I understand it.

I’m tempted to replace the board with an SKR E3 mini V3 I have in the parts bin which is hard wired for UART out of the box just so I have something to compare the log to.

Thanx for the image.

When I compare it to how I wire my TMC2209s, there are two differences.

The first is, I run the TMC2209s on 3.3V, not 5. I’m wondering if this is your issue.

Secondly, you can see that I’ve jumpered three of the pin sets and not one. I know there’s a reason for that but, for the life of me, I can’t remember what it is. It may be unimportant but it’s a visible difference.

I know the board I’m showing you is a 3.0, but the motor socket wiring is identical between it and the 3.1.

I suggest you try changing the TMC2209 voltage selection and if that doesn’t fix anything add the additional jumpers on each socket.

1 Like

Thanks @mykepredko, I’ll try the voltage setting first & then I’ll try adding the other two jumpers like you have yours set. I’m in a habit of only introducing one new variable at a time so I know what to suspect if a new problem arises.
I did mention the voltage earlier but no-one else mentioned it, I suppose they already have enough on their plates reading through everyone’s klippy logs and and analysing them…
I don’t know how they find the time to do it all TBH.
Cheers.

1 Like

I marked your post as a solution, thanks @mykepredko .
I changed the board voltage to 3.3v and just left it with a single jumper on each UART pin.

A search through the log shows the failed to init message up to the point where I changed the board voltage and then that message never appeared again.

I don’t know where I got the idea to set it 5v to begin with, I must have read several thousand pages of text in the last week and made a false conclusion based on something I read.
Thanks for the help guys.

1 Like

Good to know and thanks for sharing.
Although it is quite strange: VIO for these steppers is indeed between 3V3 and 5V and somewhere I read that 5V is indeed preferred but I do not know exactly why.
I run my board with 5V and never had issues with it.

1 Like

Do you have a reference for that? I’ve never seen anything indicating that one voltage is “preferred”.

I just did a quick scan of some different controller board schematics that I have handy and there’s a mix of VIO at 3.3V and 5.0V:

  • Robin Nano V3.x - 3.3V or 5.0V
  • Octopus (Pro) - 5.0V
  • Manta M8P - 5.0V
  • EBB42 - 3.3V

The TMC2209 datasheet indicates that VIO needs to be in the range of 3.0V to 5.25.

I believe the real issue is what the MCU’s IO pins can handle with respect to the logic levels and whether or not there needs to be in line current limiting resistors to avoid the IO pins’ ESD protection diodes from being saturated (and affecting the operation of the MCU) when driving them at 5.0V.

But, that theory doesn’t quite hold water when you look at something like the Manta M8P (VIO 5.0V) and the EBB42 (VIO 3.3V) which both use variants of the STM32G0B1 MCU.

Regardless, in this case (Robin Nano V3.x) , the TMC2209s have to have a VIO of 3.3V.

https://learn.watterott.com/silentstepstick/comparison/

Sorry, I must be missing it on the link - where does it say that 5.0V is preferred?

1 Like

After that epic thread with Gene about the same board I bet when you first saw my post, you were thinking - here we go again., maybe it’s time for that vacation on Mars.
After several days trying to isolate my problem I was thinking maybe I need a vacation on Mars too when Myke suggested such a simple solution.
I really appreciate you guys tolerating my incompetence, thanks for the help.

3 Likes

Sorry, I’ve overseen the second half of your query.

1 Like

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