UART/sensorlesss homing assistance please

Basic Information:

Printer Model: Anycubic i3 frame, frankenstein bambu nozzle/ideaformer IR3 extruder
MCU / Printerboard: MKS SKIPR
Host / SBC: as above (STM32F407VET6 MCU and integrated RK3328 SOC)
klippy.log
klippy.log (141.0 KB)

I am failing to make UART work.
Driver is a TMC2209 V3.0

I have been using these drivers for several months in standalone mode after failing to set up UART when i first got this board a few months ago.
Now I am re-attempting to figure out how to set up a single driver (X) to use UART and sensorless homing.

Things I have done:

  • unplugged the physical endstop from X- on the skipr.

  • jumpered the XDIAG pins on the skipr.

  • jumpered the UART pins on the skipr (and removed all other jumpers from this driver).


  • added a printer.cfg section:
    2024-04-11--10-03-27
    note: the aliases for pin numbers are correct, but please feel free to confirm against the klippy.log aliases:

X0_UART=PE6, X0_DIR=PC13, X0_STEP=PC14, X0_EN=PC15, X0_TRIG=PA14,

  • tried all available combinations of uart_pin and tx_pin according to the docs, including all 4 possible uart_address: channels.

ASSUMPTIONS:

  • I am unable to find pin IDs for the XDIAG pins, so I assume that by jumpering XDIAG pins it enables diag_pin, which should point to the normal endstop pin of that axis, for the virtual endstop (endstop_pin:tmc2209_stepper_x:virtual_endstop) to be created correctly.

RESULT:
When I prod the driver (DUMP_TMC STEPPER=stepper_x):

$ GET_TMC
// ========== Write-only registers ==========
// SLAVECONF: 00000200 senddelay=2
// IHOLD_IRUN: 00081919 ihold=25 irun=25 iholddelay=8
// TPWMTHRS: 000fffff tpwmthrs=1048575
// TPOWERDOWN: 00000014 tpowerdown=20
// SGTHRS: 000000c8 sgthrs=200
// ========== Queried registers ==========
!! Unable to read tmc uart 'stepper_x' register GCONF
!! Unable to read tmc uart 'stepper_x' register GCONF

When I attempt to home X:

$ G28 X
!! Unable to read tmc uart 'stepper_x' register IFCNT

What am I missing?

It seems likely that my assumption that diag_pin should be set to x- endstop pin is incorrect, but I dont recognise anything linking the steppers’ diag pin with an ID… otherwise i would use that.


[edit] Hmm, but finding this just now seems to confirm that my assumption is correct: diag_pin = X- endstop pin

Turns out the driver was the fault.
I’m not sure if that means all of the 6 driver batch I bought are bad, but in the past I did have all of them in the board at a time when i was trying to make UART work. Maybe that particular driver has high defect rate problems. IDK
Switching the 2209 with new 2226 made everything suddenly work.
Sheesh.

2 Likes

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