Forum: Mikrocontroller und Digitale Elektronik Wozu dient das AFIOEN Bit beim STM32F1 ?


von Stefan F. (Gast)


Lesenswert?

Hallo,
bei STM32F1 gibt es das Bit AFIOEN. Irgendwie habe ich noch nicht 
verstanden, was genau durch dieses Bit eingeschaltet wird.

Ich habe im Referenzhandbuch gelesen, dass man damit den Takt für 
alternative Funktionen einschaltet.

Aber die seriellen Ports, PWM und die SWJ Schnittstelle funktionieren 
auch ohne das Bit zu setzen. Andererseits muss ich das Bit aber setzen, 
BEVOR ich JTAG oder SWD deaktivieren kann.

Ich muss irgend einen wichtigen Hinweis übersehen haben, nur welchen?

von Achim S. (Gast)


Lesenswert?

Stefan U. schrieb:
> Ich muss irgend einen wichtigen Hinweis übersehen haben, nur welchen?

vielleicht hilft das weiter:

To read/write the AFIO_EVCR, AFIO_MAPR and AFIO_EXTICRX registers, the 
AFIO clock should first be enabled.

Findet sich zu Beginn des Kapitels 9.4: Alternate Function IO Registers

Stefan U. schrieb:
> Andererseits muss ich das Bit aber setzen,
> BEVOR ich JTAG oder SWD deaktivieren kann.

Weil du dazu einen Zugriff auf AFIO_MAPR brauchst, um SWJ_CFG 
umzuschreiben (und der Zugriff geht nur, wenn die CLK dafür enabled 
ist).

Stefan U. schrieb:
> Aber die seriellen Ports, PWM und die SWJ Schnittstelle funktionieren
> auch ohne das Bit zu setzen.

Dann kommen die wohl auch ohne Zugriff auf AFIO_EVCR, AFIO_MAPR and 
AFIO_EXTICRX aus (z.B. gilt für SWJ_CFG: "The default state after reset 
is SWJ ON without trace").

von Stefan F. (Gast)


Lesenswert?

Das würde doch bedeuten, dass dieses Bit nicht wirklich den Takt für die 
alternativen I/O Funktionen aktiviert, sondern dass es den Zugriff auf 
die AFIO Register freischaltet.

Kann es sein, dass die Datenblätter+Referenzhandbuch von STM deutlich 
lückenhafter sind, als die von Atmel/Microchip? Je mehr ich damit 
arbeite, umso stärker wird dieses Gefühl bei mir.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Das steht schon richtig so im Manual. Beim STM32 muss man für alles was 
man nutzen möchte die Clock's aktivieren. Wenn die nicht aktiv sind, 
können die Änderungen nicht nach "Taktende" synchronisiert ausgeführt 
werden.
-> ist der Clock off, ist es so als wäre die Peripherie nicht verbaut 
und braucht auch kein Strom.

von Achim S. (Gast)


Lesenswert?

Stefan U. schrieb:
> Das würde doch bedeuten, dass dieses Bit nicht wirklich den Takt für die
> alternativen I/O Funktionen aktiviert, sondern dass es den Zugriff auf
> die AFIO Register freischaltet.

Ja, so liest es sich in der Note zu Beginn von Kapitel 9.4, und so würde 
es ja auch zu deiner Beobachtung passen. Ich selbst kanns leider nicht 
ausprobieren, ich habe kein passendes System zur Hand ;-)

Markus M. schrieb:
> -> ist der Clock off, ist es so als wäre die Peripherie nicht verbaut
> und braucht auch kein Strom.

Stimmt schon, aber die weitergehende Frage von Stefan ist, was genau zu 
der von AFIOEN betroffenen Peripherie zählt.

Ist z.B. "JTAG Teil der abgeschalteten Peripherie"? Oder ist in diesem 
Fall nur AFIO_EVCR, AFIO_MAPR and AFIO_EXTICRX die betroffene Peripherie 
(die man erstmal enablen muss, damit man JTAG disablen kann).

von Stefan F. (Gast)


Lesenswert?

> Die weitergehende Frage von Stefan ist, was genau zu
> der von AFIOEN betroffenen Peripherie zählt.

Genau.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Im Datasheet zum jeweiligen µC steht im Abschnitt "pin definitions" in 
der Spalte "Main function (atfter reset)" welche alternative Funktionen 
nach dem Reset aktiv sind. Darin sieht man dass JTAG und OSC aktiv ist.
Bei gesetztem ReadOut Protection jedoch kann das JTAG deaktiviert 
werden.

Wo das steht welche Peripherie nun genau das AFIOEN benötigt habe ich 
beim STM32F1 auch noch nicht gefunden. Das AFIOEN gibt es beim STM32F4 
nicht mehr, da war STM so schlau und bildet wohl das Signal selbst 
intern (anhand der aktivierten Clocks/AF-Funktionen).

Im Grunde aktiviert man das AFIOEN und gut ist. Ich habe mich daran auch 
noch nicht weiter gestört.
Will man Alternative Pinfunktionen nutzen -> AFIOEN setzen.

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.