Forum: Mikrocontroller und Digitale Elektronik STM32 SWD Schnittstelle für Programmierung und weitere Beschaltung


von technikus (Gast)


Lesenswert?

Hallo,

gerne möchte ich einen STM32G031J6 im ( Pin Gehäuse einsetzen.
Zur Programmierung soll die SWD Schnittstelle (SWCK,SWDIO) dienen, diese 
Schnittstelle möchte ich aber auch in der Applikation benutzen.
Am SWCLK ist ein Pin eines Drehencoders angeschlossen (TIM2). Der Pin 
wird gegen Masse geschaltet.
Jetzt, je nach Encoderstellung, ergibt sich ein unplausibles 
Startverhalten.
Wie geht man damit um, wenn die SWD Schnittstelle genutzt werden soll?

Danke und Gruß

von Guest (Gast)


Lesenswert?

Was heißt den Unplausibel für dich? Das ist immer eine Klasse Aussage 
mit der jeder was anfangen kann. Ich zum Beispiel finde es Unplausibel 
das Leute hier Fragen stellen ohne den Fehler zu erläutern.

technikus schrieb:
> Wie geht man damit um, wenn die SWD Schnittstelle genutzt werden soll?

Ich für meinen Teil hasse es mit doppelter Belegung zu arbeiten, aber 
das ist wohl Geschmackssache. Wo ist das Problem ein Package zu benutzen 
das ein paar mehr Pins hat? Wenn es um den Platz geht, ein UFQFPN28 hat 
nahezu die gleichen Abmaße wie ein SO8 und du hast massig Pins. Wenn der 
Platz eine mehr oder weniger große Rolle spielt, halt ein LQFP das ist 
nicht schwerer zu löten als ein SO.

Ich weiß ja nicht was dein µC so macht aber generell würde ich sagen, 
dass es keine gute Idee ist Pins doppelt zu verwenden die beim 
Systemstart eine mehr oder weniger wichtige Rolle spielen. Erst recht 
nicht wenn ihr Zustand irgendwas sein kann.
Man könnte den Encoder Hochimpedant trennen solange der Controller nicht 
gebootet ist, aber das bedeutet mehr schaltungsaufwand und dann kannst 
du auch ein größeres Package verwenden.

von Erklehr Behr (Gast)


Lesenswert?

Guest schrieb:
> Ich weiß ja nicht was dein µC so macht aber generell würde ich sagen,
> dass es keine gute Idee ist Pins doppelt zu verwenden die beim
> Systemstart eine mehr oder weniger wichtige Rolle spielen.

Naja, manche Leute wollen eben mit Gewalt die Methode "von
hinten durch die Brust ins Auge" durchziehen.

Die beste Ausrede ist:

Das Design steht schon und ist auf keinen Fall veränderbar.

Oder:

Das scheitert am Preis denn das Projekt umfasst eine Auflage
von mindestens 100.000 Stück.

von Gerd E. (robberknight)


Lesenswert?

technikus schrieb:
> Hallo,
>
> gerne möchte ich einen STM32G031J6 im ( Pin Gehäuse einsetzen.

SOIC-8?

Ich habe noch nicht verstanden warum ST das überhaupt ins Programm mit 
aufgenommen hat. 8 Pins schränken die Nutzungsmöglichkeiten extrem ein 
und klein ist es wahrlich auch nicht.

Bei den STM32L011ern hatten sie auch die ...F.U-Gehäuse im Angebot, das 
ist QFN20 in 3x3mm. Sehr schön klein und dennoch 20 Pins. Keine Ahnung 
warum die das nicht auch bei der neuen G-Serie anbieten.

> Zur Programmierung soll die SWD Schnittstelle (SWCK,SWDIO) dienen, diese
> Schnittstelle möchte ich aber auch in der Applikation benutzen.

Und schon siehst Du einen der Haupt-Nachteile dieser Bauform: Du musst 
einen großen Eiertanz machen um mit den wenigen Pins hinzukommen.

Du kannst die SWD-Funktionalität in Software über die Alternate 
Functions abschalten. Dann kannst Du den µC aber nicht mehr per SWD 
ansprechen sobald er einmal läuft. Du kannst ein laufendes Programm auch 
nicht mehr debuggen. Du kannst nur noch unter Hard-Reset den Debugger 
verbinden. Den Hard-Reset musst Du natürlich unbedingt rausführen und 
darfst ihn nicht umbelegen.

Meine Empfehlung: Tu Dir den Streß nicht an und geh auf die F-Bauform 
hoch (TSSOP20). Dann hast Du den Ärger nicht. Und wirklich viel größer 
als SOIC-8 ist es auch nicht.

von Guest (Gast)


Lesenswert?

Gerd E. schrieb:
> Meine Empfehlung: Tu Dir den Streß nicht an und geh auf die F-Bauform
> hoch (TSSOP20). Dann hast Du den Ärger nicht. Und wirklich viel größer
> als SOIC-8 ist es auch nicht.

Da er ja Unplausibles Verhalten hat vermute ich, dass die Schaltung 
schon gefertigt und damit das Kind schon in den Brunnen gefallen ist.

Gerd E. schrieb:
> Ich habe noch nicht verstanden warum ST das überhaupt ins Programm mit
> aufgenommen hat. 8 Pins schränken die Nutzungsmöglichkeiten extrem ein
> und klein ist es wahrlich auch nicht.

Wenn du 2 Analog Signale oder PWM auf I2C umsetzen willst und das ganze 
super klein sein soll kann das praktisch sein, aber für alles andere 
macht es einfach keinen Sinn.

Gerd E. schrieb:
> Du kannst ein laufendes Programm auch
> nicht mehr debuggen.

Wenn man so advanced ist und Pins doppelt benutzt muss man nicht mehr 
debuggen ;)

von Gerd E. (robberknight)


Lesenswert?

Guest schrieb:
>> Ich habe noch nicht verstanden warum ST das überhaupt ins Programm mit
>> aufgenommen hat. 8 Pins schränken die Nutzungsmöglichkeiten extrem ein
>> und klein ist es wahrlich auch nicht.
>
> Wenn du 2 Analog Signale oder PWM auf I2C umsetzen willst und das ganze
> super klein sein soll kann das praktisch sein, aber für alles andere
> macht es einfach keinen Sinn.

Nun, SOIC-8 ist aber eben genau nicht "super klein", sondern 4,9x6mm 
groß.

Ein QFN28 ist mit 4x4mm deutlich kleiner und hat mit 28 Pins eine ganz
andere Größenordnung von Anschlussmöglichkeiten. Und wenn man QFN wegen 
der fehlenden optischen Kontrolle der Lötstellen nicht mag, kann man 
TSSOP20 nehmen, mit 6,5x6,4mm nur unwesentlich größer, aber dennoch 
ausreichend Pins für einfache Aufgaben.

Und, wie gesagt, verstehe ich nicht warum ST nicht die meiner Meinung 
nach sinnvollen Gehäuse TSSOP14 und QFN20 vom STM32L011 nicht auch beim 
G0 anbietet und statt dessen das nur sehr beschränkt nutzbare SOIC-8 
bringt.

: Bearbeitet durch User
von technikus (Gast)


Lesenswert?

Danke für eure Antworten, auch wen sie mir nur beschränkt weiter helfen.
Ja, es ist ein SOIC8 und nein, kein 100.000er Auflage Projekt, sondern 
ein kleines Hobbyprojekt.
Eben deswegen ist die Bauform für mich sehr interessant.

Mit „unplausibel“ meinte ich, dass:
- keine Funktion mehr gegeben ist
- die Drehencoderauswertung nicht sauber läuft.

Ursprünglich hatte ich auf dem Discovery Board getestet, dort 
funktionierte der Encoder.

Ich muss die Software nicht deduggen können.
Gibt es also keinen gangbaren (Software) Weg, die SWD Pins z.B. nur 
x-Sekunden nach Startup zum Programmieren nutzen zu können und danach 
anderweitig zu verwenden?
Dann könnte ich, ohne Hardware Reset, in der Schaltung flashen.
Das würde schon ausreichen.

von Florian (Gast)


Lesenswert?

> Gibt es also keinen gangbaren (Software) Weg, die SWD Pins z.B. nur
> x-Sekunden nach Startup zum Programmieren nutzen zu können und danach
> anderweitig zu verwenden?

Doch klar geht das, warte mit dem Deaktivieren des SWD-Interface und 
umkonfigurieren in GPIO einfach bis der SysTick Zähler bei 2000 
Millisekunden angekommen ist, das kann man alles über Register 
konfigurieren.

Ist der Drehgeber hochohmig oder niederohmig mit dem GPIO verbunden? 
Falls niederohmig wird das problematisch, dann kann sich der Programmer 
nicht gegen den Encoder durchsetzen.

BTW, in meinem Projekt nutze ich auch einen MCU in TSSOP20, lässt sich 
sehr einfach per hand löten, kann ich nur empfehlen.

von technikus (Gast)


Lesenswert?

Gute Idee!
Der Drehgeber schaltet gegen Masse, alles noch im Steckbrettaufbau, 
könnte ich also ändern.

von technikus (Gast)


Lesenswert?

D.h. den Encoder nicht über Pull Up Widerstände gegen Masse schalten, 
sondern Pull Down und dann gegen plus schalten?

von Florian (Gast)


Lesenswert?

Ich kenne dein Drehgeber nicht, aberwas ich meine ist:

[GPIO-PULLUP]<->[PROG-PIN]<->[R2K]<->[DREHGEBER]<->[GND]

oder

[GPIO-PULLDN]<->[PROG-PIN]<->[R2K]<->[DREHGEBER]<->[VCC]

2kOhm sollte ausreichen, musst ausprobieren.

von technikus (Gast)


Lesenswert?

Danke!
Ich werde das Hardware Design ändern und auf das Timer Encoder Interface 
verzichten und den Encoderstatus "zu Fuß" auslesen.
Stattdessen lege ich Taster + LED auf das SWD Interface und 
initialisiere die GPIO verzögert nach Power On.


Gruß
Stefan

von Guest (Gast)


Lesenswert?

Da sag ich jetzt mal nichts dazu :D

Ich hoffe dein Encoder Signal ist nicht kritisch....

von Stefan F. (Gast)


Lesenswert?

technikus schrieb:
> Wie geht man damit um, wenn die SWD Schnittstelle genutzt werden soll?

Einfach machen, im einfachsten Fall mit Widerständen (wie von Florian 
beschrieben), damit kein Kurzschluss entstehen kann.

von technikus (Gast)


Lesenswert?

Guest schrieb:
> Da sag ich jetzt mal nichts dazu :D
>
> Ich hoffe dein Encoder Signal ist nicht kritisch....

Wieso???
Ist ein Hand Drehencoder.
In einer Timer ISR geht so etwas doch hervorragend gut

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.