Forum: Mikrocontroller und Digitale Elektronik STM32CubeIDE | Keine Verbindung zu erstem Custom PCB - No device found on target


von Robin U. (ulro)



Lesenswert?

Hey liebe Foren-Mitglieder,

ich hoffe die Wall of Text schreckt euch nicht ab :-(.

Dieses Forum hier hat mich inspiriert, mich dem Thema Mikroelektronik zu 
widmen und an der Entwicklung eines eigenen PCBs zu versuchen.

Es handelt sich um das PCB in den Anhängen. 45x40mm groß, bestückt mit 2 
CR2032 Knopfzellen für die Stromversorgung des STM32L051C8T6TR an Bord.
Aufgabe des Boards ist den analogen Magnetsensor auszulesen, falls kein 
Magnetfeld erkannt ist, dann den Beschleunigungssensor für ca. eine 
Sekunde zu beobachten und bei Erfüllung gewisser Bedingungen mittels des 
Buzzers und PWM zu piepsen. Zwischen zwei dieser Durchläufe liegen 
Standby-Mode-Zeiten von rund 15 Sekunden, sodass die Batterien einige 
Jahre halten dürften.

Die 5 bestellten PCBs sind von JLCPCB gefertigt und assembled worden, 
inkl. flying-probe-test, sodass diese in Ordnung sein sollten.

Mein Problem:
Der µC wird nicht von meinem China-Clon ST-Link-v2 (Amazon 5er-Set von 
AZDelivery - aktualisiert via ST-Link-Upgrade auf Firmware V2J37S7) 
erkannt - stattdessen bietet mir STM32CubeIDE den error log:

STMicroelectronics ST-LINK GDB server. Version 5.8.0
Copyright (c) 2020, STMicroelectronics. All rights reserved.

Starting server with the following options:
        Persistent Mode            : Disabled
        Logging Level              : 1
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Disabled
        SWD Debug                  : Enabled

Target no device found

Error in initializing ST-LINK device.
Reason: No device found on target.

Das Kompilieren davor läuft ohne Probleme.

Bevor ich die Community kontaktiere, habe ich natürlich schon eigene 
Recherchen unternommen:
- Ich habe mehrere der ST-Links getestet
- Ich habe diverse Einstellungen im STMCubeProgrammer versucht, um einen 
Full Chip Erase zu veranlassen - erfolglos - z.B. das Reset behaviour 
geändert, die SWD-Geschwindigkeit reduziert, etc.

Konkrete Fragen an die Community:
- Meine Verkabelung zwischen PCB und STLink ist ca. 18cm lang - ist das 
vlt. zu lang?
- Der µC gehört ja zur L0-Serie - gibt es möglicherweise einen Low Power 
Mode, der SWD deaktiviert? Falls ja, wie kann dieser deaktiviert werden?
- DRC und Design Guideline Checks in EasyEDA hat das PCB bestanden - 
gibt es vielleicht dennoch einen Konstruktionsfehler, der euch bei einer 
schnellen Durchsicht auffällt?
- Im Internet habe ich z.B. einen "Boot0 auf HIGH ziehen"-Trick gefunden 
- wie ist dafür die richtige Reihenfolge, und welche Einstellungen 
braucht es dafür im STMProgrammer?

Ich danke euch schon jetzt für die Zeit, die Ihr in diesen Beitrag 
investiert - ich komme wirklich nicht weiter...

Herzlichen Dank und viele Grüße
Robin Ulrich

von Kevin M. (arduinolover)


Lesenswert?

Was soll der 10K Widerstand an SWDIO, das könnte eine potentielle 
Problemstelle sein. Ansonsten war es äußerst unglücklich den Piezo 
direkt mit einem µC Pin anzusteuern.

PS: ein externer Pullup mit Filterkondensator am NRST ist auch kein 
Luxus.

: Bearbeitet durch User
von beo bachta (Gast)


Lesenswert?

Kevin M. schrieb:
> Was soll der 10K Widerstand an SWDIO

10K geht sicher nicht, das reicht für null Datenrate.
Ja, was soll der Widerstand dort?

von Robin U. (ulro)


Lesenswert?

Autsch - diese Erkenntnis tut ordentlich weh! :-(

In anderen Designs hatte ich da einen 22 Ohm Schutz-Widerstand gesehen - 
da ist mir in der Schematik wohl ein krasser Fehler unterlaufen...

So schnell setzt man 45€ in den Sand, oder fällt euch bei so nem kleinen 
Board spontan ein Weg ein, um ihn rauszuoperieren oder zu überbrücken?

von Kevin M. (arduinolover)


Lesenswert?

Sofern du einen Lötkolben hast ist das keine Minute Arbeit. Wenn du 
keinen hast kauf dir einen den wirst du noch öfter brauchen.

Robin U. schrieb:
> In anderen Designs hatte ich da einen 22 Ohm Schutz-Widerstand gesehen

Wo ist dann der Sinn an SWDIO einen zu machen und an die anderen nicht?

Und wie gesagt bete mal das dein Piezo deinen Controller nicht grillt.

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Robin U. schrieb:

> So schnell setzt man 45€ in den Sand, oder fällt euch bei so nem kleinen
> Board spontan ein Weg ein, um ihn rauszuoperieren oder zu überbrücken?

Häh? Wo soll da das Problem sein? R5 liegt doch förmlich auf dem 
Präsentierteller. Da ein kleines Stück Draht drüberlöten schafft man 
fast mit verbundenen Augen.

von Kevin M. (arduinolover)


Lesenswert?

Im übrigen bringen anständige Schutzdioden gegen ESD mehr als 22 Ohm und 
um gegen permanente Überspannung zu schützen ist das eh zu wenig und 
auch nicht wirklich sinnvoll.

von beo bachta (Gast)


Lesenswert?

Kevin M. schrieb:
> Wo ist dann der Sinn an SWDIO einen zu machen und an die anderen nicht?

Vermutlich ist SWDIO ein Open-Drain-Treiber auf beiden Seiten.
Wenn man das nicht weiss und "Angst" hat dass es da einen
Buskonflikt gibt würde man da einen "Angstwiderstand" vorsehen.
Ansonsten sind die 22 Ohm vielleicht ganz gut gegen eventuelles
Leitungsklingeln.

von Robin U. (ulro)


Lesenswert?

@arduinolover

Den Tipp zu einem Filterkondensator an NRST habe ich erst nach dem 
bestellen gelesen - das leuchtet mir ein :-).

Bezüglich des externen Pull-ups allerdings:
https://datasheet.lcsc.com/lcsc/2106040205_STMicroelectronics-STM32L051C8T6TR_C2802165.pdf
Bezüglich des Datenblattes (S. 83 - Kapitel 6.3.14) gibt es einen 
internen Pull-up? In welcher Größe würdest du dann den zusätzlichen 
externen Widerstand wählen? Oder braucht es diesen nicht unbedingt?

Und wie würdest du den Piezo ansteuern?
Auch da ist mir definitiv aus Leichtfertigkeit heraus ein Fehler 
unterlaufen. Laut Datenblatt des Piezos 
(https://datasheet.lcsc.com/lcsc/1912112237_FUET-FMB12A03-3V_C417388.pdf 
- Seite 2) liegt die maximale Stromaufnahme bei 30mA, während der STM32 
hingegen siehe S. 49 des Datenblattes unter "Output current sunk by any 
I/O and control pin except FTf pins" nur 16mA verträgt.

Besteht hier für ein künftiges Design die Möglichkeit drei Pins mittels 
PWM zusammenzuziehen, um die Leistungsaufnahme des Piezos zu 
ermöglichen? Oder gibt es dann Probleme die drei PWM-Signale simultan 
laufen zu lassen?

Danke für jede fachliche Einschätzung, wirklich!

von Uwe Bonnes (Gast)


Lesenswert?

beo bachta schrieb:
> Vermutlich ist SWDIO ein Open-Drain-Treiber auf beiden Seiten.
> Wenn man das nicht weiss und "Angst" hat dass es da einen
> Buskonflikt gibt würde man da einen "Angstwiderstand" vorsehen.
> Ansonsten sind die 22 Ohm vielleicht ganz gut gegen eventuelles
> Leitungsklingeln.

Warum den Vermutungen posten? SWD ist Input/Push/Pull, das Umschalten 
erfolgt definiert, laengere Contention wird man nur schwer 
zusammenbekommen.

Und an NRST an STM32 empfiehlt STM nur einen 100 n Kondensator nach 
Masse, keinen PullUp. Den Kondensator sehe ich im Design nicht!

von Robin U. (ulro)


Lesenswert?

Den Überbrückungsdraht werde ich später mal versuchen - mir geht es 
lediglich um die räumliche Nähe zum µC, nicht dass ich da etwas "locker 
löte". Einen Lötkolben habe ich jedenfalls.

Woher der 22 Ohm Widerstand kommt, weiß ich nicht.
Der Summe an Beiträgen entnehme ich jedenfalls, dass es diesen nicht 
braucht, richtig?
@arduinolover Sind denn stattdessen Schutzdioden standardmäßig Teil 
deiner Designs?

von Robin U. (ulro)


Lesenswert?

Uwe Bonnes schrieb:
> Und an NRST an STM32 empfiehlt STM nur einen 100 n Kondensator nach
> Masse, keinen PullUp. Den Kondensator sehe ich im Design nicht!

Stimmt, Figure 27 auf S. 84 unter 
https://datasheet.lcsc.com/lcsc/2106040205_STMicroelectronics-STM32L051C8T6TR_C2802165.pdf 
zeigt es - das habe ich auch gekonnt überlesen :-(.

von Hans (Gast)


Lesenswert?

Hallo,

R5 ablöten und durch einen 0 OHM Widerstand ersetzen. Oder Pins mit 
Lötzinn überbrücken. Dann müsste es gehen.

Ciao

von Dirk (Gast)


Lesenswert?

Ich vermute die 22Ohm kommen von hier:

https://usermanual.wiki/Document/usermanualdiscoveryf4.487732588/html

Ich hab auf meiner Custom PCB 22Ohm Widerstände gelegt, weil ein 
Pinheader als Übergabepunkt zum ST-LINKV2 genutzt wird und somit die 
Pins etwas geschützt sind. Aufpassen musste ich nur auf die BOOT Pins, 
danach konnte ich ohne Probleme meine PCB Debuggen und flashen.

von Kevin M. (arduinolover)


Lesenswert?

Robin U. schrieb:
> Bezüglich des Datenblattes (S. 83 - Kapitel 6.3.14) gibt es einen
> internen Pull-up? In welcher Größe würdest du dann den zusätzlichen
> externen Widerstand wählen? Oder braucht es diesen nicht unbedingt?

Den Konsnesator sollte man machen, der Pullup ist nicht zwingend 
allerdings ist der im STM recht hochohmig. Ich hatte schonmal Probleme 
mit einer etwas längeren NRST Leitung daher mache ich immer noch 10K 
dabei. Das kostet kaum Platz und noch weniger Geld und ist robust, mag 
sein das es Menschen gibt die das anders sehen ich habe gerne 
zuverlässige Hardware.

Robin U. schrieb:
> Und wie würdest du den Piezo ansteuern?

Ich würde mal sagen das einfachste wäre ein N-Kanal Mosfet.
Da kommt jetzt gleich noch jemand und will dir einen Bipolartransistor 
andrehen, ein FET ist imho aber an der Stelle die sinnvollere Wahl, weil 
man sich keine Gedanken um Basiswiderstände und dergleichen machen muss 
und die Anssteuerung nicht permanent Strom braucht (und ja ich weiß es 
ist nicht viel Strom den der Bipolartransistor braucht). Ein Pulldown 
von 10k am Gate des FETs ist dennoch sinnvoll, wenn du kein 
undefiniertes Verhalten haben möchtest wenn der µC im Reset ist.

von Robin U. (ulro)


Lesenswert?

Danke für die Einschätzung :-).

Sind denn die im Originalpost beschriebenen ca. 18cm Kabellänge der 
SWD-Breadboard-Kabel grundsätzlich schon eher als lang anzusehen?

Kevin M. schrieb:
> und die Anssteuerung nicht permanent Strom braucht

Die Ansteuerung an sich braucht zwar keinen Strom, aber gibt es bei 
einem Mosfet nicht Kriechströme?
Der MOSFET mit diesem Datenblatt 
(https://datasheet.lcsc.com/lcsc/1810151612_Changjiang-Electronics-Tech-CJ-2N7002_C8545.pdf) 
hier ist bei JLCPCB ein Basic Part, gibt jedoch für eine 
Versorgungsspannung von 60V als "Zero Gate Voltage Drain Current" den 
Wert 80nA an. Für meine Versorgungsspannung ist das Modell aber nicht 
ausgelegt - die Gate-Threshold Voltage (also die Spannung ab der das 
Gate die Verbindung zwischen Source und Drain schließt) liegt bei min. 1 
und max. 2,5V. Die hat meine CR2032 ab der Mitte der Kapazität jedoch 
nicht mehr.

Und dieser (auch ein Basic Part) MOSFET hat zwar eine 
Gate-Threshold-Voltage von min. 0,65V und max. 1,45V, aber dann gleich 
wieder eine Zero Gate Voltage Drain Current von 1µA, bei 55°C Temp. 
sogar 5µA.
[EDIT: Datenblatt-Link vergessen]
https://datasheet.lcsc.com/szlcsc/Alpha-Omega-Semicon-AOS-AO3400A_C20917.pdf

Daher explizit nochmal die Frage:
Sieht jemand die Möglichkeit, mehrere PWMs zusammenzulegen und damit den 
Piezo anzusteuern? Insgesamt verträgt der µC ja rund 100mA 
Leistungsaufnahme, und große andere Verbraucher gibt es ja schließlich 
nicht. Die beiden Sensoren liegen zusammen im einstelligen mA-Bereich.

: Bearbeitet durch User
von Kevin M. (arduinolover)


Lesenswert?

Robin U. schrieb:
> Die Ansteuerung an sich braucht zwar keinen Strom, aber gibt es bei
> einem Mosfet nicht Kriechströme?

die gibt es bei jedem Bauteil, denkst du der STM hat keine?
Du brauchst halt ein logic Level FET und musst etwas auf die 
Kriechströme achten. Ggf. muss man halt über die standard Parts von JLC 
hinaus gehen, so ist das eben wenn man was spezielles braucht.

Robin U. schrieb:
> Daher explizit nochmal die Frage:
> Sieht jemand die Möglichkeit, mehrere PWMs zusammenzulegen und damit den
> Piezo anzusteuern? Insgesamt verträgt der µC ja rund 100mA
> Leistungsaufnahme, und große andere Verbraucher gibt es ja schließlich
> nicht. Die beiden Sensoren liegen zusammen im einstelligen mA-Bereich.

Was würde das bringen? Die Pulsbelastung der Pins bleibt doch die 
gleiche,
der Piezo ist keine Indultivität. Du kannst mehrere Pins in open drain 
schalten und parallel hängen, aber auch da ist die Stromaufteilung 
glückssache.

von Stefan F. (Gast)


Lesenswert?

Robin U. schrieb:
> Sind denn die im Originalpost beschriebenen ca. 18cm Kabellänge der
> SWD-Breadboard-Kabel grundsätzlich schon eher als lang anzusehen?

Ja, denn die Kommunikation findet mit mehreren MHz statt. Ich nutze 20cm 
Dupont Kabel. Mit 40cm hatte ich mal Probleme.

von Robin U. (ulro)


Lesenswert?

Ich hatte den Thread in der Zwischenzeit vergessen, wollte aber für 
eventuell unglücklich suchende noch das Problem und die Lösung 
hinterlassen:

Die Kommunikation mittels der 20cm Jumper-Kabel war nicht das Problem - 
tatsächlich war der ST-Link China-Klon von AZ-Delivery das Problem. Ich 
hatte von einem weiteren Projekt ein STM32-Nucleo-Board rumliegen, habe 
die beiden Jumper an der Stelle ST-Link/CN2 entfernt und dann mein 
Custom-PCB mit der Lotbrücke über den falsch gesetzten Widerstand direkt 
an CN4 angeschlossen.

Wer billig kauft, scheint es wohl nie zu lernen...

Mit dem ST-Link auf dem Nucleo läuft's aber problemlos :-)

Danke nochmal für die hilfreichen Infos in diesem Thread.
Habe die neue Version ohne den sinnlos-Widerstand, mit NRST-Kondensator 
und MOSFET für den Buzzer geplant - bestellen fällt dank Chip-Krise 
allerdings erstmal flach...

PS: Bis jetzt läuft der Buzzer auch direkt auf dem GPIO-Pin ohne 
Probleme und ohne den STM32 zu zerlegen. Reine Buzzer-Zeit waren schon 
gute 5 Minuten, natürlich Intervall-weise :-).

von Stefan F. (Gast)


Lesenswert?

Robin U. schrieb:
> tatsächlich war der ST-Link China-Klon von AZ-Delivery das Problem

Traurig. Die Produkte sollten wenigstens funktionieren.

von A. B. (Gast)


Lesenswert?

Robin U. schrieb:
> Die Kommunikation mittels der 20cm Jumper-Kabel war nicht das Problem -
> tatsächlich war der ST-Link China-Klon von AZ-Delivery das Problem. Ich

Vielleicht das:
Beitrag "STLink-Klone nächste Generation Verschlimmbesserung"

von Robin U. (ulro)


Lesenswert?

A. B. schrieb:
> Vielleicht das:
> Beitrag "STLink-Klone nächste Generation Verschlimmbesserung"

Danke für den Hinweis - das schaue ich mir nochmal an, bevor ich Sie 
unter lautem Fluchen im Wertstoffhof in die Tonne werfe...

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.