SD-Card Support mit TMC2130 Treibern

Eine Frage, die mir immer wieder gestellt wurde, seitdem es dieses Blog gibt, ist, ob die von mir angebotene Firmware denn auch das Drucken von der SD-Karte unterst├╝tzt. Bislang musste ich das verneinen. Aber heute zeige ich dir, wie du den SD-Card Slot wieder aktivieren kannst.

Was ist das Problem mit TMC2130 Treibern und dem SD-Card Slot?

Die 2130 Treiber von Trinamic nutzen das sogenannte Serial Peripheral Interface, auch bekannt als SPI-Bus, um mit dem Board des Druckers zu kommunizieren und bieten dadurch viele interessante Funktionen, die andere Treiber nicht haben. Sie sind aber bei Druckern wie dem Tevo Tornado, die ein RepRap Discount Full Graphic Display nutzen nicht die einzige Komponente, die auf diesen Bus setzt. Und genau da liegt unser Problem.

Der SPI Bus basiert im wesentlichen auf drei Leitungen: MISO (bzw. SDI), MOSI (bzw. SDO) und CLK (oder auch SCK), die von allen Teilnehmern im Bus geteilt werden. Damit ein einzelner Teilnehmer angesprochen werden kann, gibt es noch ein Chip-Select, je Teilnehmer. Als ich meine Anleitung f├╝r die Umr├╝stung auf TMC2130 Treiber geschrieben habe, gab es nur wenige Dokumentationen im Netz.

Anhand dessen, was ich so lesen konnte und durch das Studium der verf├╝gbaren Pins auf dem MKS Gen L Mainboard, kam ich zum Schluss, dass die Pins D50, D51 und D52 wohl am besten f├╝r den Anschluss geeignet sind. Immerhin sind sie auf dem Schaltplan auch bereits als MISO, MOSI und CLK gekennzeichnet.

Wie sich herausstellen sollte, sind diese Pins aber, anders als die ├╝brigen Anschl├╝sse, nicht nur einmal auf dem Board vorhanden. Wir nutzen die Pins an AUX-3. Sie sind aber auch am EXP-2 Port vorhanden. Dort wird das Display-Modul samt Cardreader angeschlossen. Und auch der Cardreader sendet und empf├Ąngt Daten ├╝ber den SPI Bus. Die Treiber und das SD-Karten Modul senden nun beide ├╝ber den gleichen Bus ihre Daten, ohne das irgendwer f├╝r Ordnung sorgt. Die Folge: Funktionen der 2130 Treiber tun nicht mehr, was sie sollen und die SD-Karte wird nicht erkannt.

Lese auch:  Marlin 1.1.8 SensorlessHoming Bug

Wie kann ich trotzdem Treiber und Karte nutzen?

Der einfachste Weg, um dieses Problem zu beheben, ist die Treiber vom hardwareseitig festgelegten SPI Bus zu nehmen und einen zweiten, softwareseitigen aufzumachen. Dazu lassen sich beliebige freie Pins auf dem Board verwenden. Durch eine kleine Anpassung in der Firmware wei├č auch diese Bescheid, wo sie die Treiber findet.

An den folgenden Stellen m├╝sst ihr Anpassungen in eurer Firmware vornehmen (gezeigt werden nur die ge├Ąnderten Stellen, die Ausz├╝ge basieren auf Marlin Version 1.1.9):

configuration.h

/**
 * SD CARD
 *
 * SD Card support is disabled by default. If your controller has an SD slot,
 * you must uncomment the following option or it won't work.
 *
 */
#define SDSUPPORT

configuration_adv.h

  /**
   * Use software SPI for TMC2130.
   * The default SW SPI pins are defined the respective pins files,
   * but you can override or define them here.
   */
  #define TMC_USE_SW_SPI
  #define TMC_SW_MOSI       65
  #define TMC_SW_MISO       64
  #define TMC_SW_SCK        66

Hardware

Wie du wahrscheinlich schon an der Firmware Anpassung erkannt hast, m├╝ssen nat├╝rlich auch auf dem Board die drei entsprechenden Leitungen umgesteckt werden:

SDO von Pin 50 auf Pin 65
SDI von Pin 51 auf Pin 64
SCK von Pin 52 auf Pin 66

Alle drei Pins finden sich auf dem AUX-2 Header, wo bereits alle unsere CS-Leitungen angeschlossen sind. Damit haben wir nun auch alle Kabel der TMC2130 Treiber ordentlich auf einem einzigen Anschluss.

Andere Pins als hier genannt w├Ąren nat├╝rlich auch m├Âglich. Es sollte jedoch immer darauf geachtet werden, ob diese nicht schon anderweitig vorbelegt sind. Da bei mir auch noch eine LED Beleuchtung angeschlossen ist, waren diese, bisher ungenutzten Pins aber die logischste Entscheidung.

Lese auch:  Probleme mit Tevo Tornado L├╝ftern

2 Gedanken zu “SD-Card Support mit TMC2130 Treibern”

  1. Gr├╝├č Gott.
    Ich verstehe irgendwie den Aufwand nicht, einen Software SPI Port aufzumachen, der wesentlich langsamer ist als ein Hardware SPI Bus.
    Mit meinem MKS Gen L 1.0, betreibe ich ein MKS_MINI_12864 LCD mit SD Card Reader und 2130er im SPI Mode unter Marlin 1.1.9.
    Warum funktioniert es bei mir ohne St├Ârungen? Es hat mich zwar 3 Tage Arbeit gekostet, es ans laufen zu bringen, da meines Erachtens an AUX2 zwei Pins laut meines Beschaltungsplans falsch deklariert sind… Aber am Ende l├Ąufts einwandfrei. Falls Du meine Config austesten m├Âchtest, sende ich Sie dir gerne zu. Evtl kannst Du mir dann auch best├Ątigen ob der per Google-Suche findbare Plan tats├Ąchlich 2 Fehler enth├Ąlt. Vllt schreibe ich mir auch mal ein kurzes Blink Testskript um zu testen ob die Pin Nummern wirklich falsch sind. Ich bin meistens im Discord in realtime erreichbar. Ansonsten ist meine email hinterlegt.
    Gru├č,
    Dirk

    1. Hi Dirk,

      k├Ânnen wir gern mal genauer er├Ârtern. Klar ist es nicht die ideale L├Âsung, zwei SPI-Busse aufzumachen. Alles ├╝ber einen w├Ąre vermutlich besser, aber auf der anderen Seite kommt es bei der Kommunikation mit den Treibern wohl auch nicht so sehr auf Geschwindigkeit an, wie beim Lesen der SD-Karte. Ich hatte, wie geschrieben, bisher auch nicht die direkte Notwendigkeit f├╝r mich, den Reader ├╝berhaupt zu verwenden, aber weil immer wieder gefragt wurde und in einem Kommentar mal dieser Weg angeregt wurde, habe ich das so versucht und es war erfolgreich.

      Du hast, wenn ich das richtig sehe, aber auch ein anderes Display, vielleicht liegt es ja auch daran, dass das bei dir problemlos klappt? Wo hast du das Display denn auf dem Board angeschlossen? Beim originalen Tevo Display werden EXP1 und EXP2 belegt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht ver├Âffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr dar├╝ber, wie deine Kommentardaten verarbeitet werden.