Moin, ich möchte gerne beim einem STM32F103 Controller nutzen um hiermit über den I2C-Bus mehrere Geräte zu betrieben. Voraussetzung ist, dass der I2C1 als Master und der I2C2 als Slave deklariert wird. Das liegt daran, dass der Controller selbst als Slave in einem Bus angeschlossen ist und auf Befehle von einem Master wartet. Bei einem Befehl soll dann über den anderen I2C-Bus der Controller als Master arbeiten und mehrere Sensoren ansprechen, dazu gehört auch ein BME680. Die Beiden I2C-Busse liegen an den Pins vom STM32 wie folgt an: SDA1 -> PB7 SCL1 -> PB6 SDA2 -> PB11 SCL2 ->PB10
Das Problem ist, dass keine der Vorhanden Libary’s im Zusammenhang mit I2C2 und dem BME680 funktioniert! 1.Möglichkeit mit „TwoWire“ (TwoWire myWire1 (1, I2C_FAST_MODE);) Fehlermeldung: Der Code hängt sich bei der Initialisierung vom BME auf 2.Möglichkeit mit „Wire“ und „Wire1“ (#include <Wire_slave.h>) Fehlermeldung: Der Code hängt sich bei der Initialisierung vom BME auf
Der Code selbst funktioniert fehlerfrei. Das heißt, wenn ich nur einen der jeweiligen I2C-Kanäle nutze kann ich den Sensor ansprechen und auslesen. Nur die Kombination aus beiden I2C-Kanälen funktioniert der Code nicht. Als Libary’s nutze ich die „Adafruit_BME680“. Eine weitere wäre die „BME680 von SV-Zahnshin“. Diese funktioniert aber von Grund auf nicht!
Hat jemand vielleicht eine Idee oder Tipp wie es möglich ist beim STM32 beide I2C-Kanäle zu nutzen (den einen als Slave, den Anderen als Master) und dabei einen BME680 an zu sprechen??? Ich würde schon fast darauf tippen, dass auch der BME280 oder BMP280 nicht geht.
Master --- BUS ----><--(Slave)###STM32F103###(Master)-->BME680...