Uncategorized

tmc2130 spi programming


tlfong014339
Mon 20:30forums.raspberrypi.com/…Ha, that is the problem. 2209 has only UART, and 2160 has only SPI. One problem with SPI is that you cannot do long distance, perhaps less than 2 meters, over which the system would be unstable. One the other hand, UART can usually do 200 feet or longer. johnYes I’d read that previously. I’m happy to use UART but it’s slower, right? I want to be able to control 4 motors independantly. Is UART quick enought to make this possible? tlfong01Ah almost bed time. Call it a day, see you later. johnSEe you later, thanks agin for the help here. I might order the 2209 to try it out, I’m getting nowhere with the TMC2130 and it’s incredibly frustrating tlfong014339Well, Page 15 pf the datasheet says the following:A minimum baud rate of 9000 baud is permissible, assuming 20 MHz clock (worst case for low baud rate). Maximum baud rate is fCLK/16 due to the required stability of the baud clock.So the upper baud limit is fCLK/16, much much faster than you would like. johnMon 20:45I’ll try them and look through the datasheet and see how I get on. It’s frustrating not knowing why the TMC2130 isn’t workinth though.Are the analogue switches you mention above seperate parts?  7 hours later… johnTue 4:05I’ve ordered an analogue switch and the 2209. It seems like the best way to go at the moment, and even using UART with the analog switches might be better all round anyway. Better than SPI.  8 hours later… tlfong014339Tue 11:38@john Let us look closely at the (a) tmc2130 datasheet and see if we have missed something important. (b) Silent Stepper Sick Schematic (the breakout/board/module) and find out the function of the jumpers (SPI, CFn).References:trinamic.com/products/…

(2) TMC2130 Datasheet R1.1 – Trinamic 2021jun17
trinamic.com/fileadmin/assets/…

(3) TMC2130 SPI SilentStepStick SPI Schematics- Trinamic 2017dec22
trinamic.com/fileadmin/assets/…Now the schematic:

user image

@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. tlfong014339Tue 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… tlfong014339Tue 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
trinamic.com/fileadmin/assets/…

TMC2226 Datasheet – Trinamic
trinamic.com/fileadmin/assets/…

TMC2209 and TMC5160: Guide for MKS Gen L and SKR V1.3
youtube.com/…

TMC2100 guide Part 1 Stepper driver upgrades – How to set VREF & firmware – Teaching Tech 2019feb23
youtube.com/…

TMC2208 guide Part2 Stepper driver upgrades – Teaching Tech, 2019feb26(see full text)tlfong01Tue 15:38So, TMC5160 can address up to 256 slaves, and no analog switch/mux is required.  2 hours later… tlfong014339Tue 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.

user image

  2 hours later… john1752Tue 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 tlfong014339Tue 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:

user image

Ah, locking down supper time. See you later.  1 hour later… tlfong014339Tue 20:28

user image

tlfong01Tue 20:50Now I am using this stepdown voltage regulator to test the stepper motor:XL4015 1.25 to 36V DC-DC 5A Stepdown Module
components101.com/modules/…tlfong014339Tue 21:09

user image

  13 hours later… tlfong014339Wed 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… tlfong014339Wed 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.

user image

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. tlfong014339Wed 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.

user image

tlfong014339Wed 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?

user image

tlfong01Wed 15:38Ah, locking down afternoon tea time. See you later.  3 hours later… tlfong014339Wed 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.

user image

  3 hours later… tlfong014339Wed 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… tlfong014339Thu 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.

user image

  3 hours later… tlfong014339Thu 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.

user image

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… tlfong01yst 17:47tmc2209 standalone mode operation
youtu.be/TbRPGHf4-wgtlfong014339yst 18:19

user image

johnyst 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… tlfong01yst 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… tlfong01433910: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:

user image

  3 hours later… tlfong01433913: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… tlfong01433915: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:

user image

user image

Bad photo to late to delete, therefore uploading another one.  6 hours later… tlfong01433921: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.

user image

user image

user image

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.

Categories: Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.