Forum: Mikrocontroller und Digitale Elektronik SWD so in Ordnung?


von ARM (Gast)


Angehängte Dateien:

Lesenswert?

Ich mache zum ersten mal ein SWD Interface für einen ARM (STM32F405).
Deswegen wollte ich nachfragen, ob das so in Ordnung ist?
Die Labels würden so direkt zum µC gehen, VDD = 3V3
Bei der Beschaltung hätte ich mich an den Angaben von Keil gerichtet
http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

ARM schrieb im Beitrag #4538144:
> Deswegen wollte ich nachfragen, ob das so in Ordnung ist?

Ja, passt.  Habe zwar hier nur einen SAM4E als Vergleich, aber da
haben wir es genauso verdrahtet wie bei dir, und das Board hat so
funktioniert.

[TRACE]SWO ist übrigens optional.

von ARM (Gast)


Lesenswert?

Jörg W. schrieb:
> [TRACE]SWO ist übrigens optional.

Weiß ich. Aber wenn ich schon einen 10-poligen Wannenstecker spendiere, 
dann führ ich das auch noch raus ;)

von Gerd E. (robberknight)


Lesenswert?

Wenn Du nicht unbedingt an die offizielle Belegung von ARM gebunden 
bist, finde ich es oft sinnvoll auch noch eine UART mit rauszuführen. 
Das ist fürs Debugging oft einfacher umzusetzen als das mit SWO zu 
machen (und geht auch beim Cortex-M0 der kein SWO hat).

Ich hab mir dafür ne eigene Belegung mit 8 Pins ausgedacht und führe das 
auf einen 8-Pin Micromatch-Stecker (SMD-Typ). Später in der 
Serienproduktion wird dann der Micromatch einfach weggelassen und die 
Pads des Micromatch mit Pogopins kontaktiert. Dadurch muss ich zwischen 
Prototyping und Serie das Layout nicht mehr anpassen und komme dennoch 
ohne unnötige THT-Löcher in der Nähe des µC aus die mir das Routing 
erschweren würden.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

ARM schrieb im Beitrag #4538168:
> Weiß ich. Aber wenn ich schon einen 10-poligen Wannenstecker spendiere,
> dann führ ich das auch noch raus ;)

Nun ja, wenn du so ein Teil partout verwenden willst.
Ich neige eher dazu, einen deutlich kleineren Verbinder zu nehmen. Wenn 
du keine kilometerlangen Drähte benutzt, dann reicht ein einziger 
Massekontakt völlig aus. Mit nem 5 poligen Steck im 1.25er Raster kommst 
du zurecht.

W.S.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

W.S. schrieb:
> Ich neige eher dazu, einen deutlich kleineren Verbinder zu nehmen.

Naja, die bei Cortex-M genormten 2x5 mit 1,27 mm Raster sind ja nun
wirklich schon eher popelig, und sie werden halt von den Tools
direkt unterstützt – hätte ich jetzt gedacht, aber STlink scheint da
noch nicht angekommen zu sein.  Da hat Atmel überholt …  Bei Segger
kostet halt der Adapter dann nur nochmal gut Geld.

von Nils P. (torus)


Lesenswert?

Nur der Ordnung halber, falls irgend jemand das für ein nicht STM32 
Controller kopiert:

Der STM32 hat interne Pullup/Pulldown Widerstände an den SWD Pins, damit 
die SWD Leitungen ein definiertes Potential haben auch wenn kein 
Debugger angeschlossen ist.

Dieses Feature haben nicht alle Cortex-M3 Chips!

Bei einem Port auf einen anderen Chip unbedingt das Datenblatt 
konsultieren und gegebenenfalls die Pullup/Pulldown Widerstände 
einsetzen.

von Datenblattleser (Gast)


Lesenswert?

Nils P. schrieb:
> Bei einem Port auf einen anderen Chip unbedingt das Datenblatt
> konsultieren

Kannst du auch die Sprechzeiten der diversen Datenblätter für
eine möglicherweise notwendige Konsultation angeben?

von ARM (Gast)


Lesenswert?

