Hallo zusammen, ich versuche, den Schrittmotortreiber TMC5240 in Betrieb zu nehmen, stoße jedoch auf Schwierigkeiten und mir fehlen weitere Lösungsansätze. Im Anhang findet ihr den Schaltplan, bei dem der TMC5240 mit unserem Microcontroller (ATSAMD21) verbunden ist. IC55 und IC58 sind nicht mehr bestückt. Aktuell sind die Widerstände R60 mit 1 kOhm und R59 mit 0 Ohm bestückt (entsprechend der Schaltung in der PDF "TMC5240-EVAL_V10 - Schematic Drawing.pdf"). Die UART-Nachricht, die vom Microcontroller gesendet wird, schaut für mich korrekt aus, und die CRC-Berechnung habe ich aus dem Datenblatt des TMC5240 übernommen. Das Oszi-Bild findet ihr im Anhang. Die eingestellte Baudrate beträgt 512 kbit/s, mit 8 Datenbits, einem Stoppbit und ohne Paritätsbit. Die maximale Baudrate, die der TMC laut Datenblatt unterstützt, ist Clockfrequenz/16. Die interne Clock wird verwendet und läuft auf circa 12 MHz. Langsamere Baudraten habe ich ausprobiert, führten aber nicht zum Erfolg. Das Problem ist, dass auf meiner Platine beide TMC5240-ICs nicht reagieren. Es erfolgt keine Rückmeldung, obwohl ich eine Antwort erwarte. Ich habe auch ein Eval-Board vom ATSAM mit einem TMC5240-BOB Eval-Board genauso verbunden wie im Schaltplan dargestellt, einschließlich der gleichen Widerstände. Auch bei diesem Aufbau erhalte ich keine Antwort. Hat irgendwer eine Idee, wie ich weitermachen kann? Seht ihr einen Fehler im Schaltplan? Ist meine UART-Nachricht korrekt? Gibt es mögliche Stolpersteine, wie z.B. Timing-Probleme, Signalpegel oder zusätzliche Konfigurationen, die ich übersehen habe? Ich freue mich über Ihre Unterstützung, da mir aktuell die Ideen ausgehen, wo der Fehler liegen könnte. Vielen Dank für eure Hilfe! Link zum Datenblatt: https://www.analog.com/media/en/technical-documentation/data-sheets/TMC5240_datasheet_Rev_0.pdf
Hallo Marc wenn ich das richtig sehen sendest du dem TMC als erste 4 bits die folge 0101 auf Seite 26 im Datenblatt steht allerdings das der für den Sync 1010 erwartet. Gruß Björn
Hey Björn, danke für deine Antwort. Ich bin mir allerdings nicht sicher, ob ich sie richtig verstehe. Ich interpretiere das Signal als 1010. Das erste Bit (das in dem Bild low ist) müsste doch das Startbit sein? Gruß
Ist denn die Node Address, die durch die Signale am SPI-Interface eingestellt wird, korrekt? CS, SCK und MOSI sollten auf GND, damit eine Node Address von 0 entsteht. fchk
Hi Frank, SDI, SCK und CSN sind hart mit GND verbunden. SDO hängt in der Luft, ist aber glaube ich für die Adressierung in unserem Fall nicht relevant. Über den Pin können mehr als 8 TMC5240 angesteuert werden, was wir aber nicht machen. Ich habe gerade nochmal nachgeschaut und nicht gefunden, ob der irgendwie anzubinden ist, wenn er nicht verwendet wird. Gruß
Ich bin jetzt ein Stück weiter. Zwei Punkte: 1. ich habe in einer Verzweilungsaktion alle Addressen ausprobiert. Das Eval-Board hat auf die Adresse 7 gehört. Im Datenblatt steht, dass die Pins einen Pull-Up besitzten. Wenn ich die Spannung an den Adresspins messe, dann messe ich aber an jedem Pin 0V. Das verstehe ich noch nicht. 2. Das Evalboard hat erst reagiert, nachdem ich die Spannung für die Endstufe angelegt habe. Das war dann wohl mein Fehler, wobei ich es ehrlich gesagt nicht ganz nachvollziehen kann, warum ich die Arbeitsspannung brauche um mit dem Chip zu kommunizieren. Zurück zu meiner ursprünglichen Platine: Auch hier hat ja die Adresse 0 nicht reagiert. Deswegen bin ich nochmal ähnlich vor gegangen. Beide Treiber kann ich jetzt ansprechen, allerdings mit den Adressen 3 und 4. Das ergibt für mich auch noch gar keinen Sinn. Morgen werde ich eine neue Platine löten lassen um zu schauen, ob nicht etwas grundsätzlich schief gelaufen ist. Gruß
Sind das auf dem Hameg-Screenshot logische Pegel oder Spannungspegel? Ich kenne das von früher aus den Modem-Zeiten noch so, dass eine UART auf der TTL-Seite low activ ist. Wenn das hier auch so ist und der Hameg Spannungen anzeigt, kann deine Sequenz nicht funktionieren. Wulf
Hi Wulf, auf dem Bild sind die Spannungspegel der UART-Leitung erkennbar.
1 | A sync nibble precedes each transmission to and from the TMC5240 and is embedded into the first transmitted byte, followed by an addressing byte. Each transmission allows a synchronization of the internal baud rate divider to the UART host clock. The actual baud rate is adapted and variations of the internal clock frequency are compensated. Thus, the baud rate can be freely chosen within the valid range. Each transmitted byte starts with a start bit (logic 0, low level on DIAG1/SW) and ends with a stop bit (logic 1, high level on DIAG1/SW). The bit time is calculated by measuring the time from the beginning of start bit (1 to 0 transition) to the end of the sync frame (1 to 0 transition from bit 2 to bit 3). All data is transmitted byte wise. The 32-bit data words are transmitted with the highest byte first. |
Das ist die Stelle im Datenblatt, welche die Kommunikation beschreibt (Seite 26, 1. Absatz). Wenn ich keinen Denkfehler habe, dann sollte mein Bild auf dem Oszi dazu doch passen, oder? Gruß
Wulf D. schrieb: > Sind das auf dem Hameg-Screenshot logische Pegel oder Spannungspegel? Es sind offensichtlich Spannungspegel eines LVTTL-UART. Marc P. schrieb: > dann sollte mein Bild auf dem Oszi dazu doch passen, oder? Nur zur Sicherheit: wo hast du da gemessen? Am µC oder am TMC?
Im Schaltplan "Schematic.pdf" gibt es auf Seite 3 einen Pinheader JP54. Ich habe Pin 5 gegen Gnd gemessen.
Marc P. schrieb: > Ich habe Pin 5 gegen Gnd gemessen. Nur, weil es da bei Prototypen beim Lötprozess schon mal Probleme geben kann: der Pin 5 von der Stiftleiste ist tatsächlich verbunden mit dem Pin 12 vom TMC? Ich messe sowas immer mit der Tastkopfspitze auf dem Pin. Und schon so manches Mal funktionierte die Schaltung erst dann, wenn ich mit dem Tastkopf den nicht richtig verlöteten Pin auf das Lötpad gedrückt habe...
:
Bearbeitet durch Moderator
IC58 Pin4 Y arbeitet doch voll GEGEN den 1Wire wenn der TMC sendet?
Marc P. schrieb: > Das ist die Stelle im Datenblatt, welche die Kommunikation beschreibt > (Seite 26, 1. Absatz). Wenn ich keinen Denkfehler habe, dann sollte mein > Bild auf dem Oszi dazu doch passen, oder? > > Gruß Ja du hast Recht, das passt. Ist mit der UART schon lange her, die Invertierung war auf der V.28-Seite der RS232 und nicht auf der TTL-Seite. Das Sync und die Adresse müsste zu dem im Schaltplan passen. Es sei denn, dass schon eine 3 im NODEADDR Register steht. Sollte ja eigentlich auf 0 stehen, oder?
Ron-Hardy G. schrieb: > IC58 Pin4 Y arbeitet doch voll GEGEN den 1Wire Wie schon ganz weit oben Marc P. schrieb: >>>> IC55 und IC58 sind nicht mehr bestückt. Davon abgesehen würde man eine solche Buskollision ganz leicht am "dubiosen Pegel" erkennen.
:
Bearbeitet durch Moderator
Marc P. schrieb: > Zurück zu meiner ursprünglichen Platine: Auch hier hat ja die Adresse 0 > nicht reagiert. Deswegen bin ich nochmal ähnlich vor gegangen. Beide > Treiber kann ich jetzt ansprechen, allerdings mit den Adressen 3 und 4. > Das ergibt für mich auch noch gar keinen Sinn. Ich erhalte ja mittlerweile eine Antwort. Aber ich verstehe aktuell nicht, warum ich die Antworten erhalte, wenn ich bei den Adressen 3 und 4 anfrage (hierzu noch ein Hinweis: aktuell sind nur die Treiber mit den Adressen 0 und 1 bestückt). Die Adresspins liegen direkt auf GND bzw. 3V3, also kein Pullup dazwischen. Ich hoffe, dass ich heute Nachmittag ein alternatives Board bekomme und eventuell die aktuellen Treiber fehlerhaft sind (zum Beispiel weil ich sie irgendwie kaputt gemacht habe). Dein Tipp mit dem Tastkopf ist auf jeden Fall gut und ich werde ihn berücksichtigen. Ich prüfe am Nachmittag auch mal, ob die Adressierung eventuell mit deinem Tipp manipulierbar ist. Danke schonmal.
Wulf D. schrieb: > Das Sync und die Adresse müsste zu dem im Schaltplan passen. Es sei > denn, dass schon eine 3 im NODEADDR Register steht. Sollte ja eigentlich > auf 0 stehen, oder? So wie ich es verstehe ja. Ich habe gestern das Adressregister des Chips, der auf die Adresse 3 hört, ausgelesen und der Wert, den ich zurück erhalte, ist 0. :(
Bin auf die Lösung des Rätzels gespannt: werde demnächst einen TMC2209 mit ganz ähnlichem Interface konfigurieren und hatte noch nie mit Schrittmotoren zu tun. Erwarte meine Leiterplatten Anfang Dezember.
Hallo zusammen, ich habe gerade eine neue Platine bekommen. Mit der funktioniert alles. Beide ICs hören auf die richtige Adresse. Vielen Dank für eure Hilfe und tut mir Leid, dass das am Ende jetzt doch so ein komischer Fehler war. Ich habe keine Ahnung wie die Treiber beim ersten Mal kaputt gegangen sind. Viele Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.