Forum: Mikrocontroller und Digitale Elektronik STM32F303K8 I2C


von STM32F (Gast)


Lesenswert?

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?

von pegel (Gast)


Lesenswert?

Du meinst SB16 und SB18, oder?

von Christopher J. (christopher_j23)


Lesenswert?

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

von STM32F (Gast)


Lesenswert?

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...

von pegel (Gast)


Lesenswert?

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.

von STM32F (Gast)


Lesenswert?

"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.

von pegel (Gast)


Lesenswert?

Heisst das, du willst nicht Ardu* kompatibel sein und steckst die Drähte 
direkt an das Board?

von STM32F (Gast)


Lesenswert?

das Board muss nicht Arduino kompatibel sein. Ja, ich will die Buskabel 
direkt aufstecken.

von pegel (Gast)


Lesenswert?

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.

von STM32F (Gast)


Angehängte Dateien:

Lesenswert?

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.

von pegel (Gast)


Lesenswert?

offen bleiben -> keine Brücke

von pegel (Gast)


Lesenswert?

Das Erste was mir an deiner ioc auffällt, du hast SWD nicht gesetzt.
Wie fütterst du deinen F303?

von STM32F (Gast)


Lesenswert?

Über ST-Link Debugger (USB-Schnittstelle).
Wie mache ich die Brücke auf? Löten?

von pegel (Gast)


Lesenswert?

Da PA5 und 6 auf Eingang stehen, kannst du die Brücke lassen.

Funktioniert denn ein einfaches LED Blinky Programm?

von STM32F (Gast)


Lesenswert?

1
...
2
while (1)
3
  {
4
5
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3);
6
    HAL_Delay(500);
7
  }
8
...

Ja.

von pegel (Gast)


Lesenswert?

Aber was ist mit SWD?
Ändere zum Test mal die Blink Zeit und flashe neu.

von STM32F (Gast)


Lesenswert?

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?

von pegel (Gast)


Lesenswert?

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

von Harry L. (mysth)


Lesenswert?

STM32F schrieb:
> Den SWD muss man in CubeMX nicht setzen. Funktioniert auch so
> problemlos. Macht kein unterschied.

Das glaubst auch nur du....

von STM32F (Gast)


Lesenswert?

kauf dir ein nucleo board und probiers aus! mein gott ey...

von STM32F (Gast)


Lesenswert?

ich muss wohl weiterhin mein F401RE Board benutzen. Mit dem F303K8 komm 
ich einfach nicht zurecht was i2c Verbindungen angeht.

von temp (Gast)


Lesenswert?

Es gab mal Zeiten da wurden Fehler noch systmatisch gesucht. Heute 
scheint "im Nebel stochern" die angesagte Methode zu sein...

von Cristi P. (nico_2010)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.