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ß
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.
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.
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.
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 ;)
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
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.
> 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.
Gute Idee! Der Drehgeber schaltet gegen Masse, alles noch im Steckbrettaufbau, könnte ich also ändern.
D.h. den Encoder nicht über Pull Up Widerstände gegen Masse schalten, sondern Pull Down und dann gegen plus schalten?
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.
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
Da sag ich jetzt mal nichts dazu :D Ich hoffe dein Encoder Signal ist nicht kritisch....
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.