Forum: Mikrocontroller und Digitale Elektronik Neuer uC wie initialisiert?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich habe einen neuen STM32 auf ein Board gelötet und festgestellt, dass 
einige GPIO's auf HIGH waren, was natürlich bei einigen Schaltungen 
alles ruinieren kann, wenn die GPIO's als Output definiert sind und auf 
HIGH gehen. Es müssten doch eigentlich standardmäßig alle GPIO's als 
Input definiert sein, oder? Habt ihr auch schon ein solches Verhalten 
beobachtet?

Grüsse Bert

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Bert S. schrieb:
> Es müssten doch eigentlich standardmäßig alle GPIO's als
> Input definiert sein, oder?

Genau: Input + weak Pullup. Dann misst man immer "high" wenn nix dran 
hängt. Kann man mit einem 10kOhm Widerstand als Pulldown sicher 
überprüfen.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Einige GPIO Pins sind Standardmäßig für die SWJ Schnittstelle 
reserviert.
http://stefanfrings.de/stm32/index.html#swj

von Stefan S. (chiefeinherjar)


Bewertung
0 lesenswert
nicht lesenswert
Das steht doch alles im Datenblatt. Da stehen auch die Default-Werte für 
alle GPIO-Register. Die meisten Pins sind standardmäßig als Input, 
Pullup konfiguriert, es gibt aber je nach Controller auch Ausnahmen für 
einzelne Pins bzw Ports.

von Curby23523 N. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Aber als Output sollte kein Pin konfiguriert sein. Wenn ich mich irre, 
zeig mal ein Beispiel :).

von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan S. schrieb:
> Die meisten Pins sind standardmäßig als Input,
> Pullup konfiguriert,

Wie kommst du darauf? Bei den F0, F1, F3, F4 steht im Reference Manual 
"Input Floating".

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> Aber als Output sollte kein Pin konfiguriert sein.
> Wenn ich mich irre, zeig mal ein Beispiel

Der TDO Pin vom JTAG Anschluss.

von Curby23523 N. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan U. schrieb:
> Der TDO Pin vom JTAG Anschluss.

JTAG ist wohl eher als Alternate Function vorkonfiguriert - was aber 
möglicherweise den selben Effekt hat. Habe ich nie berücksichtigt.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Nein, sowohl JTAG als auch SWD zählen nicht zu den alternativen 
Funktionen. Die kann man woanders separat deaktivieren und erst danach 
kann man die Pins als GPIO Pin oder mit alternativer Funktion nutzen.

von Curby23523 N. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Natürlich ist JTAG eine Alternate Function. Zumindest beim STM32F4.
1
Reset values:
2
• 0x0A800 0000 for port A
3
• 0x0000 0280 for port B
4
• 0x0000 0000 for other ports

Also binär sind die Modes höchstens mit 0b10 vordefiniert, was Alternate 
Function ist - und nicht Output. "AF0" ist in der Regel JTAG  / SWD, was 
passt da die AF Register alle mit "0" vorgeladen sind.

Wie soll ich denn JTAG / SWD sonst von den Pins runterkriegen? Man lernt 
hier ja nie aus.
1
To use the serial wire DP to release some GPIOs, the user software must change the GPIO
2
(PA15, PB3 and PB4) configuration mode in the GPIO_MODER register. This releases
3
PA15, PB3 and PB4 which now become available as GPIOs.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> Wie soll ich denn JTAG / SWD sonst von den Pins runterkriegen?

So:
SET_BIT(RCC->APB2ENR, RCC_APB2ENR_AFIOEN);
MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_DISABLE);

(beim STM32F1)

Und jetzt kommt der Witz: Solange AFIOEN noch nicht eingeschaltet ist, 
kann man JTAG und SWD nicht aus schalten.

: Bearbeitet durch User
von Curby23523 N. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ok, die F4 haben kein "AFIOEN" :). Und auch kein AFIO->MAPR - scheint 
hier simpler zu sein.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> Ok, die F4 haben kein "AFIOEN"

Gut so, denn tieferen Sinn dieses Bits habe ich bis heute nicht 
verstanden. Warum sollte ich global die alternativen Funktionen ein/aus 
schalten können, wenn ich ohnehin jede einzelne Alternative Funktion 
ein/aus schalten kann?

: Bearbeitet durch User
von Nop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan U. schrieb:
> Warum sollte ich global die alternativen Funktionen ein/aus
> schalten können, wenn ich ohnehin jede einzelne Alternative Funktion
> ein/aus schalten kann?

Damit Du das möglichst schnell machen kannst. Manchmal werden Controller 
ja auch für kritische Aufgaben eingesetzt.

von nix verstanden (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nop schrieb:
> Damit Du das möglichst schnell machen kannst. Manchmal werden Controller
> ja auch für kritische Aufgaben eingesetzt.

Was ist denn der Sinn dahinter, was will man damit erreichen?

von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe hier einen STM32F303K8T6, bei welchem die Pins PA15 und PB4 
beim Einschalten auf HIGH (wahrscheinlich Output push pull) liegen, 
wobei dadurch ein Transistor durchgeschaltet werden kann und auch an 
bleibt, wenn ich z.B den Rest-Pin auf LOW halte (StLink eingesteckt am 
SWD Interface, aber nicht USB).

http://www.st.com/content/ccc/resource/technical/document/datasheet/group3/38/c6/ca/d1/f7/d5/4e/30/DM00092070/files/DM00092070.pdf/jcr:content/translations/en.DM00092070.pdf

Auf diesen Pins liegen SYS_JTDI und SYS_NJTRST. Gibt es eine 
Möglichkeit, diese Pins schon vor dem Start-Up richtig zu konfigurieren?

: Bearbeitet durch User
von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
Bei den relativ neuen LPC84x habe ich gesehen das die ein FAIM haben, 
ein Fast Initialisation Memory das die Portkonfiguration enthält und 
schon beim PowerUp einstellt. Nutzt jetzt wahrscheinlich nix beim 
STM32F303K8T6 wenn der so ein Feature nicht hat, aber wenn man so etwas 
unbedingt haben möchte gibt es da mittlerweile Lösungen.

von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bert S. schrieb:
> Es müssten doch eigentlich standardmäßig alle GPIO's als
> Input definiert sein, oder? Habt ihr auch schon ein solches Verhalten
> beobachtet?

Ein solches Verhalten gibt ea bei vielen µC. Allerdings mit 
unterschiedlichen Auswirkungen. Deswegen ist der allererste Schritt beim 
Konzipieren eines neuen Projektes, daß man das zuständige Referenzmanual 
sich genau anschaut und dort das Resetverhalten der Pins nachliest, bei 
denen es eventuell kritisch sein könnte.

W.S.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Du kannst diese Pins nur nach dem Startup konfigurieren:
1
// Enable alternate functions
2
SET_BIT(RCC->APB2ENR, RCC_APB2ENR_AFIOEN);
3
    
4
// Disable both SWD and JTAG to free PA13, PA14, PA15, PB3 and PB4
5
MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_DISABLE); 
6
7
or:
8
9
// Disable JTAG only to free PA15, PB3* and PB4. SWD remains active
10
MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_JTAGDISABLE);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.