Hi ich verwende eine i2c verbindung am stm32F401Re board problemlos. Bei der Verwendung mit einem STM32F303K8 Board bekomme ich es irgendwie nicht hin. Das hat sicherlich mit den Solder bridges zu tun. Link: https://www.st.com/content/ccc/resource/technical/document/user_manual/e3/0e/88/05/e8/74/43/a0/DM00231744.pdf/files/DM00231744.pdf/jcr:content/translations/en.DM00231744.pdf Bei 6.10 Solder Bridges -> SB16 u. SB17. Leider check ich nicht was die damit meinen bzw. bekomme ich einfach nicht zu laufen. Jemand eine Ahnung?
Schau halt mal in den Schaltplan: SB16 und SB18 brücken PA6 mit PB6 (d.h. Pin A5 und D5) , bzw. PA5 mit PB7 (Pin A4 und D4). STM32F schrieb: > ich verwende eine i2c verbindung am stm32F401Re board problemlos. > Bei der Verwendung mit einem STM32F303K8 Board bekomme ich es irgendwie > nicht hin. Das hat sicherlich mit den Solder bridges zu tun. Vielleicht liegt es auch an der Mondphase
Hm die Mondphase sollte passen... Habe D5 und D4 mit cubemX zur i2c Schnittstelle definiert. Scl und sda an D5 und d6 angeschlossen aber nix passiert. Wie gesagt beim stm32f401 ist das klein Problem. Da gibts auch keine solder bridges...
STM32F schrieb: > Habe D5 und D4 mit cubemX zur i2c Schnittstelle definiert. Scl und sda > an D5 und d6 angeschlossen Wirklich? SB16 und SB18 sollten offen sein, da PB6 und PB7 direkt an D5 und D4 liegen.
"STM32 PB6 is connected to CN4 pin 7 for I2C SDA support on Arduino Nano A5. In such case STM32 PB6 does not support Arduino Nano D5 and PA6 must be configured as input floating." "STM32 PB7 is connected to CN4 pin 8 for I2C SCL support on Arduino Nano A4. In such case STM32 PB7 does not support Arduino Nano D4 and PA5 must be configured as input floating" Ich steh diesbezüglich irgendwie auf dem Schlauch... In der Werkseinstellung ist SB16 u. SB18 "ON", d.h SDA liegt an A5 und SCL an A4 an, richtig? PA5(A4) und PA6(A5) müssen als "input floating" konfiguiert werden. Heißt das als GPIO Digital-Input ohne Pull up/down? PB7(D4) und PB6(D5) sind als I2C1_SDA und I2C1_SCL zu konfiguieren, richtig? Angeschlossen werden die Buskabel dann an A5 und A4??? Danke! Cheers.
Heisst das, du willst nicht Ardu* kompatibel sein und steckst die Drähte direkt an das Board?
das Board muss nicht Arduino kompatibel sein. Ja, ich will die Buskabel direkt aufstecken.
Hänge doch mal die .ioc Datei von CubeMX an. SB16 und 18 können dann offen bleiben, sonst PA5 und 6 wie beschreiben als Input setzen. Die internen PullUps sind sicher zu groß für I2C, also noch externe verwenden.
Was meinst du mit offen bleiben? On oder Off? Anbei die .ioc Datei. Mit:
1 | if(HAL_I2C_IsDeviceReady(&hi2c1,0x32,2,10) == HAL_OK) |
2 | {
|
3 | HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3); |
4 | }
|
checke ich ob eine Verbindung besteht. 0x32 ist die ID vom Sensor. Hat beim STM32F401 funktioniert (LED ist an gegangen). Danke.
Das Erste was mir an deiner ioc auffällt, du hast SWD nicht gesetzt. Wie fütterst du deinen F303?
Da PA5 und 6 auf Eingang stehen, kannst du die Brücke lassen. Funktioniert denn ein einfaches LED Blinky Programm?
1 | ...
|
2 | while (1) |
3 | {
|
4 | |
5 | HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3); |
6 | HAL_Delay(500); |
7 | }
|
8 | ...
|
Ja.
Den SWD muss man in CubeMX nicht setzen. Funktioniert auch so problemlos. Macht kein unterschied. LED Blinkzeiten kann ich ändern nach belieben. SCL/SDA -> A5/A4, richtig?
Ohne SWD in CubeMX? Wusste ich nicht und kenne ich anders. Aber gut ... Wenn beide Brücken zu sind stimmt die Zuordnung SCL/SDA -> A5/A4
STM32F schrieb: > Den SWD muss man in CubeMX nicht setzen. Funktioniert auch so > problemlos. Macht kein unterschied. Das glaubst auch nur du....
ich muss wohl weiterhin mein F401RE Board benutzen. Mit dem F303K8 komm ich einfach nicht zurecht was i2c Verbindungen angeht.
Es gab mal Zeiten da wurden Fehler noch systmatisch gesucht. Heute scheint "im Nebel stochern" die angesagte Methode zu sein...
Hello, Please check with this configuration. You have to activate pull-up resistors on I2C pins. Also, you have to activate, in SYS, Debug--> Serial wire. And here, modify as follows: if(HAL_I2C_IsDeviceReady(&hi2c1,0x32<<1,2,10) == HAL_OK) { HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3); } Best regards L.E.: Don't forget to solder SB16 and SB18 to use I2C
:
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.