Hallo liebe Community, ich erstelle aktuell mein erstes Projekt mit dem STM32. Vorher habe ich immer die Atmega`s genutzt, möchte mich aber weiterbilden. Dabei sind mir nun folgende 2 Fragen aufgefallen: 1: Konflikte mit I2C Ich habe diverse Pins mit diversen Funktionen belegt und im STM32-CubeIDE wird mir ein Konflikt mit einem der beiden genutzten I2C Schnittstellen angezeigt (siehe Anhang). Alle dort gezeigten "Konfliktbedingungen" sind so korrekt: - PB5 = Input - PB6 = output - PA14 = SWCLK - TIM2-CH2 = PWM Ich frage mich nun, wo ich diese Abhängigkeiten nachlesen kann. Weiterhin verschwinden alle Konfliktnachrichten, sobald ich nur den PB5 auf PB4 umlege. Alle anderen "Konfliktbelegungen" sind aber doch eigentlich weiterhin vorhanden, stören ihn dann aber scheinbar nicht mehr ? Aktuell ist das für mich noch eine Belegung nach "try and error" mit umlegen bis im CubeIde keine Konflikte mehr erscheinen, das kann ja aber nicht die Lösung sein. Kann mir jemand dieses Verhalten/Abhängigkeiten erklären ? 2: JTAG pins gelb Eine weitere Frage wäre noch die JTAG Schnittstelle. Rechts in der I/O Übersicht sind die pins noch gelb, muss ich die Schnittstelle noch irgendwo aktivieren? Ich frage, da die Timer-pins auch erst von gelb auf grün wechselten, nachdem ich den Timer konfiguriert hatte. Links (z.B. bei Connectivity) sehe ich allerdings kein JTAG. Vielen Dank mal wieder !!!
:
Bearbeitet durch User
Philipp L. schrieb: > Ich frage mich nun, wo ich diese Abhängigkeiten nachlesen kann. Du wirst begeistert sein, was du so alles im meist 1000-Seiten langen Datenblatt finden wirst. Oftmals werden Funktionsblöcke oder Anwendungsbereiche in Application-Notes ausgelagert und liefern dir noch mehr spannenden Lesestoff 😉
Beitrag #7316560 wurde von einem Moderator gelöscht.
Philipp L. schrieb: > Ich frage mich nun, wo ich diese Abhängigkeiten nachlesen kann. Du meinst sicher die alternative Funktion der Pinne, oder? Steht im Datasheet. Sehnse oben in den Bildchen zum STM32F4xx. Ich habe mich dabei mal an die Pins PB5 und PB6 gehalten. Philipp L. schrieb: > Eine weitere Frage wäre noch die JTAG Schnittstelle. Brauchst du den JTAG überhaupt?
:
Bearbeitet durch User
K. H. schrieb: > Du meinst sicher die alternative Funktion der Pinne, oder? Die Listen mit den alternativen Funktionen kenne ich. Ich meine die Abhängigkeiten. warum gibt es ein I2C Konflikt (die Fehlermeldung/Screenshot) aus meiner Frage mit: PB5 = Input PB6 = output PA14 = SWCLK TIM2-CH2 = PWM Was hat I2C auf PB7&PB8 mit den oberen von mir mit anderen genutzten Funktionen der anderen pins zu tun. Warum gibt es die beschriebene Konfliktmeldungen? Man darf scheinbar PB5 nicht mit einem Input belegen, wenn auf PB7&PB8 I2C liegt. Es muss doch irgendwo dokumentiert sein, was ich alles nicht belegen darf wenn auf PB7&PB8 I2C liegt. Uwe schrieb: > Du wirst begeistert sein, was du so alles im meist 1000-Seiten langen > Datenblatt finden wirst. Natürlich habe das im DB referenzierte "reference manual" RM0434 und DS11929. Ich finde diese Konfliktabhängigkeiten aber leider nicht. Das ist wie gesagt mein erstes STM32 Projekt und von den Atmegas kenne ich keine Pin-Konflikte.
Philipp L. schrieb: Zum SWD/JTAG: > Links (z.B. bei Connectivity) sehe ich allerdings kein JTAG. Schau mal unter SYS nach. Die Cube IDE erstellt standardmäßig Code, welcher SWD und JTAG deaktiviert. Wahrscheinlich willst du aber eine der beiden Schnittstellen aktiviert lassen, um dein Programm zu debuggen. Falls du unsicher bist, aktiviere nur SWD. Zum I2C: Philipp L. schrieb: > Man darf scheinbar PB5 nicht mit einem Input belegen, wenn auf PB7&PB8 > I2C liegt. Es muss doch irgendwo dokumentiert sein, was ich alles > nicht belegen darf wenn auf PB7&PB8 I2C liegt. > Ich frage mich nun, wo ich diese Abhängigkeiten nachlesen kann. Bei ST immer im Datasheet des Mikrocontrollers, welches man stets zusammen mit dem Reference Manual lesen muss. Eigentlich ist das Reference Manual die Haupt-Doku, aber im Datasheet stehen die spezifischen Details der unterschiedlichen Chips aus der jeweiligen Serie. Die elektrischen Daten, Anzahl der Pins und deren Mehrfach-Belegung variiert nämlich innerhalb der Serie. Dokumente zum Mikrocontroller: https://www.st.com/en/microcontrollers-microprocessors/stm32wb55vg.html#documentation Dokumente zum Modul: https://www.st.com/en/microcontrollers-microprocessors/stm32wb5mmg.html#documentation Auf beiden Seiten ist der Link zum jeweiligen Datasheet ganz oben links in rosa. Weitere Dokumente findest du weiter unten auf den Seiten. 2023-01-15_13-56.png ist ein Screenshot vom Datenblatt des Mikrocontrollers. Es zeigt die Pinbelegung der drei unterschiedlichen Gehäusegrößen. Du hast konkret den STM32WB55VGY, das ist die 100 Pin Version. Ich denke das ist die Tabelle, die du gesucht hast. Beim Verstehen der Dokumente von ST besteht die Kunst darin, die wichtigen Infos zu finden und miteinander zu kombinieren. Diesbezüglich sind die Dokumente von ST völlig anders strukturiert als die von Atmel. ST schreibt fast nichts zweimal hin und spart auch an Querverweisen. Beim Lesen von diesen Dokumenten benutze ich sehr oft die Volltextsuche. Schau dir in den Screenshots an, wie ich anhand der Volltextsuche zuerst im Datenblatt, dann weiter im Reference Manual, die Belegung von PB5 untersucht habe. PB5 hat die alternative Funktion I2C1_SMBA. SMBA sagt mir nichts, also schaue ich, was es dazu zu finden gibt. Offenbar hat SMBA mit einer optionalen Funktion von I2C1 zu tun, die du nicht verwendest, also ist PB5 in Ordnung (denke ich). Ähnlich geht es mir mit allen anderen Pins, die in der Fehlermeldung genannt werden. In der grauen Box mit der Fehlermeldung meckert er lauter Pins an, die unten in den "GPIO Settings" vom I2C1 gar nicht benutzt werden. Es ist mir nicht gelungen, heraus zu finden, wo diese Fehlermeldungen her kommen. > Ich finde diese Konfliktabhängigkeiten aber leider nicht. Ich auch nicht. Da es offenbar nicht dokumentiert ist, und ich solchen Sonderlocken bei STM32 bisher auch noch nicht begegnet bin, scheint es sich um einen Bug in der IDE zu handeln. Kannst du mal deine *.ioc Datei posten, damit ich dein Problem reproduzieren kann und damit ich alle relevanten Einstellungen sehen kann? Philipp L. schrieb: > von den Atmegas kenne ich keine Pin-Konflikte. Die gibt es da ebenso. Zum Beispiel kannst du den bei einem Arduino Nano/Uno Board die Pins PD0 und PD1 nicht als general purpose output benutzen, wenn der UART eingeschaltet ist. Nur hast du da keine IDE, die dir das so schön bunt in der Form anzeigt, wie es die Cube IDE tut. Im Arduino Umfeld nutzt man da eher die bunten Pin-Diagramme wie dieses: https://www.researchgate.net/profile/Mohammed-Therib/publication/312372376/figure/fig10/AS:450882367168521@1484510141868/Atmel-MCU-ATmega328-and-the-Arduino-pin-out.png
Philipp L. schrieb: > warum gibt es ein I2C Konflikt (die Fehlermeldung/Screenshot) aus meiner > Frage mit: > PB5 = Input ist, soweit ich das sehe, nicht nach außen geführt, weil der Pin sich einen Pin am Connector mit PB15 und PA9 teilt, wobei PB15 nach außen verbunden ist mit einer Lötbrücke (Unterseite, SB9 = close). Mit einer Lötbrücke müsstest du das ändern, s. Bildchen 2 oben. PB5 ist defaultmäßig nicht nach außen geführt und nur auf dem Board verbunden mit der blauen LED. Ich schätze, du hat mit CubeMX als Board das STM32W55 Nucleo Board angeklickt und damit weiß CubeMX durch das Layout vom Board, dass deine Konfiguration problematisch ist. PB5 wird daher wohl immer als Output angesehen, weil da eben die blaue User-LED angeschlossen ist. > PB6 = output ist defaultmäßig über Lötbrücke SB17 (close) nach außen geführt, sollte also kein Problem machen. Alternativ kann der Pin auch über die Lötbrücke SB16 (open) nach außen geführt werden. Dann müsste der Pin aber mit SB14 (close) von PA1 getrennt werden. > PA14 = SWCLK geht ohne Umwege an den Pinheader CN7.15. > TIM2-CH2 = PWM Ist das ein Pin oder eine Funktion des PA14? Weil im grauen Kasten "I2C Conflict with" steht zu PA14: > PA14 mapped with SYS_JTCK-SWCLK or/and TIM2 : Channel2 PWM Generation CH2 so lese ich das. Philipp L. schrieb: > Was hat I2C auf PB7&PB8 mit den oberen von mir mit anderen genutzten > Funktionen der anderen pins zu tun. > Warum gibt es die beschriebene Konfliktmeldungen? Kann ich so nix zu sagen. Es ist aber wichtig, wenn du das Nucleo-Board benutzt, dass du bei der Pinbelegung dir den Schaltplan dazu nimmst, s. PB5, LED <-> GPIO-Input, das passt nicht wirklich, selbiges, wenn du einen Portpin, der an einem Taster angeschlossen ist, als GPIO-Output konfigurierst. Name vom Schaltplan: en.MB1355-WB55RGV-C02_schematic.pdf (möglicherweise veraltet, was ...C02... angeht o. ä.)
:
Bearbeitet durch User
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.