Gerd E. schrieb:
> Wenn Du nicht unbedingt an die offizielle Belegung von ARM
> gebunden
> bist, finde ich es oft sinnvoll auch noch eine UART mit rauszuführen.
> Das ist fürs Debugging oft einfacher umzusetzen als das mit SWO zu
> machen (und geht auch beim Cortex-M0 der kein SWO hat).
>
> Ich hab mir dafür ne eigene Belegung mit 8 Pins ausgedacht und führe das
> auf einen 8-Pin Micromatch-Stecker (SMD-Typ). Später in der
> Serienproduktion wird dann der Micromatch einfach weggelassen und die
> Pads des Micromatch mit Pogopins kontaktiert. Dadurch muss ich zwischen
> Prototyping und Serie das Layout nicht mehr anpassen und komme dennoch
> ohne unnötige THT-Löcher in der Nähe des µC aus die mir das Routing
> erschweren würden.

Ich hab das von dir schon irgendwo gelesen, finde den Link aber jetzt 
nicht mehr. Das ist nur ein kleines Studentenprojekt mit 2 Platinenen, 
die produktiv eingesetzt werden, und nochmal 2-3 die herumliegen um 
genutzt zu werden. Ich muss nur schauen, dass ich vom Platz hinkomme.
Aber genau deswegen dachte ich, es sei sinnvoller, irgendwie was 
normiertes zu nutzen. Für den Lauterbach und den J-Link brauch ich so 
und so einen Adapter. Die einzige andere Anschlussbelegung ist meiner 
Meinung nach die von frei verfügbaren ST-Links (10-polig) für wenig 
Geld.
Aber Danke nochmal für den Hinweis. Vielleicht kannst den Artikel ja 
nochmal verlinken ;)

von Gerd E. (robberknight)


Angehängte Dateien:

Lesenswert?

ARM schrieb im Beitrag #4538875:
> Ich muss nur schauen, dass ich vom Platz hinkomme.
> Aber genau deswegen dachte ich, es sei sinnvoller, irgendwie was
> normiertes zu nutzen.

Ich würde sagen genau das Gegenteil. Desto mehr Platz Du zur Verfügung 
hast, desto einfacher passt Da ein Standardstecker rein. Wenn Du kaum 
Platz hast, muss eine Speziallösung her die gerade so reinpasst.

Wenn es wirklich eng wird, kannst Du natürlich auch auf Signale 
verzichten. Das absolute Minimum ist nur SWCLK und SWDIO. Sinnvoll ist 
auch noch ein GND und das Hardware-Reset mitzuführen. Alles andere macht 
die Nutzung nur bequemer.

> Für den Lauterbach und den J-Link brauch ich so
> und so einen Adapter. Die einzige andere Anschlussbelegung ist meiner
> Meinung nach die von frei verfügbaren ST-Links (10-polig) für wenig
> Geld.

Solange sich das auf 2,54-Raster abspielt, ist so ein Adapter doch mit 
etwas Lochraster in ner Viertelstunde gemacht. Wenn man nicht gerade bei 
jedem Projekt ne andere Belegung verwendet sehe ich da auch keinen 
unnötigen Aufwand drin. So viele verschiedene Programmer wirst Du ja 
auch nicht verwenden wollen.

> Aber Danke nochmal für den Hinweis. Vielleicht kannst den Artikel ja
> nochmal verlinken ;)

Keine Ahnung ob ich das irgendwo schon mal im Detail gezeigt habe. Anbei 
mal nen schneller Screenshot aus einem Layout von mir. An Position 6 
kommt SWO, das hier ist aber von nem Projekt mit Cortex-M0 und da gibts 
den nicht, daher unbelegt.

Als Alternative gibt es noch diese Belegung hier von mmvisual hier aus 
dem Forum:
https://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual_.28ARM.2C_Cortex.2C_Seriell_kombiniert.29
Den kann man auch für klassisches JTAG und nicht nur für SWD verwenden. 
Aber dafür halt 2 Pins mehr.

Irgendwann geht halt doch der Platz auf der Platine aus, und da fand ich 
meine Lösung mit dem 8-Pin Micromatch bisher eigentlich nen guten 
Kompromiss. Kleiner wird es nur mit Steckern im 1,27er-Raster ohne 
Wannen, dann brauchst Du wieder extra Verpolschutz und bist auch wieder 
bei 10 Pins. Und um SMD-Pads im 1,27er Raster hinterher in der 
Produktion mit Pogopins zuverlässig zu kontaktieren, musst Du einen 
aufwändigeren Halter bauen als ich ihn verwende.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.