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?
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").
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.
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.
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).
> Die weitergehende Frage von Stefan ist, was genau zu > der von AFIOEN betroffenen Peripherie zählt. Genau.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.