tlfong016912Jan 18, 11:44@john I more or less agree that tmc2209 is the best way to go now. For me, SPI cannot do long distance (> 30cm) so UART is my only choice. I have a couple of analogue switches (multiplexors) in my junk box, but I am not sure if using digital mux is a better way. My first step is just 4 motors without need for analogue switches.And my first step consists of 3 little steps: (a) fiddling/messing in standalone mode, using manual jumper wires/pins only, but no Rpi Pico, (b) Use Pico GPIO pins to replace manual operation, but no UART (c) UART mode to config and diagnostics, removing all jumper wires, but still need Step, Dir pins/jump wiring. tlfong016912Jan 18, 12:19I got confused with all the jargons of the tmc2xxx/3xxx stuff, because I came from the A4899/TB6600 world. So I need to read a FAQ:SilentStepStick FAQ – Watteroot
learn.watterott.com/… 2 hours later… tlfong016912Jan 18, 14:48I also found that I misunderstood/misinterpreted many tmc things I read, including the following:(1) I told you that tmc can only do SPI or UART, but not both. I was wrong, tmc5xxx can do both SPI and UART, though 5xxx is a bit expensive, and commercial modules seems can do SPI only. Unluckily I cannot edit my old chat record. Perhaps when we finish our chatting, I will write a summary, including a long errata list.Some more references:TMC5160 Datasheet – Trinamic
TMC2226 Datasheet – Trinamic
TMC2209 and TMC5160: Guide for MKS Gen L and SKR V1.3
TMC2100 guide Part 1 Stepper driver upgrades – How to set VREF & firmware – Teaching Tech 2019feb23
TMC2208 guide Part2 Stepper driver upgrades – Teaching Tech, 2019feb26(see full text)tlfong01Jan 18, 15:38So, TMC5160 can address up to 256 slaves, and no analog switch/mux is required. 2 hours later… tlfong016912Jan 18, 17:18The time has come to test TMC2130. As said earlier, I will test in 3 steps:Step 1 – Standalone mode – No Rpi Pico, only manual jumper wires, and a square wave sig gen.
2 hours later… john1752Jan 18, 19:03Let me know how you get on with the TMC2130. I’ll be sending mine back anyway I think to avoid any trouble. 5160 doesn’t seem too badly priced if it’s a better option eventually but the 2209 will do for now. I just need something to run so I can code the rest. 5160 does need external MOSFETS apparently, so keep that in mind if you are thinking of buying those. The step controlling looks better though tlfong016912Jan 18, 19:17Ah, I did not notice that 5160 need external MOSFETs, that is a big problem for me doing prototyping. I only plan to use 5160 later, perhaps 2 years from now. I am keeping in mind 5160 things for future plans (SPI/UART 2 in 1, can address 256 motors etc). For now I will be messing with 2130/2160 SPI, and 2209 UART. I think almost all 2130/2209 knowledge and skills can easily be ported to 5xxx.I have started 2130, going very slowly. I am using the following motor:
Ah, locking down supper time. See you later. 1 hour later… tlfong016912Jan 18, 20:28
13 hours later… tlfong016912Jan 19, 10:37Now I am browsing other forums to see how other guys a playing with TMC2130. I found many questions have no reply. Here is an example: stackoverflow.com/questions/….The question is to set the stepper motor’s speed, which is proportional to the step rate.I guess I might try this using my TMC2130 testing rig. 4 hours later… tlfong016912Jan 19, 14:48Other tm2130 hobbyists seem not quite understand the relationship between step rate and motor speed, so I am thinking of using a square wave signal generator to explain how we can dreive the motor speed from step rate.For the standalone mode testing I am doing now, I will be using a sig gen to send the step signals to the tmc2130 driver. In other words, no Pico software now. It is the next step I will be using Pico generated stop pulses to replace the external, manually adjusted frequency sig gen.
Reference of the step/sig gen:How can Rpi4B python UART talk to XY PWM Signal Generators? – Rpi SE, Asked 2019oct20, Viewed 813 times
raspberrypi.stackexchange.com/…I forgot to mention that this cheapy PWM sig gen is only US$2. tlfong016912Jan 19, 15:07Now I am staring at the tmc2130, and thinking of how to select:(a) manual hardware pin config mode, or(b) software UART config mode.
tlfong016912Jan 19, 15:24@john Ha, it is only now that I have a chance to look at the real thing then I understand why you said why you could not find the “SPI jumper”. The reason is that the photo we are looking at does not match the real thing we are looking at. I need to find if it is a version difference.The tmc2310 I just received is version 1.1. What is your version?
tlfong01Jan 19, 15:38Ah, locking down afternoon tea time. See you later. 3 hours later… tlfong016912Jan 19, 18:11TMC2130 SPI Jumper Explained:I used a multimeter to verify that the SPI jumper is actually sort of “SPI Enalbe/Disable” jumper. If this jumper shorted by the SMD 002 resistor, or just a solder blob, then the TMC23010’s SPI pin is shorted to ground, thus disabling the SPI function.@john So if your board’s SPI jumper is open, it means SPI signal is disabled. To set SPI mode, you need to remove the resistor/solder blob.Now my board’s SPI jumper is shorted, so I can now ready do standalone mode of configuration, using the config pins CFG/MF pins, but still need to use the Step/Dir pins to move and set direction of the motor. Later if I wish to do SPI configuation, I would remove the 0 Ohm resistor (SMD marked 0 or 002) or the solder blob.
3 hours later… tlfong016912Jan 19, 21:42So I am wiring the tmc2130, but found a big problem. As uploaded above the pinout on the power/coil side is like this:VM, GND, 2B, 1B, 1A, 1A, Vcc, GNDWhat should I do now?Bed time anyway, so I should go to bed. 🙂 16 hours later… tlfong016912Jan 20, 13:30Now I have the sig gen scope, and psu ready to test the tmc2130. The sig gen is set to output 1kHz, 50% duty cycle, as the step output for tmc2130. Scope is set to display the step signal. PSU is set to output 15VDC 5A max, to step down to 12V 5A to power the stepper motor.
3 hours later… tlfong016912Jan 20, 16:19Now I have wired up the tmc2310 v1.0 for standalone mode testing, as briefly described below:1. Logic/Motor Power and Motor Coil: Gnd, 3V3 (Logic Power), A2, A1, B1, B2, Gnd, 12V (Motor Power)2. SPI Jumper – Shorted (Solder Blob, 0Ω, SMD 002) to select Standalone Mode.3. MicroStepping Select 1 Step, CFG2 (CLK) = Gnd, CFG1 (MISO) = Gnd, No Interpolation, No SpreadCycle.4. CFG6 (Driver Enable), Gnd = Enable, Vio (3V3) = Diable, Open = Enable + Ramp Down.5. Dir = Gnd (CCW)6. Step = XY-LPWM3 1kHz ~ 5kHz, 50% Duty Cycle.
7. Motor coils A1, A2, B1, B2 (Red, Grn, Ylw, Blu) to tmc2130 A1, A2, B1, B2 (Orn, Ylw, Grn, Blu) (Note 1) 1 day later… tlfong01Fri 17:47tmc2209 standalone mode operation
johnFri 18:40See, I think my version was SPI anyway which is maybe where I was going wrong. Maybe I needed Standalone mode to eb able to use STEP/DIR? 4 hours later… tlfong01Fri 23:04Ha, the big confusion is whichever mode you use, you still need Step/Dir. SPI is only for configuration, cannot do Step/Dir. 11 hours later… tlfong016912Sat 10:21Now this is the tmc2130 version, using the same hardware setup, except the 8 pin cable with control pins.tmc2130 standalone 2022jan2101►And the photo of the tmc2130:
3 hours later… tlfong016912Sat 13:15Now that I know how to talk to tmc2130 in standalone mode, next step is to talk in SPI. I am starting by searching EEQE for any old post useful. I found 17 posts but they are not very useful either because they are too short for newbies, or they are not for Rpi and python.I do find useful tips on how to power up down so not to fry the drivers:References:***TMC2130 Pinouts and Powering – Watterott*** (TMC2100 2130 2208 2209 5160 SilentStepStick)
learn.watterott.com/…Old EESE TMC2130 Q&As search found 17 results
penzu.com/p/e76c7a3dAnother useful tip I got from old EESE posts are: (1) TMC21xx version 1 and version 2 have different pinouts, (2) Some mdoule have bugs (wrong/missing connections)Anyway, I am going to spend this lock down weekend to try out my luck on (1) SPI mode operation and programming of TMC2130 v1.1, 1.2, 3.0. 2 hours later… tlfong016912Sat 15:08I found that I have fried 2 tmc2130 module, perhaps because (1) I did not power up Logic poser and Motor power in the correct sequence, (2) my bad soldering job when messing with the SPI jump opening/shorting, (3) carelessly wrongly connected the wrong wires (12V to 3V cct, wrongly reversing voltage polarity, etc).Si this time I am tidying up the wiring and labelling them properly:
Bad photo to late to delete, therefore uploading another one. 6 hours later… tlfong016912Sat 21:27I am drafting my SPI mode operation testing plan. Below is a summary.1. I will first use Pico MicroPython GP pins to do pin configuration, using MicroStep Resolution full step and 1/16 step for comparison with SFT mode setting.2. I will also use Pico code to send Step/Dir pulses to move the motor.3. I will then open SPI enable/disble jumper to select SPI mode.
4. I will use Datashet Section 23.1 to try to initialize the driver, and hopefully using MicroPython code to send Step/Dir pulses to move the motor.5. I will then write 40 bit datagrams to write to registers to change microstep resolution eg, full step and 1/16 step, and see if motor speed changes.Comments and suggestions welcome. Almost bed time. See you tomorrow. 18 hours later… tlfong016912Sun 15:47Cheat sheet for tmc2130 microstep resolution setting.
20 hours later… tlfong016912Mon 12:05So, to troubleshoot the OP’s SPI code, I am making the following test plan: (1) Use standalone mode operation to move the stepping motor to in CCW and CW, at different speeds. The following hardware pins are used Dir, Step, Enbl, Cfg2, Cfg2. For Step the XY LPM WPM sig gen is use to step at 1Kz to 5kHz, thus setting verious speeds. No MPU Pico is used in this first test step.(2) Use “SPI” mode, with Pico MicroPython SPI functions to config the tmc2130 driver, including microstep resolution, by writing the config parameters in the driver registers.Now for selecting between standalone mode with jumpering hardware pins and SPI mode setting driver registers, I have extended the SPI jumper using two connecting wires and a jumper, as shown below:
1 day later… tlfong016912Tue 14:05I found that the OP’s tmc2130 board is BigTree v3.0, while mine are TaoBao No Brand v1.1. V3.0 is greatly improved, compaing to V1.1, also the lay out of components are slightly different, but causing big confusion. So this time I am using V3.0 for testing.
1 day later… tlfong016912yst 22:52(removed)
12 hours later… tlfong01691211:01@john You might be interested to know that BigTreeTech is using 2209 to make a 3D printer: electronicsweekly.com/news/…@john I still find it confusing. (1) I only know that if you do Standalone mode (shorting SPI enable/disable jumper), then you can manual/software config 2130, and use siggen or python GPIO steps to move motor. (2) If you use SPI mode, the problem is that two SPI pins clash with Mg1/2 pins, ie you can no longer manually config things, uStep resolution etc. You can only use SPI to config, but then troubleshooting become difficult.(3) I found a new version of 2160 seems to have a workaround (see my last post about 2160). But I only bought this 2160 recently. So I need to explore a bit. Stay tuned. (4) You mentioned that tmc5xxx need external power MOSFET bridge. But my version of 2160 (perhaps other versions of 5xxx) module has the bridge already assembled, with a huge heat sink. So I think it is good for CNC or 3D printer projects where you have ample space to house hardware.